购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 Flowable体系概述

Flowable是一个使用Java语言编写的轻量级业务流程引擎,可用于部署行业标准BPMN 2.0的流程定义,可视化地创建或者修改流程定义,执行用户任务,并且提供访问运行时和历史的流程实例及相关数据。

1.2.1 工具组件

Flowable框架的核心组件是流程引擎,图1.2列出了完整的Flowable引擎工具组件。

图1.2 Flowable引擎工具组件

(1)Flowable Engine:是Flowable引擎工具组件中的核心组件,执行流程引擎功能,如执行BPMN 2.0业务流程和创建执行工作流任务。

(2)Flowable Designer:一个Eclipse插件,用于设计与BPMN 2.0兼容的业务流程,并且可添加Flowable引擎自扩展元素,如Java服务任务和执行监听器。

(3)Flowable Modeler:基于Web的建模工具,可用于创建分别符合BPMN 2.0、CMMN和DMN规范的业务流程。

(4)Flowable UI:基于Spring Boot建立的Web应用,实现包括身份管理、建模设计器、任务、监控管理等模块在内的功能。

(5)Flowable REST:作为Web应用,提供REST API,实现用户与Flowable引擎的远程通信。

1.2.2 核心实现

Flowable引擎核心是一个状态机。这里的状态机一般指有限状态机(Finite-State Machine,FSM),表示有限个状态及在这些状态之间的转移和动作等行为的数学计算模型。

BPMN 2.0流程定义由事件、任务和网关等元素通过顺序流连接组成。当这样的流程定义部署在流程引擎中,并且在新的流程实例启动后,按顺序及条件逐个执行BPMN 2.0元素。这个流程执行过程类似于状态机,通过条件激活状态,让对象由一个状态执行发展到另一个状态。下面通过图1.3来看一看Flowable引擎的核心实现。

图1.3 Flowable引擎的核心实现

在Flowable引擎中,大多数BPMN 2.0元素都是以状态实现的。它们的转换与BPMN 2.0中顺序流的到达和离开有关。每个状态或者相应的BPMN 2.0元素都可以在流程实例进入到该状态时,附加一段自己的行为。

所以,当您在本书后续章节中看到一个复杂的BPMN 2.0实例时,请记住,在本质上,它是一个相当简单的状态机。

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引擎,可以完全独立于表单运行,因为可以用流程变量替代表单数据。

1.2.4 数据库表

Flowable引擎的数据库表都大多以ACT_开头,第二部分的标示符说明表的用途,具体说明如下。

(1)ACT_RE_*:RE代表repository,即存储流程静态资源,如流程定义与流程资源。

(2)ACT_RU_*:RU代表runtime,即存储运行时信息,如流程实例、用户任务、变量、作业等。Flowable引擎只在流程实例运行过程中保存运行时的数据,并在流程实例结束时删除记录,从而保证流程实例运行时表体积小和查询速度快。

(3)ACT_HI_*:HI代表history,即存储历史数据,如已完成的流程实例、变量、任务等。

(4)ACT_GE_*:GE代表general,即存储通用数据,如通用配置项版本信息。

(5)ACT_ID_*:ID代表identity,即存储用户身份认证数据,用户可选服务。

(6)ACT_FO_*:FO代表form,即存储表单数据,可选服务。

(7)ACT_CMMN_*:CMMN即案例管理模型,存储CMMN数据。

(8)ACT_DMN_*:DMN即决策模型,存储DMN数据。 jjMgxgr62rf3HIrZ5xWw9q4jAr2z9j6+Y+7cUVs9G5kgUaGjYIUk/ZZndJQT0uas

点击中间区域
呼出菜单
上一章
目录
下一章
×