Шаблонизация
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
OpenBPM Engine поддерживает движки шаблонов, которые реализованы как скриптовые движки, совместимые с JSR-223. В результате шаблоны можно использовать везде, где можно использовать скрипты.
В community-дистрибутивах OpenBPM Engine «из коробки» предоставляется следующий движок шаблонов:
Реализацию обёртки скриптового движка для Freemarker можно найти в репозитории camunda-bpmn-platform https://github.com/camunda/camunda-bpm-platform/tree/master/freemarker-template-engine.
Следующие движки шаблонов предоставляются как необязательные community-расширения:
Реализации обёрток скриптовых движков можно найти в репозитории community hub camunda-7-template-engines-jsr223.
Установка движка шаблонов
Установка движка шаблонов для встроенного процессного движка
Движок шаблонов должен устанавливаться так же, как и скриптовый движок. Это означает, что движок шаблонов должен быть добавлен в classpath процессного движка.
При использовании встроенного процессного движка библиотеки шаблонов должны быть добавлены в деплоймент приложения. При использовании процессного движка в maven-проекте war зависимости движка шаблонов должны быть добавлены как зависимости в maven-файл pom.xml:
|
OpenBPM Engine BOM /get-started/apache-maven/ содержит только официально поддерживаемый движок шаблонов freemarker. Для движков шаблонов, развиваемых сообществом, см. Maven coordinates ниже. |
<dependencies>
<!-- freemarker -->
<dependency>
<groupId>io.openbpm.template-engines</groupId>
<artifactId>openbpm-engine-template-engines-freemarker</artifactId>
</dependency>
</dependencies>
Ниже приведены Maven coordinates расширений от community:
<dependencies>
<!-- saxon xquery -->
<dependency>
<groupId>org.camunda.community.template.engine</groupId>
<artifactId>camunda-7-template-engine-xquery</artifactId>
</dependency>
<!-- saxon xslt -->
<dependency>
<groupId>org.camunda.community.template.engine</groupId>
<artifactId>camunda-7-template-engine-xslt</artifactId>
</dependency>
<!-- apache velocity -->
<dependency>
<groupId>org.camunda.community.template.engine</groupId>
<artifactId>camunda-7-template-engine-velocity</artifactId>
</dependency>
</dependencies>
Установка движка шаблонов в общий процессный движок
При использовании общего процессного движка, движок шаблонов должен быть добавлен в общий classpath процессного движка.
Процедура зависит от application server. В Apache Tomcat библиотеки необходимо добавить в общую папку lib/.
|
FreeMarker предустановлен в дистрибутив OpenBPM Engine |
Использование движка шаблонов
Если библиотека движка шаблонов находится в classpath, вы можете использовать шаблоны везде в BPMN-процессе, где вы можете использовать скрипты, например в script task или в inputOutput mapping. Движок шаблонов FreeMarker является частью дистрибутива OpenBPM Engine.
Внутри шаблона доступны все переменные процесса области видимости (scope) соответствующего BPMN-элемента. Шаблон также может быть загружен из внешнего ресурса, как описано в разделе script-source.
Следующий пример показывает шаблон FreeMarker, результат которого сохраняется в переменную процесса
text.
<scriptTask id="templateScript" scriptFormat="freemarker" camunda:resultVariable="text">
<script>
Dear ${customer},
thank you for working with Camunda ${version}.
Greetings,
Camunda Developers
</script>
</scriptTask>
В inputOutput mapping может быть очень полезно использовать внешний шаблон для генерации payload для camunda:connector.
<bpmn2:serviceTask id="soapTask" name="Send SOAP request">
<bpmn2:extensionElements>
<camunda:connector>
<camunda:connectorId>soap-http-connector</camunda:connectorId>
<camunda:inputOutput>
<camunda:inputParameter name="soapEnvelope">
<camunda:script scriptFormat="freemarker" resource="soapEnvelope.ftl" />
</camunda:inputParameter>
<!-- ... remaining connector config omitted -->
</camunda:inputOutput>
</camunda:connector>
</bpmn2:extensionElements>
</bpmn2:serviceTask>
Использование XSLT в качестве движка шаблонов
Использование движка шаблонов XSLT во встроенном процессном движке
При использовании встроенного процессного движка библиотека движка габлонов XSLT должна быть добавлена в
деплоймент приложения. При использовании процессного движка в maven-проекте war зависимость движка шаблонов
должна быть добавлена как зависимость в maven-файл pom.xml:
<dependencies>
<!-- XSLT -->
<dependency>
<groupId>org.camunda.community.template.engine</groupId>
<artifactId>camunda-7-template-engine-xslt</artifactId>
</dependency>
</dependencies>
Использование XSLT-шаблонов
Ниже приведён пример скрипт задачи, используемой для выполнения XSLT-шаблона:
<bpmn2:scriptTask id="ScriptTask_1" name="convert input"
scriptFormat="xslt"
camunda:resource="org/camunda/bpm/example/xsltexample/example.xsl"
camunda:resultVariable="xmlOutput">
<bpmn2:extensionElements>
<camunda:inputOutput>
<camunda:inputParameter name="camunda_source">${customers}</camunda:inputParameter>
</camunda:inputOutput>
</bpmn2:extensionElements>
</bpmn2:scriptTask>
Как показано в примере выше, на исходный XSL-файл можно сослаться с помощью атрибута camunda:resource.
Он может быть загружен из classpath или из деплоймента (базы данных) так же, как это описано для script tasks.
Результат преобразования можно сопоставить (mapped) с переменной с помощью атрибута camunda:resultVariable.
Наконец, входные данные преобразования должны быть сопоставлены с использованием специальной переменной camunda_source
через mapping <camunda:inputParameter … />.
Полный пример XSLT Template Engine можно найти в репозитории примеров.
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org