Skip to content
一、流程引擎对象
1. 获取ProcessEngine对象
  • 通过ProcessEngineConfiguration提供的buildProcessEngine【详见第08章】
  • 通过ProcessEngines工具类
2. 详解ProcessEngines
  • 阐义:
    • 所有创建(包括其他方式创建)的ProcessEngine实例均被注册到ProcessEngines中。
    • 这里的注册,实际上是在ProcessEngines类中维护一个Map对象,该对象的key为ProcessEngine实例的名称,value为ProcessEngine的实例,当向ProcessEngines注册ProcessEngine实例时,实际上时调用Map的put方法,将该实例缓存到map中。
  • 具体方法
    • init 方法与 getDefaultProcessEngine方法
      • ProcessEngines 的 init 方法,会读取 Activiti 的默认配置文件,然后将创建的 ProcessEngine 实例缓存到 Map 中 。这里所说的默认配置文件, 一般情况下是指 ClassPath 下的 activiti.cfg.xml,如果与 Spring 进行了整合,则读取 ClassPath 下的 activiti-context.xml 文件。调用了init 方法后,Activiti 会根据默认配置创建 ProcessEngine 实例,此时 Map 的 key 值为“ default”,init 方法并不会返回任何的 ProcessEngine 实例,该方法只会加载 ClassPath 下全部 的 Activiti 配置文件并且将创建的 ProcessEngine 实例保存到 ProcessEngines 中。如果需要得到相应的 ProcessEngine 实例,可以使用 getProcessEngines 方法获取 ProcessEngines 中全部的 ProcessEngine 实例 。 getProcessEngines 返回 一个 Map,只需要根据 ProcessEngine 的名称,即 可得到相应的 ProcessEngine 实例。
      • ProcessEngines 提供了一个 getDefaultProcessEngine 方法,用于返回 key 为“ default” 的 ProcessEngine 实例,该方法会判断 ProcessEngines 是否进行了初始化,如果没有,则会调 用 init 方法进行初始化。
    • registerProcessEngine 方法和 unregister 方法
      • registerProcessEngine 方法向 ProcessEngines 中注册一个 ProcessEngine 实例,unregister 方法则注销 ProcessEngines 中一个 ProcessEngine 实例。
      • unregister 方法只是单纯地将 ProcessEngine 实例从 Map 中移除,并不会调用ProcessEngine 的 close 方法。
    • retry 方法
      • 如果 Activiti 在加载配置文件时出现异常,则可以调用 ProcessEngines 的 retry方法重新加载配置文件, 重新创建 ProcessEngine 实例并加入到 Map 中,retry 方法返回的是一个 ProcessEnginelnfo 实例。
    • destroy 方法
      • 对其维护的所有 ProcessEngine 实例进行销毁,并且在销毁时 ,会调用所有 ProcessEngine 实例的close 方法 。
      • ProcessEngine 实例被销毁的前提是 ProcessEngines 的初始化状态为 true,如果为 false,则 调用 destroy方法不会有效果。 例如调用retry方法,再调用 destory 方法 ,则不会有销毁效果。
      • Destory 方法在执行时,会调用所有 ProcessEngine 实例的 close 方法,该方法会将异步执行器( AsyncExecutor)关闭,如果为流程引擎配置的数据库策略为 create-drop ,则会执行数据表的删除操作。
3. ProcessEngine对象

image-20200714111014921

  • RepositoryService:提供一系列管理流程定义和流程部署的 API。
  • RuntimeService:在流程运行时对流程实例进行管理与控制 。
  • TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务等。
  • IdentityService:提供对流程角色数据进行管理的 API,这些角色数据包括用户组、用户及它们之间的关系。
  • ManagementService:提供对流程引擎进行管理和维护的服务。
  • HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。
  • DynarnicBpmnService:使用该服务,可以不需要重新部署流程模型, 就可以实现对流程模型的部分修改。
  • FormService:解析流程定义中表单项的配置,提交表单的方式驱动用户节点流转,获取自定义外部表单key。

Released under the MIT License.