XmlTransformer#

Действие XmlTransformer предназначено для изменения тела Xml-сообщения.

На текущий момент возможно только удаление из тела Xml-сообщения элементов, не прошедших валидацию.

Параметры:

Название

Обязательность

Допустимые значения

Описание

elements_to_remove

+

forbidden_in_schema

Обязательный параметр, содержащий в себе перечень элементов для удаления. На текущий момент поддерживается только значение forbidden_in_schema.

formatted_output

-

true/false

Необязательный параметр, определяющий необходимость форматирования сообщения после преобразования.

fragment

-

true/false

Необязательный параметр, определяющий является ли данное сообщение фрагментом.

validation_schema

+

Элемент вида {type: file, path: путь}

Обязательный параметр, описывающий относительный путь к схеме валидации от каталога ресурсов профиля, задается в виде: {type: file, path: путь}

Рассмотрим пример:

system:
  optional:
    underscores_in_headers: true
    log_level: debug
    # объявление переменной $result_body, в которой будет содержаться значение тела оригинального запроса
    # (в случае, когда удаление элементов не требуется) и значение тела запроса без запрещенных элементов
    # (в случае, если какие-либо элементы были удалены из тела запроса)
    maps:
      - src_var: $clj_trimmed_body
        dst_var: $result_body
        volatile: true
        # по дефолту берем значение из переменной $clj_trimmed_body, а если она пустая, то из переменной $request_body
        mapping:
          - src_val: ''
            dst_val: $request_body
        default: $clj_trimmed_body
.......................
service_http_proxy:
- id: xmlTransformer 
  ............
  chains:
    request_chains:
      - actions:
        - action: XmlTransformer
          params:
            validation_schema: {type: file, path: schemes/xsd/XMLTRANSFORMER/soapenvelope.xsd}
            elements_to_remove: forbidden_in_schema
          conditions:
            - var: $request_method
              operator: 'in'
              val: POST
          actions:
            - action: XsdValidation
              params:
                validation_schema: {type: file, path: schemes/xsd/XMLTRANSFORMER/soapenvelope.xsd}
        message: $clj_request_body
  optional:
      # указываем из какой переменной брать тело запроса для его последующей передачи на backend
      # ранее в эту переменную мы поместили тело запроса после удаления из него запрещенных элементов
      proxy_set_body: $result_body

В приведенном примере осуществляется удаление запрещенных элементов из запроса, не соответствующих схеме.

Заполняемые переменные

По результатам своего выполнения, действие XmlTransformer может заполнять следующие переменные:

  • clj_trimmed_body - тело сообщения после удаления из него запрещенных элементов;

  • clj_validation_error_code - код ошибки;

  • clj_validation_error_description - расшифровка кода ошибки.