工作流-Activiti核心API介绍

不问归期 提交于 2019-12-07 16:33:12

一、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)。



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!