Управление типами в движке FEEL

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

Эта документация посвящена поддерживаемым типам значений переменных при использовании внутри выражения FEEL и поддерживаемым выходным типам.

В DMN при задании атрибута typeRef на элементах Variable, Input или Output движок DMN пытается сконвертировать значение результата соответствующего Literal Expression, Input Expression или Output Entry. Когда никакой атрибут typeRef не задан, движок DMN передает возвращаемое значение движка FEEL напрямую без конвертации. Обратитесь к документации по поддерживаемым типам данных в DMN, чтобы получить больше информации об атрибуте typeRef.

Движок FEEL может поддерживать больше типов, чем перечислено ниже. Однако, данная страница ограничивается перечислением типов, про которые мы точно знаем, что они:

  • хорошо интегрированы с Camunda 7

  • покрыты автоматизированными тестами

Поддерживаемые типы значений переменных

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

Нативные типы Java

  • java.lang.String

  • java.lang.Float

  • java.lang.Double

  • java.lang.Integer

  • java.lang.Long

  • java.lang.Boolean

  • java.util.Date

  • java.util.Map

  • java.util.List

Spin типы

  • io.openbpm.spin.json.SpinJsonNode

  • io.openbpm.spin.xml.SpinXmlElement

Для получения дополнительной информации об интеграции с Camunda Spin см. Интеграция движка FEEL со Spin.

Возвращаемые типы

В таблице показано:

  • Какое возвращаемое значение выражения FEEL соответствует какому типу Java в маппинге

  • Какой конкретный тип переменной Camunda 7 назначается соответствующему типу Java

    Пример FEEL выраженя Возвращаемый тип в движке FEEL Тип переменной в Camunda

    null

    null

    null

    "foo"

    java.lang.String

    string

    3.1415

    java.lang.Double

    double

    3

    java.lang.Long

    long

    true

    java.lang.Boolean

    boolean

    time("11:45:30")

    java.time.LocalTime

    object

    time("11:45:30+02:00") time("10:31:10@Europe/Paris")

    io.openbpm.feel.syntaxtree.ZonedTime

    object

    date("2017-03-10")

    java.time.LocalDate

    object

    date and time("2019-08-12T22:22:22")

    java.time.LocalDateTime

    object

    date and time("2019-08-12T22:22:22+02:00") date and time("2019-08-12T22:22:22@Europe/Berlin")

    java.time.ZonedDateTime

    object

    duration("P4D")

    java.time.Duration+

    object

    duration("P1Y6M")

    java.time.Period

    object

    { "foo": "bar" }

    java.util.Map

    object

    [ "foo", "bar", "baz" ]

    java.util.List *

    object

  • Поскольку движок FEEL основан на библиотеке Scala, используется специфичный для реализации Scala тип для Map и List

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

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

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