Валидация сообщений по схеме#

Поддерживается валидация следующих типов сообщений: JSON, XML и AVRO.

Шаг предназначен для проверки входящих/исходящих сообщений на соответствие указанных схем, либо форматов.

JSON#

Документация#

Пример#

Пример JSON-валидации входящего и исходящего сообщения (in=out)

{
  flow: {
    name: "JobName"
    source: ${source}
  }

  source: {
    name: "testInput"
    type: "test"
    topic: "input"
    config: ${test} # описан в предыдущем блоке test
    destination: ${transformStep}
  }

  validator: {
    name: "Json validator"
    type: "dsl"
    dsl: {
      path: "AsIs.tr"
    }
    format: {
      input: {
        type: "json",
        schema: [
        {
          source: "file"
          path: "testSchema/json/first-schema.json"
        },
        //...
        ]
      }
      output: {
        type: "json",
        schema: [
        {
          source: "file"
          path: "testSchema/json/first-schema.json"
        },
        //...
        ]
      }
    }
    destination: ${destination}

    destination: {
      name: "output"
        type: "destination"
        topic: "output"
        config: ${defaults.kafka}
    }
  }
}

XSD#

Документация#

Пример#

Пример XSD-валидации входящего и исходящего сообщения (in=out)

validator: {
  name: "XML validator"
  type: "dsl"
  dsl: {
    path: "AsIs.tr"
  }
  format: {
    input: {
    type: "xml",
    schema: [
    {
      source: "file"
      path: "testSchema/xml/main.xsd"
    },
    //...
    ]
    }
    output: {
      type: "xml",
      schema: [
      {
        source: "file"
        path: "testSchema/xml/main.xsd"
      },
      //...
      ]
    }
  }
  destination: ${output}
}

AVRO#

Поддерживается работа с многофайловыми схемами валидации.

Документация#

Пример:

Пример AVRO-валидации входящего и исходящего сообщения (in=out):

transformStep: {
  name: "transformation"
  type: "dsl"
  format: {
    input: json
    output: {
      type: "avro"
      schema: [{
        path: "avro/ValidTest.avsc"
      }]
    }
  }
  dsl: {
    path: "AsIs.tr"
  }
  destination: ${destination}
}

Валидация сообщений по схеме в формате Base64#

При валидации входящего и исходящего сообщения можно использовать схемы в формате Base64. Схемы указываются закодированной строкой в поле, которое может быть либо path, либо value.

Поле path переименовано в value (предусмотрена возможность работы с полем path для сохранения обратной совместимости для значений поля «source»: «classpath» и «file»).

Пример блока трансформации в конфигурации:

validator: {
    name: "Base64 validator"
    type: "dsl"
    dsl: {
      source: "base64"
      value: "b3V0LmV2ZW50ID0gaW4uZXZlbnQK"
    }
    format: {
      input: {
        type: "json"
        schema: [{
            source: "base64"
            value: "eyJ0eXBlIjogIm9iamVjdCIsInByb3BlcnRpZXMiOiB7InRpdGxlIjogeyJ0eXBlIjogInN0cmluZyJ9fX0="
        },
        ...]
      }
      output: {
        type: "avro"
        schema: [
          {
            source: "base64"
            value: "eyJ0eXBlIjogIm9iamVjdCIsInByb3BlcnRpZXMiOiB7InRpdGxlIjogeyJ0eXBlIjogInN0cmluZyJ9fX0="
          },
          ...
        ]
      }
    }
    destination: ${output}
}