上篇中,我们了解了camunda几种task的实现,那么camunda具体有几种task呢?从modeler中可以很直观的看到。
1.Service Task
这是用的最多的task方式,我们在处理流程的时候,大部分都是用service task 来处理的。
具体怎么用,参考之前的 task实现 https://www.ithere.net/article/1496874776434139138
2.Send Task
The Send Task has the same behavior as a Service Task.
根据文档上的说法,Send Task的用法习惯与Service Task 相似。
3.User Task
用户执行任务
4.Business Rule Task
业务规则任务需要依赖DMN引擎
设计一个场景,年龄大于20岁的不满足要求,不大于20岁的满足要求
5.Script Task
根据文档,支持的脚本有如下
Camunda Platform should work with most of the JSR-223 compatible script engine implementations. We test integration for Groovy, JavaScript, JRuby and Jython.
这里以groovy为例
添加依赖
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
</dependency>
6.Receive Task
一般情况下Receive Task 和 Send Task 组合使用。可以简单理解为Receive Task 需要等对应message的通知。
我们创建一个Receive Task。开始这个流程之后,该任务一直没有执行
我们再创建一个Send Task
public class SendTaskDelegate implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) throws Exception {
execution.getProcessEngineServices().getRuntimeService()
.createMessageCorrelation("testMessage").correlate();
}
}
执行之后,Receive Task 的节点任务就会执行。
7.Manual Task
这个类型的task 文档的说法是定义为外部任务,会直接pass。