一、ProcessEngine。
谈到activiti核心的API那肯定是ProcessEngine类,其他所有的类都是由他而来。
如何创建:ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
查看getDefaultProcessEngine()就可以发现activiti会默认加载classpath路径下activiti.cfg.xml文件。
activiti.cfg.xlm文件配置如下:
如上图可见此配置是jdbc配置信息,操作activiti的23张表。
查看org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration类可见activity默认支持h2数据库。
1、RepositoryService:管理流程部署及定义。
1)该类是activiti的仓库服务类,仓库及指流程定义文档的两个文件:.bpmn、.png
2)如何创建:RespositoryService respositoryService = processEngine.getRepositoryService();
3)该类可以创建出一个DeploymentBuilder对象,用于部署流程。Deployment deployment = respositoryService.createDeployment().deploy();
4)删除流程定义:respositoryService.deleteDeployment(deploymentId);
2、RuntimeService:执行管理,包括启动,查询,删除流程定义。
1)是activiti的流程执行服务类。可以从这个服务类中获取很多关于流程执行相关的信息。
2)如何创建:processEngine.getRuntimeService();
3、TaskService:任务管理。
1)是activiti的任务服务类。可以从这个类中获取任务的信息。
2)如何创建:processEngine.getTaskService();
4、HistoryService:历史查询,包含流程变量查询,流程查询,流程执行对象查询。
1)是activiti的查询历史信息的类。在一个流程执行完成后,这个对象为我们提供查询历史信息。
2)如何创建:processEngine.getHistoryService();
5、IdentityService:组织机构管理。
如何创建:processEngine.getIdentityService ();
6、FormService:任务表单管理。
如何创建:processEngine.getFormService();
7、ManagementService。
如何创建:processEngine.getManagementService();
二、ProcessDefinition。
流程定义对象,可以从这个类中获取资源文件等等。
三、ProcessInstance。
代表流程定义的执行实例,一个流程实例包含这一个流程上面的所有的节点,那么我们可以通过这个类获取到整个流程中当前所有信息,一个流程实例表示一个流程从开始到结束的最大流程分支,即一个流程只有一个流程实例。
四、Execution。
activiti中用这个对象描述流程执行的每一个节点。在没有并发的情况下,Execution即为ProcessInstance。流程按照流程定义的规则执行一次的过程就可以表示执行对象Execution。
查看源代码即可发现,ProcessInstance集成了Execution。
在单线流程中Execution即为ProcessInstance,但是在并发情况,即有分支流程的情况下,每一条流程就有一个Execution了。
总结:
* 一个流程中,流程执行对象(Execution)可以有多个,但是流程实例对象(ProcessInstance)只能有一个。
* 当流程按照流程定义的规则只执行一次的时候,流程执行对象(Execution)即为流程实例对象(ProcessInstance)。