Модуль в этой статье: Инструменты
Инструменты payload для SAP CPI: сравнение, конвертация и генерация тестовых данных в браузере
Сравнивайте два payload, конвертируйте XML, JSON, YAML и CSV по правилам конвертеров SAP, генерируйте тестовые payload с ошибками и вставляйте сниппеты Groovy — офлайн, рядом с дизайнером iFlow.
Половина работы над iFlow в SAP Cloud Integration (SAP CPI) происходит вокруг payload: два сообщения, которые должны совпадать, но не совпадают; тело в JSON, которое получатель хочет видеть в XML; набор тестовых сообщений для обработки ошибок; строка на Groovy, которую вы пишете каждую неделю и никак не запомните. Обычно всё это заканчивается текстовым редактором, онлайн-конвертером и собственным скриптом.
Toolbox от Kitegra собирает эти задачи в браузере, рядом с дизайнером iFlow: сравнение payload, конвертер форматов, генератор тестовых payload, сниппеты Groovy со шпаргалкой и HTTP Runner. Кроме запросов, которые вы отправляете через HTTP Runner, всё работает офлайн. То, что вы вставили, остаётся на странице и никогда не сохраняется и не отправляется.
Где найти Toolbox
Откройте всплывающее окно расширения и выберите «Инструменты». Список Toolbox открывает каждый инструмент в отдельной вкладке: «Сравнение payload», «Конвертер форматов», «Генератор тестовых payload», «Сниппеты и шпаргалка», HTTP Runner и iFlow Docs. В iFlow меню блока Kitegra на панели инструментов схемы также открывает «Сниппеты» и «Заметки» как панели на странице.
Рядом с каждым элементом управления есть маленький значок (i), который объясняет, что он делает. Toolbox не учитывает iFlow в лимите вашего тарифа.
Сравнение payload
Вставьте два payload, загрузите их из файлов или перетащите на страницу — и различия будут отмечены построчно. «Назад» и «Далее» переходят от одного различия к другому, а счётчик показывает, сколько их всего.
- Игнорировать пробелы: строки, которые отличаются только пробелами, табуляцией или отступами, считаются одинаковыми.
- Нормализовать XML: сортирует атрибуты, игнорирует префиксы пространств имён и форматирует обе стороны, так что остаются только настоящие изменения.
- Нормализовать JSON: сортирует ключи и форматирует.
- Только различия: скрывает одинаковые строки и показывает на их месте, сколько строк скрыто.
- Поменять A и B местами: то, что показывалось как добавленное, показывается как удалённое.
Payload, который не является корректным XML или валидным JSON, всё равно сравнивается — как текст. В Message Monitor у просмотрщика payload трассированного шага есть кнопка Сравнить со следующим шагом: она открывает эту страницу с телом до и после этого шага. См. пошаговую трассировку сообщения.
Конвертер форматов
Вставьте XML, JSON, YAML, CSV или любой текст либо загрузите файл. Формат определяется по содержимому, и предлагаются только подходящие преобразования:
- XML в JSON и JSON в XML по правилам собственных конвертеров SAP: члены
@name— это атрибуты,$— текст элемента, а массив повторяет свой элемент. Параметры те же, что вы задаёте в iFlow: «Добавить корневой элемент XML», «Без корневого элемента JSON» и элементы, которые всегда записываются как массивы. - CSV в JSON или XML и обратно: разделитель определяется автоматически или выбирается вручную, есть строка заголовков и имя элемента строки.
- YAML в JSON и JSON в YAML.
- XSD, выведенная из XML, и пример XML по XSD.
- Форматирование и минификация для XML и JSON.
- Кодирование и декодирование Base64 и URL; экранирование и снятие экранирования для строк XML, JSON и Groovy.
Сделать вводом возвращает результат в поле ввода, чтобы его можно было преобразовать ещё раз. Рядом с «Преобразовать» есть ещё три вкладки:
- Проверить убеждается, что ввод корректен, и перечисляет каждую проблему с номером строки и столбца. Если указать XSD, проверяются также элементы XML, их порядок и количество, атрибуты и простые типы. Это облегчённая проверка: пространства имён, import, include, группы подстановки и ключи не проверяются.
- Найти и заменить — с регулярными выражениями JavaScript и их группами.
- Пакет одинаково преобразует несколько файлов и скачивает результаты одним ZIP. Файл, который не удалось преобразовать, пропускается и попадает в список.
Генератор тестовых payload
Обработку ошибок в iFlow тестируют меньше всего, потому что ни у кого нет ошибочных сообщений. Генератор создаёт их из одного реального образца.
- Вставьте или загрузите одно реальное сообщение: XML, JSON или CSV со строкой заголовков.
- Проверьте таблицу полей. Тип каждого поля угадывается по значению: текст, целое число, десятичное число, логическое значение, дата, дата и время, e-mail, валюта, страна, UUID или null.
- Выберите правило для каждого поля: «Оставить» значение образца, «Случайное того же типа», «Последовательность» или «Выбор из списка» значений.
- Укажите, сколько payload создать (до 1000), и долю payload с ошибкой.
- Выберите виды ошибок и нажмите «Сгенерировать».
Ошибки — те, из-за которых получатели отклоняют сообщения: отсутствует обязательное поле, пустое поле, неверный тип, недопустимые дата, e-mail, валюта или страна, отрицательное количество, неверное пространство имён, повреждённый XML, JSON или CSV, повторяющийся ID, лишнее поле и значение null. В каждом ошибочном payload ровно одна ошибка.
Один и тот же образец, правила и сид всегда дают одни и те же payload, поэтому тест можно повторить на тех же данных. Скачать ZIP даёт по одному файлу на payload и manifest.json, где для каждого файла указаны ошибка и изменённое поле. Скачать одним файлом записывает JSON Lines либо XML и CSV, разделённые пустой строкой. Сохранить как набор данных для Runner передаёт набор в HTTP Runner, который может отправить каждый payload в ваш iFlow и показать, какие ответы пришли так, как ожидалось.
Сниппеты Groovy и шпаргалка
На вкладке «Сниппеты» собраны 32 шаблона Groovy для скриптов Cloud Integration. Каждый написан для вставки внутрь processData(Message message), с полными именами классов, так что import не нужен. Они охватывают чтение и установку тела, заголовков и свойств обмена, потоковую обработку большого тела, XmlSlurper, XmlParser и MarkupBuilder, безопасный разбор XML с защитой от XXE, JsonSlurper и JsonBuilder, значения для поиска в мониторинге, вложения в журнале сообщения, завершение с понятной ошибкой, HTTP-ошибку в подпроцессе исключений, учётные данные из Secure Store, поиск в Value Mapping и Partner Directory.
Ищите их по имени или тегу. Если скрипт открыт в дизайнере в режиме редактирования, Вставить вводит сниппет в позицию курсора; иначе скопируйте его. Добавить свои хранит до 20 ваших сниппетов, которые синхронизируются с аккаунтом Kitegra, когда вы вошли. Не храните в них пароли и ключи.
На вкладке «Шпаргалка» собрано то, что вы ищете каждую неделю: операторы Simple, шаблоны дат Java с примерами, функции XPath 1.0, которые выполняются на примере XML, и ссылки на документацию SAP и Apache Camel. Щелчок по любому примеру копирует его. Сами выражения разобраны в статье Выражения Camel Simple в SAP CPI.
Чтобы прочитать скрипты, которые уже есть в iFlow, используйте «Объяснение скриптов» в iFlow Docs. Для каждого скрипта оно показывает назначение, что он читает, что задаёт или меняет, основную логику, используемые API SAP и риски.
HTTP Runner
HTTP Runner вызывает HTTPS-endpoints вашего iFlow с OAuth по сервисному ключу Process Integration Runtime, хранит запросы в коллекциях и проверяет ответы. В «Сведениях об iFlow» каждый endpoint можно скопировать как cURL или открыть в Runner. Полное описание — в статье тестирование HTTPS iFlow с сервисным ключом.
Что хранится и что входит в ваш тариф
Сравнение, конвертер, генератор и шпаргалка работают на странице и ничего не хранят. Ваши собственные сниппеты и коллекции HTTP Runner без значений авторизации и секретных переменных синхронизируются с аккаунтом Kitegra, когда вы вошли.
Офлайн-инструменты есть на всех тарифах. HTTP Runner доступен в ограниченном объёме на Free и Starter и полностью — на Pro и командных тарифах. Пока Kitegra запускается, все инструменты открыты для всех, кто вошёл в аккаунт, в том числе на тарифе Free. Сравните тарифы.
Попробуйте в следующем iFlow
Узнайте, что Kitegra добавляет к дизайнеру SAP Integration Suite, или посмотрите всё, что умеет Toolbox.
Частые вопросы
Отправляются ли куда-нибудь мои payload?
Нет. Сравнение, конвертер, генератор и шпаргалка работают на странице браузера. То, что вы вставляете или загружаете, не сохраняется и не отправляется.
Даёт ли конвертер тот же результат, что и конвертеры SAP?
Он следует тем же правилам и параметрам, что и конвертеры SAP JSON to XML и XML to JSON: атрибуты, текст элемента, массивы, добавленный корневой элемент и подавленный корень JSON. Если результат должен быть точным, запустите iFlow.
Можно ли повторить сгенерированный тестовый набор?
Да. Один и тот же образец, правила и сид всегда дают одни и те же payload. Если изменить ошибки, значения останутся прежними.
Как вставить сниппет в скрипт Groovy?
Откройте скрипт в дизайнере в режиме редактирования, поставьте курсор в нужное место и нажмите «Вставить» у сниппета. Затем сохраните iFlow самостоятельно.
Учитывает ли Toolbox iFlow?
Нет. iFlow учитывают только Helper, Message Monitor, iFlow Inspector и iFlow Docs.