Литеральное выражение решения DMN

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

Литеральное выражение решения

Литеральное выражение решения представляет логику решения, которая может быть изображена как выражение в DMN 1.3. Оно состоит из литерального выражения и переменной.

Литеральное выражение решения представлено элементом literalExpression внутри XML-элемента decision.

<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" id="definitions" name="definitions" namespace="http://camunda.org/schema/1.0/dmn">
  <decision id="season" name="Season">
    <variable name="season" typeRef="string" />
    <literalExpression>
      <text>calendar.getSeason(date)</text>
    </literalExpression>
  </decision>
</definitions>

Имя решения

Имя решения

Имя описывает решение, для которого литеральное выражение предоставляет логику решения. Оно задаётся в атрибуте name элемента decision.

<decision id="season" name="Season">
    <!-- ... -->
</decision>

Идентификатор решения

Идентификатор решения

Идентификатор — это технический идентификатор решения. Он задаётся в атрибуте id элемента decision.

Каждое решение должно иметь уникальный идентификатор при развёртывании в Camunda 7. Движок использует этот идентификатор в качестве ключа решения развёрнутого DecisionDefinition.

<decision id="season" name="Season">
    <!-- ... -->
</decision>

Литеральное выражение

Литеральное выражение определяет, как генерируется значение решения. Это выражение, которое будет вычислено движком DMN. Оно может использоваться для выполнения сложного вычисления, для вызова bean-компонента, предоставляющего логику решения, или для объединения выходных значений требуемых решений.

Выражение задаётся внутри элемента text, который является дочерним по отношению к XML-элементу literalExpression.

<literalExpression>
  <text>calendar.getSeason(date)</text>
</literalExpression>

Язык литерального выражения

Язык выражения для литерального выражения можно указать с помощью атрибута expressionLanguage XML-элемента literalExpression. Поддерживаемые языки выражений перечислены в руководстве пользователя.

<literalExpression expressionLanguage="groovy">
  <text>calendar.getSeason(date)</text>
</literalExpression>

Если язык выражения не задан, используется глобальный язык выражения, который задаётся в XML-элементе definitions.

<definitions id="definitions"
             name="definitions"
             xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/"
             expressionLanguage="groovy"
             namespace="http://camunda.org/schema/1.0/dmn">
  <!-- ... -->
</definitions>

Если глобальный язык выражения не задан, вместо него используется язык выражения по умолчанию. Язык выражения по умолчанию для литеральных выражений — JUEL. Обратитесь к руководству пользователя, чтобы узнать больше о языках выражений.

Переменная

Литеральное выражение решения должно иметь переменную, которая задаёт имя и тип результата решения. Переменная представлена элементом variable внутри XML-элемента decision.

<decision id="season" name="Season">
  <variable name="season" />
</decision>

Имя переменной

Имя переменной используется для ссылки на значение литерального выражения в результате решения. Оно задаётся в атрибуте name XML-элемента variable.

<variable name="season" />

Определение типа переменной

Тип результата решения можно указать с помощью атрибута typeRef XML-элемента variable. После того как выражение вычислено движком DMN, он преобразует результат к указанному типу. Поддерживаемые типы перечислены в руководстве пользователя.

<variable name="season" typeRef="string" />

Обратите внимание, что тип не является обязательным, но рекомендуется, поскольку он обеспечивает типобезопасность результата выражения.

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org