Ограничение значений поля при создании Data Type

При создании типов данных в SAP PI часто бывает нужно ограничить элемент данных по какому-либо правилу.
Правила устанавливаются через столбец Details в редакторе Data Type.
dt_details1

Ограничения устанавливаются при помощи пяти параметров:

Параметр Описание
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.
dt_details3

dt_details4


whiteSpace — интерпретация «пустых мест».
«Пустым местом» в XML считаются символы пробел, табуляция, новая строка, возврат каретки).
Можно использовать следующие значения:

preserve оставить все символы как есть
replace Заменить все «пустые места» на пробелы
collapse Заменить все «пустые места» на пробелы, убрать пробелы в начале и в конце, все последовательности пробелов сократить до одного

Да, в новых версиях редактора есть достаточно удобная опция — можно просмотреть все дополнительные параметры для отдельного поля структуры данных Data Type.
За это отвечает отдельная кнопка «Show Data Sheet»:
dt_details5

dt_details6

Успешной интеграции!
Ваш Pitroff

Поделиться:
Share on FacebookShare on VKShare on LinkedInTweet about this on TwitterShare on Google+Digg thisPin on PinterestShare on RedditShare on TumblrEmail this to someonePrint this page

4 thoughts on “Ограничение значений поля при создании Data Type

  1. Андрей Петин

    Подскажите, может ли внешняя система, подключающаяся к SAP PI, при передаче неверного значения параметра получить осмысленное сообщение об этом?

    К примеру, такая реальная ситуация: некоторый интерфейс SAP PI предоставлен как веб-сервис (через SOAP-канал), клиент веб-сервиса — система 1С. И они, например, отправят сообщение с неверным форматом какого-либо поля (с нарушением enumeration, длины, шаблона и т.д.). Будет ли в SOAP-ответе информация о том, в каком поле ошибка?

    Вообще как и на каком этапе применяется соответствие сообщения этим ограничениям?

    Reply
    1. pitroff.ru Post author

      Добрый день, Андрей!

      По логике интеграционной шины, сообщения об ошибке в данных должна отсылать конечная система, проверка должна быть предусмотрена в ней.
      Естественно, если у нас присутствует мэппинг — то понять, где в исходной структуре ошибка будет сложнее.

      PI также может проверять данные с помощью XML Validation или может вернуться ошибка мэппинга — но сообщение об ошибке будет техническое, на его текст повлиять нельзя.
      Из части сообщений можно понять, какое поле вызвало ошибку.

      Reply
      1. Андрей Петин

        В версии SAP PI 7.0 (к сожалению, на работе доступна только такая версия) пробовал задавать ограничение для поля в виде enumeration, передал значение не из заданного списка, и никакой ошибки на уровне PI не возникло.

        Валидация вроде бы в 7.0 не доступна.

        Получается, что эти ограничения на уровне типов данных PI — это просто некая описательная вещь, сама по себе не влияющая на обработку сообщений?

        Reply

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *