脚本任务
概览
脚本任务(script task) 是指当流程到达该任务时,执行一个 Groovy 脚本。
通常,当我们需要初始化流程变量时,会使用脚本任务, 设置默认值、计算表达式, 或者执行一些其他的逻辑,类似这种只需一小段代码即可完成的所有操作。
但脚本并不限于上述内容。脚本中可以实现实现任何业务逻辑,取决于具体需求。
Jmix BPM 仅支持 Groovy 脚本。但原始的 Flowable 产品也支持 JavaScript。 因此,从外部源导入流程模型时要小心。 |
脚本任务在图中显示为典型的 BPMN 2.0 任务(圆角矩形),矩形左上角有一个小的“脚本”图标。
脚本任务通过指定 script
和 scriptFormat
属性定义。
<scriptTask id="script-task" name="Script task"
scriptFormat="groovy" (1)
flowable:resultVariable="result"> (2)
<script>
printlnt "This is a script" (3)
return "OK"
</script>
</scriptTask>
1 | — 脚本类型(仅支持 Groovy) |
2 | — 结果变量(可选) |
3 | — 脚本内容 |
属性
脚本任务具有以下特定属性:
-
scriptFormat:扩展属性,配置脚本的语言(仅 Groovy)。
-
script:: 脚本内容,在子元素
script
中定义的字符串。 -
resultVariable:可选属性,如果存在该属性,则会在执行上下文中存储指定名称的变量 其中包含脚本计算的结果。
如需编辑脚本,可以双击脚本控件使用 Script editor 编辑:
脚本内容不能为空,否则会在流程部署时出错。 |
脚本中的变量
流程到达脚本任务时,execution 中的所有可访问的流程变量都可以在脚本中使用。 在此示例中,脚本变量 'inputArray' 实际上是一个流程变量(整数数组)。
<script>
sum = 0
for ( i in inputArray ) {
sum += i
}
</script>
也可以在脚本中设置流程变量,只需调用
execution.setVariable("variableName", variableValue)
默认情况下,不会自动存储任何变量。
脚本结果
脚本任务的返回值可以分配给已有流程变量或新的流程变量。 指定目标变量时,可以在脚本任务属性面板的 Result variable 字段中设置。
当脚本任务执行时,脚本的返回值会自动分配给指定的流程变量。 如果变量不存在,Flowable 将创建一个与 Result variable 字段同名的新变量。
通过使用 Result variable 字段,可以将脚本任务的结果集成到流程变量中, 以便能在整个流程的执行过程中存储、操作和访问数据。
在脚本中,可以使用 'return' 运算符。例如:
def a = "abc"
return a
如果脚本中没有 'return',则将使用最后一行的结果,在下面的示例中,结果为 “JMIX”。
String a = "abc".toUpperCase()
String b = "jmix".toUpperCase()
关于 Groovy
Apache Groovy 是一种功能强大的、类型可选的动态语言,具有静态类型和静态编译功能, 适用于 Java 平台,旨在通过简洁、熟悉且易于学习的语法提高开发人员的工作效率。
参考 Groovy 语言文档.