1.2.3 引擎服务
开发中,我们最常使用的是Flowable引擎API,它的总入口是ProcessEngine。通过使用ProcessEngine,可以获得各种提供工作流方法的服务。由于ProcessEngine与其他服务对象都是线程安全的,因此可以在服务器中保存并共用同一个引用。另外,所有的服务都是无状态且幂等的,这意味着我们可以在集群环境的多个节点上运行Flowable引擎。
图1.4展示了Flowable引擎的服务类,具体说明如下。
图1.4 Flowable引擎的服务类
(1)RepositoryService:提供控制管理部署与流程定义的操作。
(2)RuntimeService:用于启动流程定义的新流程实例,与提供静态信息的RepositoryService相反。
(3)TaskService:所有任务操作都组织在该服务中,包括创建、查询、分派、认领和完成等。
(4)HistoryService:提供Flowable引擎收集的所有历史数据。当执行流程时,Flowable引擎会保存流程数据(保存数据项可配置),比如流程实例启动时间、执行人、执行任务、流程实例执行路径等。
(5)ManagementService:可以读取数据库表和表初始数据的信息,也提供对作业的查询与管理操作,通常在用Flowable引擎编写用户应用时不需要使用。
(6)IdentityService:可选服务,用于管理组与用户。实际上,Flowable引擎在运行时并不做任何用户检查。例如,任务可以指派给任何用户,由于Flowable引擎并不会验证系统中是否存在该用户,因此有时要与轻型目录访问协议LDAP等服务结合使用。
(7)FormService:可选服务,引入开始表单与任务表单的概念。对于Flowable引擎,可以完全独立于表单运行,因为可以用流程变量替代表单数据。