Итак, продолжаем говорить про выражения в Siebel и погружаемся глубже.

Если строить выражения в Siebel Tools, например калькулируемое поле, то это предстоит делать в таком редкаторе:

exp

Давайте детально пройдемся по всему спектру предоставленных в этом редакторе возможностей.

Кнопки

Как мы видим, тут есть набор кнопок, который на самом деле предназначен исключительно для удобства. Дело в том, что при нажатии на кнопку в редактируемом окне будет напечатано то, что написано на кнопке. Все это можно просто ввести с клавиатуры. Пройдемся по каждой кнопке

  • AND — логический оператор конъюнкции. Ребята! Если Вы не знаете, что такое конъюнкция, то обязательно почитайте о ней в Википедии и не только о ней, а вообще о логических операциях.
  • OR — логический оператор дизъюнкции. Опять же смотрите Википедию.
  • XOR — логический оператор побитовой дизъюнкции
  • NOT — отрицание. Если у нас есть выражение, которое истина, то применив этот оператор, получится ложь.
  • (…) — просто скобочки. Скобочки используются для задания нужного приоритета операций
  • LIKE — этот лайк похож на лайк из SQL по принципу. Может использоваться в выражениях поиска. При этом можно искать не строгое соответствие, а частичное, заменяя части выражений символом * (всегда так ищем в Siebel).
  • IS —  это просто сцепка слов, например для:
  • NULL — специальный символ, означающий, что значение не определено. С ним и используют IS. Например: IS NULL или IS NOT NULL
  • IIf — это уже интересней. Это функция — условный оператор, имеющая определенный синтаксис. После нее идут скобки. в которых есть три аргумента, разделенные запятой. Первый аргумент — выражение, которое может быть истинно или ложно. Второе — значение, возвращаемое оператором, если первый аргумент — истина. Третье — значение, возвращаемое оператором, если первый аргумент — ложь.
  • IfNull — это другая функция. В ней в скобках содержится два аргумента — два выражения. Функция возвращает значение первого выражения, если оно не равно NULL, а если оно равно NULL, то возвращается значение второго выражения.
  • «+» — может интерпретироваться как оператор сложения, а может и как конкатенация, в зависимости от типа данных операндов
  • «-» — вычитание
  • «*» — умножение
  • «/» — деление
  • MOD — деление по модулю
  • ^ — возведение в степень
  • < — сравнение меньше
  • > — сравнение больше
  • <> — сравнение не равно
  • = — сравнение равно

Итак, мы прошлись по кнопкам, теперь пройдемся по столбцам, расположенным ниже. Первый столбец — категории. В зависимости от того, какую категорию мы выбираем, у нас появляются те или иные подкатегории. И уже от выбранной подкатегории отображаются те или иные элементы. Пройдемся по каждой категории.

BC Fields

В принципе тут и объяснять нечего. В выражениях можно оперировать полями бекущего БК. В подкатегориях идет подразделения на все поля, только калькулируемые, только multi value поля, только single value поля. В элементах выбирается конкретное поле. Если по элементу щелкнуть два раза мышкой, то поле будет добавлено в выражение, причем уже обрамленное в квадратные скобки (именно скобки говорят о том, что это поле БК). Зная только это уже можно написать простейшее выражение для калькулируемого поля. Представим, что мы работаем с БК Contact и хотим одним полем иметь имя и отчество контакта. Тогда наше выражение будет выглядеть так: [First Name] + » » + [Middle Name]. В этом выражении мы используем два поля, два раза оператор конкатенации и строку-пробел, чтобы разделить имя и отчество.

functions

Это функции, которые можно использовать в выражениях. Тут уже стоит детально рассмотреть подкатегории. Conditional содержит уже рассмотренные функции IIf и IfNull, для которых созданы специально кнопки для оперативного доступа видимо потому, что они часто используются. Далее идет подкатегория Date/Time, которая содержит набор функций для работы со временем. Если навести курсором на конкретный элемент (в данном случае функцию), то можно получить ее описаниеexp2

Далее идет подкатегория Invocation, которая содержит всего один элемент — InvokeServiceMethod. Эта функция позволяет вызвать метод бизнес сервиса. Синтаксис ее вызова можно получить также наведя на нее курсором и прочитав подсказку. Подкатегория LookUp содержит 20 элементов, каждый из которых является полезной функцией. Например функция LookupValue позволяет быстро получить значение из LOV. LoginName позволяет получить логин текущего пользователя, работающего в системе. Также тут есть ряд других функций, которые предлагаю просмотреть самостоятельно. Далее идет подкатегория Math. В ней всего 4 функции и о каждой хочется рассказать отдельно.

  • Count — это фукнция для multi value полей. Она возвращает количество записей в MV поле, соответствующих записи текущего БК.
  • RowIdToRowIdNum — это функция, которая конвертирует суррогатный сибелевый row_id (например, 3-3ITZ-FNIL) в чисто числовое представление (убирает буквы). Порой это реально используется.
  • Sum — это опять функция только для multi value полей. Она суммирует значения всех записей в MV поле, соответсвующих записи текущего БК.
  • ToChar — конвертирует число в символы в специально заданном формате.

Profile — расскажу про эту подкатегорию чуть ниже в разделе Profile Attributes. String — подкатегория с фукнциями для работы со строками. Тут всего четыре функции, которые очень просты: поиск подстроки в строке, отрезание части строки слева, отрезание части строки справа и получение длины строки.

keywords

Содержит всего одну подкатегорию и всего один элемент EXISTS. Это ключевое слово предназначено опять же для multi value полей. Оно может применяться в выражениях поиска и его суть примерно такова: отобрать те записи, у которых для MV поля среди значений существует некое конкретное значение. Наиболее полно об этом ключевом поле советую почитать в букшелфе

Operators

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

PROFILE Attributes

Это довольно интересная категория, которая включает всего одну подкатегорию, зато очень много элементов. А элементы — это атрибуты профиля, о которых уже была отдельная статья в этом блоге. Могу только добавить, что атрибуты профиля можно использовать в выражениях, но есть один нюанс. Если просто щелкнуть по элементу (конкретному атрибуту), то его название будет добавлено в выражение, но такое выражение не будет валидным. Для корректного использования профайл атрибута нужно его получать через функцию из категории Profile (чуть выше я обещал об этом рассказать. Вот и рассказываю) под названием GetProfileAttr. Как аргумент этой функции и нужно использовать профайл атрибут. Тогда его значение будет высчитано и использовано в созданном выражении.

Пожалуй это все, что можно рассказать о выражениях в Siebel. Глубже их понять можно только на практике. Еще один маленький P.S. В конструкторе выражений есть кнопка «Validate», которая будет корректно работать, если поставить галочку «Show Errors». При проставлении галочки внизу появится дополнительное окошко для вывода ошибок. При нажатии на Validate будет проходить проверка синтаксиса выражения и если в нем будут найдены ошибки, то они будут выведены в нижнее окошко. Если ошибок нет, то ничего не выведется и это будет свидетельствовать о том, что Вы красава!