前言
Activiti流程引擎包含了20多张表,在Activiti中就有25张表之多,而且表之间的关系也比较复杂,比如包含各种外键约束。
按照传统的方式,有了数据库表后,就应该为每张表创建Model实体类,然后为其创建对应的DAO接口,然后再创建对应的Manager或者Service来实现对表数据的增删改查;
但是按照传统方式的,就会有一个很严峻的问题,表的数量太多,并且关系复杂,还要兼顾流程引擎的处理方式,自己去搞一套,几乎不可能;
其实不需要我们去创建实体类,然后创建DAO、Manager或者Service,因为Activiti已经把这些东西给搞好了,只需要调用即可。
Service总览
可以通过创建的流程引擎对象,就能获取到各种Service,示例如下:
@Test public void testGetService() { ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine(); // 通过调用ProcessEngine的getXxxService即可获取对应的Service ManagementService managementService = defaultProcessEngine.getManagementService(); RepositoryService repositoryService = defaultProcessEngine.getRepositoryService(); TaskService taskService = defaultProcessEngine.getTaskService(); RuntimeService runtimeService = defaultProcessEngine.getRuntimeService(); HistoryService historyService = defaultProcessEngine.getHistoryService(); DynamicBpmnService dynamicBpmnService = defaultProcessEngine.getDynamicBpmnService(); }
接下来大概介绍一下每个Service的功能,而详细的介绍则在使用的时候解释。
ManagementService
ManagementService是一般用来对Activiti流程引擎的管理和维护。
RepositoryService
从名字上可以看出来,repository,仓库、贮藏,对应到Activiti中,也就是“资源的管理”,比如流程定义的控制管理(发布、删除、挂起、激活....);
DynamicBpmnService
RepositoryService可以用来部署流程定义(使用xml形式定义好的),一旦部署到Activiti(解析后保存到DB),那么流程定义就不会再变了,除了修改xml定义文件内容;
而DynamicBpmnService就允许我们在程序运行过程中去修改流程定义,比如修改流程定义中的分配角色、优先级、流程流转的条件...
RuntimeService
可以通过RuntimeService对流程实例进行相关的操作,比如管理流程实例的角色、分配人...以及执行信息的查询
TaskService
TaskService可以对任务进行管理和查询。
HistoryService
HistoryService提供了查询历史信息的功能,包括流程实例信息、参与者信息、完成时间....