前言
最近在断断续续的学习activiti工作流引擎,为了增强自己对activiti的理解,特此将学习内容整理在博文上,方便自己回忆。
流程启动方式
activiti的流程启动总结来说有四种启动方式,分别是根据key启动、根据processDefinitionId启动、根据message启动,通过ProcessInstanceBuilder启动。
根据processDefinitionKey启动
根据processDefinitionKey启动也就是根据流程定义文件的key启动,是activiti最常用的启动方式。
示例
流程定义文件,key为my-process
1 | <process id="my-process"> |
Java代码
1 |
|
根据processDefinitionId启动
示例
Java代码
1 |
|
根据message启动
根据message启动就要复杂一些,需要改动一下流程定义文件的startEvent,增加messageEventDefinition。
示例
流程定义文件
1 | <message id="messageStart" name="my-message"/> |
Java代码
1 |
|
根据message启动最终其实还是会走到用processDefinitionId来启动。。。
源码解析
1 | public ProcessInstance execute(CommandContext commandContext) { |
从上面可以看到,最终还是生成了一个processDefinitionId然后调createAndStartProcessInstanceByMessage来启动,具体可以去跟下源码。
根据processInstanceBuilder启动
Java代码
1 |
|