Типы данных в движке DMN
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Таблица решений позволяет задавать типы входных и выходных данных. Когда движок DMN оценивает входные или выходные данные, он проверяет, соответствует ли тип значения заявленному типу. Если типы не совпадают, движок пытается преобразовать значение в заявленный тип или выбрасывает исключение.
Движок DMN поддерживает базовые типы, которые можно расширить кастомизированными типами.
Поддерживаемые типы данных
Движок DMN поддерживает следущие типы:
| Тип данных | Может быть преобразовано из | Производит значение типа |
|---|---|---|
string |
java.lang.Object |
StringValue |
boolean |
java.lang.Boolean, java.lang.String |
BooleanValue |
integer |
java.lang.Number, java.lang.String |
IntegerValue |
long |
java.lang.Number, java.lang.String |
LongValue |
double |
java.lang.Number, java.lang.String |
DoubleValue |
date |
java.util.Date, java.lang.String, java.time.LocalDateTime, java.time.ZonedDateTime |
DateValue |
Каждый преобразователь типов данных возвращает типизированное значение, которое содержит в себе значение как таковое и дополнительную информацию о типе.
Если заданный тип не совпадает с одним из указанных выше типов, по умолчанию такое значение преобразуется в нетипизированное.
Работа с датами
Движок DMN поддерживает тип date, который является комбинацией даты и времени. По умолчанию преобразователь этого типа данных принимает объекты следующих типов:
-
java.util.Date -
Строки формата
yyyy-MM-dd’T’HH:mm:ss -
java.time.LocalDateTime -
java.time.ZonedDateTime
Если вы предпочитаете другой формат или другое представление даты, реализуйте кастомизированный тип и замените преобразователь по умолчанию.
Установка типа данных на поле с входными данными
Тип поля с входными данными в таблице решений задается атрибутом typeRef на элементе inputExpression.
<decision>
<decisionTable>
<input id="orderSum" label="Order sum">
<inputExpression typeRef="double">
<text>sum</text>
</inputExpression>
</input>
<!-- ... -->
</decisionTable>
</decision>
Установка типа данных на поле с выходными данными
Тип поля с выходными данными в таблице решений задается атрибутом typeRef на элементе output.
<decision>
<decisionTable>
<!-- ... -->
<output id="result" label="Check Result" name="result" typeRef="string" />
<!-- ... -->
</decisionTable>
</decision>
Установка типа данных на переменную
Тип результата литерального выражения, предсавляющего собой решение, задается атрибутом typeRef на элементе variable.
<decision>
<variable name="result" typeRef="string" />
<!-- ... -->
</decision>
Реализация кастомизированного типа данных
|
Пожалуйста, примите во внимание, что эти API не являются частью публичного API и могут измениться в будущих релизах. |
Типы по умолчанию в движке DMN могут быть расширены или заменены кастомизированными типами. Например? вы можете добавить новый тип для времени или поменять процесс конвертации, чтобы поддержать другой формат даты или локализованные булевы константы.
Чтобы это сделать, реализуйте новый DmnDataTypeTransformer. Преобразование обрабатывается в методе transform() и возвращает типизированное значение. Если не получается успешно трансформировать значение, он должен выбросить IllegalArgumentException.
public class CustomDataTypeTransformer implements DmnDataTypeTransformer {
public TypedValue transform(Object value) throws IllegalArgumentException {
// transform the value into a typed value
return typedValue;
}
}
Чтобы использовать этот преобразователь в движке DMN, добавьте его к конфигурации движка DMN.
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org