Скриптовая задача
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Скриптовая задача (Script Task) — это автоматизированная активность. Когда выполнение процесса достигает скриптовой задачи, выполняется соответствующий скрипт.
Скриптовая задача определяется указанием скрипта и атрибута scriptFormat.
<scriptTask id="theScriptTask" name="Execute script" scriptFormat="groovy">
<script>
sum = 0
for ( i in inputArray ) {
sum += i
}
</script>
</scriptTask>
Значение атрибута scriptFormat должно быть именем, совместимым с JSR-223 (Scripting for the Java Platform). Если вы хотите использовать (совместимый с JSR-223) движок скриптов, необходимо добавить соответствующий JAR-файл в classpath и использовать корректное имя.
Исходный код скрипта должен быть добавлен как текстовое содержимое дочернего элемента script.
В качестве альтернативы исходный код может быть задан в виде выражения или внешнего ресурса. Дополнительную информацию о возможных способах задания исходного кода скрипта см. в соответствующем разделе.
Общую информацию о работе со скриптами в процессном движке см. в разделе Скриптинг.
|
OpenBPM Engine должна работать с большинством реализаций скриптовых движков, совместимых с JSR-223. Мы тестируем интеграцию с Groovy, JavaScript, JRuby и Jython. Подробнее см. раздел Зависимости сторонних библиотек в Руководстве пользователя. |
Переменные в скриптах
Все переменные процесса, доступные через выполнение (execution), которое достигает скриптовой задачи, могут использоваться внутри скрипта. В приведённом ниже примере скриптовая переменная inputArray фактически является переменной процесса (массив целых чисел).
<script>
sum = 0
for ( i in inputArray ) {
sum += i
}
</script>
Также возможно устанавливать переменные процесса в скрипте. Переменные можно устанавливать с помощью методов setVariable(…), предоставляемых интерфейсом VariableScope:
<script>
sum = 0
for ( i in inputArray ) {
sum += i
}
execution.setVariable("sum", sum);
</script>
Включение автоматического сохранения переменных скрипта
При установке свойства autoStoreScriptVariables в значение true в конфигурации процессного движка, движок автоматически сохраняет все глобальные переменные скрипта как переменные процесса.
Для использования этой возможности необходимо:
-
установить
autoStoreScriptVariablesвtrueв конфигурации процессного движка; -
помечать все переменные скрипта, которые не должны сохраняться как переменные процесса, с помощью ключевого слова
def:def sum = 0. В этом случае переменнаяsumне будет сохранена как переменная процесса.
|
Флаг конфигурации |
Примечание: следующие имена зарезервированы и не могут использоваться в качестве имён переменных: out, out:print, lang:import, context, elcontext.
Результаты скрипта
Возвращаемое значение скриптовой задачи может быть присвоено уже существующей или новой переменной процесса путём указания имени переменной процесса в качестве строкового значения атрибута camunda:resultVariable в определении скриптовой задачи. Любое существующее значение соответствующей переменной процесса будет перезаписано результатом выполнения скрипта. Если имя результирующей переменной не указано, результат выполнения скрипта игнорируется.
<scriptTask id="theScriptTask" name="Execute script" scriptFormat="juel" camunda:resultVariable="myVar">
<script>#\{echo}</script>
</scriptTask>
В приведённом выше примере результат выполнения скрипта (значение разрешённого выражения #{echo}) устанавливается в переменную процесса с именем myVar после завершения выполнения скрипта.
|
Обратите внимание, что при использовании |
Расширения OpenBPM Engine
Attributes |
|
Extension Elements |
|
Constraints |
Атрибут camunda:exclusive учитывается только в том случае, если атрибут camunda:asyncBefore или camunda:asyncAfter установлен в значение true |
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org