При создании типов данных в SAP PI часто бывает нужно ограничить элемент данных по какому-либо правилу.
Правила устанавливаются через столбец Details в редакторе Data Type.
Ограничения устанавливаются при помощи пяти параметров:
Параметр | Описание |
---|---|
minLength | Минимальная длина значения в поле |
maxLength | Максимальная длина значения в поле |
pattern | Маска значения в поле |
enumeration | Список фиксированных значений поля |
whiteSpace | Обработка пробелов в поле |
Ограничения значений поля основаны на синтаксисе XSD-схем языка XML.
С длиной значения все понятно – устанавливаем требуемое минимальное и максимальное значения в соответствующих полях. Возможно указать только одно из значений. Если необходимо поле фиксированной длины – в оба поля устанавливается одинаковое значение.
Pattern – маска значения, устанавливается при помощи специальных выражений.
Базовый синтаксис:
. | любой символ |
\d | цифра |
\D | не цифра |
\s | пустое место (включая символы пробел, табуляция, новая строка, возврат каретки); |
\S | любой символ, кроме пустого места |
x* | для 0 или более повторений символа x |
(xy)* | для 0 или более повторений последовательности символов xy |
x? | 0 или 1 символ x |
(xy)? | 0 или одна последовательность символов xy |
x+ | один или более символов x |
(xy)+ | одна или более последовательность символов xy |
[abc] | один (любой) символ из группы (a, b, c) |
[0–9] | одно из значений в диапазоне от 0 до 9 |
A|B | A или B |
x{5} | строго пять символов x подряд |
x{5,} | как минимум пять символов x подряд |
x{5,8} | как минимум пять и максимум восемь символов x подряд |
(xyz){2} | строго две последовательности xyz подряд |
То есть если поле должно принимать только цифровые значения – задаем \d*, если символьные нецифровые – \D* и т.д.
enumeration – фиксированные значения.
Задаются в поле простым перечислением через запятую либо пробел.
Правильность внесенных значений можно проверить на вкладке XSD.
whiteSpace – интерпретация “пустых мест”.
“Пустым местом” в XML считаются символы пробел, табуляция, новая строка, возврат каретки).
Можно использовать следующие значения:
preserve | оставить все символы как есть |
replace | Заменить все “пустые места” на пробелы |
collapse | Заменить все “пустые места” на пробелы, убрать пробелы в начале и в конце, все последовательности пробелов сократить до одного |
Да, в новых версиях редактора есть достаточно удобная опция – можно просмотреть все дополнительные параметры для отдельного поля структуры данных Data Type.
За это отвечает отдельная кнопка “Show Data Sheet”:
Успешной интеграции!
Ваш Pitroff
Подскажите, может ли внешняя система, подключающаяся к SAP PI, при передаче неверного значения параметра получить осмысленное сообщение об этом?
К примеру, такая реальная ситуация: некоторый интерфейс SAP PI предоставлен как веб-сервис (через SOAP-канал), клиент веб-сервиса – система 1С. И они, например, отправят сообщение с неверным форматом какого-либо поля (с нарушением enumeration, длины, шаблона и т.д.). Будет ли в SOAP-ответе информация о том, в каком поле ошибка?
Вообще как и на каком этапе применяется соответствие сообщения этим ограничениям?
Т.е. проверяется соответствие
Добрый день, Андрей!
По логике интеграционной шины, сообщения об ошибке в данных должна отсылать конечная система, проверка должна быть предусмотрена в ней.
Естественно, если у нас присутствует мэппинг – то понять, где в исходной структуре ошибка будет сложнее.
PI также может проверять данные с помощью XML Validation или может вернуться ошибка мэппинга – но сообщение об ошибке будет техническое, на его текст повлиять нельзя.
Из части сообщений можно понять, какое поле вызвало ошибку.
В версии SAP PI 7.0 (к сожалению, на работе доступна только такая версия) пробовал задавать ограничение для поля в виде enumeration, передал значение не из заданного списка, и никакой ошибки на уровне PI не возникло.
Валидация вроде бы в 7.0 не доступна.
Получается, что эти ограничения на уровне типов данных PI – это просто некая описательная вещь, сама по себе не влияющая на обработку сообщений?