流程引擎的API和服务
引擎API是与Activiti打交道的最常用方式。 从ProcessEngine中,你可以获得很多囊括工作流/BPM方法的服务。 ProcessEngine和服务类都是线程安全的。 你可以在整个服务器中仅保持它们的一个引用就可以了。
代码语言:javascript复制ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
RepositoryService repositoryService = processEngine.getRepositoryService();
TaskService taskService = processEngine.getTaskService();
ManagementService managementService = processEngine.getManagementService();
IdentityService identityService = processEngine.getIdentityService();
HistoryService historyService = processEngine.getHistoryService();
FormService formService = processEngine.getFormService();
- RepositoryService 管理流程定义
:提供了管理和控制发布包和流程定义的操作。
- 查询引擎中的发布包和流程定义。
- 暂停或激活发布包,对应全部和特定流程定义。 暂停意味着它们不能再执行任何操作了,激活是对应的反向操作。
- 获得多种资源,像是包含在发布包里的文件, 或引擎自动生成的流程图。
- 获得流程定义的pojo版本, 可以用来通过java解析流程,而不必通过xml。
- RuntimeService 执行管理
- 负责启动一个流程定义的新实例
- 用来获取和保存流程变量,这些数据是特定于某个流程实例的,并会被很多流程中的节点使用 (比如,一个排他网关常常使用流程变量来决定选择哪条路径继续流程)
- 能查询流程实例和执行
- 可以在流程实例等待外部触发时使用,这时可以用来继续流程实例
- TaskService 管理任务
任务是由系统中真实人员执行的,它是Activiti这类BPMN引擎的核心功能之一。 所有与任务有关的功能都包含在TaskService中
- 查询分配给用户或组的任务
- 创建独立运行任务。这些任务与流程实例无关。
- 手工设置任务的执行者,或者这些用户通过何种方式与任务关联。
- 认领并完成一个任务。认领意味着一个人期望成为任务的执行者, 即这个用户会完成这个任务。完成意味着“做这个任务要求的事情”。 通常来说会有很多种处理形式。
- IdentityService 管理组织机构 非常简单。它可以管理(创建,更新,删除,查询…)群组和用户
- FormService 管理任务表单 提供了启动表单和任务表单两个概念。 启动表单会在流程实例启动之前展示给用户, 任务表单会在用户完成任务时展示
- HistoryService 管理历史 提供了Activiti引擎手机的所有历史数据。 在执行流程时,引擎会保存很多数据(根据配置),比如流程实例启动时间,任务的参与者, 完成任务的时间,每个流程实例的执行路径,等等。 这个服务主要通过查询功能来获得这些数据。
- ManagementService 在使用Activiti的定制环境中基本上不会用到。 它可以查询数据库的表和表的元数据。另外,它提供了查询和管理异步操作的功能。 Activiti的异步操作用途很多,比如定时器,异步操作, 延迟暂停、激活,等等
参考: Activiti中文手册: http://www.mossle.com/docs/activiti/index.html