1. 目的
本文将对流程在activiti中是怎么运行的,任务是怎样推动的进行讲解。
主要包括以下内容:
-
PVM中怎么表示流程、任务、连接线,它和activiti的Model怎样转换的。
-
启动流程实例,怎么从开始节点流转到下一个节点。
-
怎样监听流程事件。
2. 主要的jar包和java类
pvm的实现在包org.activiti.engine.impl.pvm
中,我通过源码跟踪、阅读,分析出PVM有以下重要的类:
class | 功能 |
---|---|
ProcessDefinitionImpl | 流程定义 |
ExecutionEntity | 管理流程的运行 |
ActivityImpl | 流程节点的定义 |
AtomicOperation | 流程运行方法,如:<br/> AtomicOperationActivityStart(流程启动),<br/> AtomicOperationActivityEnd(流程结束) |
ActivityBehavior | 委托 |
2.1 在哪定义的
2.1.1 ProcessDefinitionImpl
ProcessDefinitionImpl
是PVM对整个流程定义。通过ProcessDefinitionImpl.createProcessInstance
可以得到流程实例管理接口PvmProcessInstance
。ProcessDefinitionImpl
的代码片段如下:
public class ProcessDefinitionImpl extends ScopeImpl implements PvmProcessDefinition {
private static final long serialVersionUID = 1L;
protected String name;
protected String key;
protected String description;
protected ActivityImpl initial;
protected Map<ActivityImpl, List<ActivityImpl>> initialActivityStacks = new HashMap<ActivityImpl, List<ActivityImpl>>();
protected List<LaneSet> laneSets;
protected ParticipantProcess participantProcess;
public ProcessDefinitionImpl(String id) {
super(id, null);
processDefinition = this;
}
public PvmProcessInstance createProcessInstance() {
if(initial == n