最近由于接触到Activiti工作流引擎,因此粗读了一下它的源码。
总结了一些内容如下,这些内容一般的doc上都是没有提及的。
1. model.Activity与model.Task
Activity是模型时期对象(想想BPMN文件的那些元素),它有3个子类:CallActivity, SubProcess, Task(注意是
- org.activiti.bpmn.model.Task)
流程启动的那个活动可以理解成有一个StartEventActivity
Task有N个子类:BusinessRuleTask, ManualTask, ReceiveTask, ScriptTask, SendTask, ServiceTask, UserTask
PvmActivity是部署时期对象,ActivityImpl是它的实现类,注意ActivityImpl与Activity没有关系!获取ActivityImpl的方法:
public static ActivityImpl getActivity(ProcessEngine processEngine, String processDefId, String activityId)
{
ProcessDefinitionEntity pde = (ProcessDefinitionEntity) ((RepositoryServiceImpl) processEngine
.getRepositoryService()).getDeployedProcessDefinition(processDefId);
return (ActivityImpl) pde.findActivity(activityId);
}
ActivityImpl.getActivityBehavior()可以获取到对应的ActivityBehavior
ActivityBehavior很显然不是一种模型设计时期的对象
TaskActivityBehavior是一种类型的ActivityBehavior
TaskActivityBehavior是一种类型的ActivityBehavior
2. task.Task与task.TaskDefinition
model.Task是模型时期的,task.TaskDefinition是部