Camunda脚本任务可用在ServiceTask和线上,支持内部脚本Inline script和外部脚本External resource,支持JavaScript、groovy、Jython等常用脚本语言。
Activiti和Flowable不支持外部脚本,也不支持在线上指定脚本。
监听器也支持脚本,当在流程中增加脚本监听器只需要重新部署流程即可,不需要重启服务。即动流程图,不动Java代码。
一:JavaScript
1.1 bpmn
线上的脚步返回值条件必须是boolean。
脚本返回值赋值给Result variable。
1.2 src/main/resources/test.js
var result1 = execution.getVariable("result1");
result1 - 1;
1.3 test
repositoryService.createDeployment()
.name("ScriptTask流程")
.addClasspathResource("bpmn/diagram_5.bpmn")
.deploy();
identityService.setAuthenticatedUserId("huihui");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("ScriptTaskProcess");
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.singleResult();
Map<String,Object> variables = new HashMap<>();
variables.put("days", 10);
taskService.complete(task.getId(), variables);
1.4 result
二:groovy
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>3.0.9</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.codehaus.groovy.modules.http-builder</groupId>
<artifactId>http-builder</artifactId>
<version>0.7.1</version>
</dependency>