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

Поддерживается валидация следующих типов сообщений: 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}
}