Дерево страниц
Skip to end of metadata
Go to start of metadata

Разбор и хранение выражений на языке DOEL обеспечиваются классом DoelExpression.

Выражения на DOEL применяются к доменным объектам и позволяют получить поля из них или связанных с ними доменных объектов, а также сами связанные объекты. Простейшим DOEL-выражением является просто имя поля, в таком случае значением выражения становится значение поля исходного доменного объекта. Однако, если это поле является связью (reference, см. {@link ru.intertrust.cm.core.config.ReferenceFieldConfig}), то значением становится сам связанный объект, который, в свою очередь, может быть использован для извлечения его полей (через точку). Например, для объекта "Персона" можно получить имя руководителя его подразделения:

Department.Head.Name

Также возможно извлечение дочерних или просто связанных объектов, хранящих ссылки на исходный внутри себя.
Для этого используется конструкция тип дочернего объекта^имя поля связи. Например, так можно получить имена всех исполнителей поручений по документу:

Commission^Document.Assignee^Commission.Name

Звёздочка, указанная после имени поля, означает повторный переход по связи, причём он может выполняться неограниченное число раз. Остальная часть выражения будет вычисляться для всех объектов, полученных на каждом шаге такого перехода. Например, если у поручения могут быть дочерние поручения, образующие иерархию неизвестной глубины, исполнители всех дочерних поручений могут быть получены таким выражением:

Commission^Parent*.Assignee^Commission.Name

Корректность DOEL-выражения (существование указанных типов объектов и полей в соответствующих типах) проверяется в момент загрузки конфигурации. Его вычисление никогда не может привести к ошибке. Если на каком-либо этапе связанные доменные объекты отсутствуют, то результатом вычисления становится пустой набор объектов.

:func(arg1,arg2,...)

Вызов функции может быть добавлен после любого элемента DOEL-выражения. Аргументы необязательны, их число (и семантика) зависит от конкретной функции; некоторые функции могут поддерживать переменное число параметров. Строковые аргументы могут заключаться в кавычки.

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

Имя функции используется для выбора класса, содержащего её реализацию.

Статус

ГОТОВО

Раздел

DoEL