Activiti也有ReceiveTask,作用是进入该节点将自动挂起流程实例,直到被显式的唤醒。Activiti有MailTask是专门发送邮件的。
Camunda同时有SendTask和ReceiveTask,一般成对出现,感觉是将Activiti中的ReceiveTask拆成2个步骤,SendTask用户唤醒ReceiveTask中的流程。
ReceiveTask:进入该节点,任务会被自动挂起,进入等待流程。
SendTask:发送信号唤醒正在进入等待的流程。
一:bpmn
二:java
@Service
public class SendTaskService implements JavaDelegate {@Autowiredprivate RuntimeService runtimeService;@Overridepublic void execute(DelegateExecution execution) throws Exception {runtimeService.createMessageCorrelation("receive_task_msg").processInstanceBusinessKey("key001").correlate();}
}
三:test
// 1.先启动接收
repositoryService.createDeployment().name("接收流程").addClasspathResource("bpmn/receive_task.bpmn").deploy();
runtimeService.startProcessInstanceByKey("ReceiveTaskProces", "key001");// 2.再发送
repositoryService.createDeployment().name("发送流程").addClasspathResource("bpmn/send_task.bpmn").deploy();
runtimeService.startProcessInstanceByKey("SendTaskProcess", "key001");
四:db
- 先启动接收流程,StartEvent -> ReceiveTask 会进入挂起等待状态。
- 后启动发送流程,StartEvent -> SendTask -> UserTask。
- 接收流程因收到发送流程的唤醒,所以接收流程也来到了UserTask。
- 最终两个流程都进入到下一个节点UserTask。