Вход таблицы решений DMN

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

Вход

Таблица решений может иметь один или несколько входов, также называемых входными клаузами. Входная клауза определяет идентификатор, метку, выражение и тип входа таблицы решений.

Вход можно отредактировать двойным щелчком по соответствующему заголовку столбца в таблице решений.

Входная клауза представляется элементом input внутри XML-элемента decisionTable.

<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" id="definitions" name="definitions" namespace="http://camunda.org/schema/1.0/dmn">
  <decision id="dish" name="Dish">
    <decisionTable id="decisionTable">
      <input id="input1" label="Season">
        <inputExpression id="inputExpression1" typeRef="string">
          <text>season</text>
        </inputExpression>
      </input>
      <!-- ... -->
    </decisionTable>
  </decision>
</definitions>

Идентификатор входа

Идентификатор входа — это уникальный идентификатор входа таблицы решений. Он используется Camunda 7 для ссылки на вход в истории вычисленных решений. Поэтому он является обязательным для движка DMN OpenBPM. Он задаётся в атрибуте id XML-элемента input.

<input id="input1" label="Season">
  <inputExpression id="inputExpression1" typeRef="string">
    <text>season</text>
  </inputExpression>
</input>

Метка входа

Метка входа

Метка входа — это краткое описание входа. Она задаётся в XML-элементе input в атрибуте label. Обратите внимание, что метка не является обязательной, но рекомендуется, так как она помогает понять решение.

<input id="input1" label="Season">
  <inputExpression id="inputExpression1" typeRef="string">
    <text>season</text>
  </inputExpression>
</input>

Входное выражение

Входное выражение

Входное выражение определяет, как формируется значение входной клаузы. Это выражение, которое будет вычислено движком DMN. Обычно оно простое и ссылается на переменную, доступную во время вычисления. Выражение задаётся внутри элемента text, который является дочерним для XML-элемента inputExpression.

<input id="input1" label="Season">
  <inputExpression id="inputExpression1" typeRef="string">
    <text>season</text>
  </inputExpression>
</input>

Определение типа входа

Определение типа входа

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

<input id="input1" label="Season">
  <inputExpression id="inputExpression1" typeRef="string">
    <text>season</text>
  </inputExpression>
</input>

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

Язык выражений входа

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

<input id="input1" label="Season">
  <inputExpression id="inputExpression1" typeRef="string" expressionLanguage="groovy">
    <text>season</text>
  </inputExpression>
</input>

Если язык выражений не задан, используется глобальный язык выражений, заданный в 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>

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

Имя переменной входа

Когда входное выражение вычисляется, возвращаемое значение сохраняется в переменной. Имя переменной можно указать с помощью атрибута расширения camunda:inputVariable элемента input. По умолчанию имя — cellInput.

Чтобы использовать этот атрибут, необходимо определить пространство имён DMN OpenBPM xmlns:camunda="http://camunda.org/schema/1.0/dmn в XML.

<definitions id="definitions"
             name="definitions"
             xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/"
             xmlns:camunda="http://camunda.org/schema/1.0/dmn"
             namespace="http://camunda.org/schema/1.0/dmn">
  <decision id="dish" name="Dish">
    <decisionTable id="decisionTable">
      <input id="input1"
             label="Season"
             camunda:inputVariable="currentSeason">
        <!-- ... -->
      </input>
      <!-- ... -->
    </decisionTable>
  </decision>
</definitions>

Переменную можно использовать в выражении входного условия. Например, FEEL-выражение currentSeason != "Fall" проверяет, что вход season не равен "Fall".

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

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

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