天天看點

流程引擎之Flowable簡介

背景

Flowable 是一個流行的輕量級的采用 Java 開發的業務流程引擎,通過 Flowable 流程引擎,我們可以部署遵循 BPMN2.0 協定的流程定義(一般為XML檔案)檔案,并能建立流程執行個體,查詢和通路流程相關的執行個體與資料等等。

2016 年 10 月,Activiti 工作流引擎的核心開發者 Tijs Rademakers 離開 Alfresco 公司并在 Activiti 5.22 版本分支基礎上開啟了 Flowable 開源項目。Flowable 項目中包括 BPMN(Business Process Model and Notation)引擎、CMMN(Case Management Model and Notation)引擎、DMN(Decision Model and Notation)引擎、表單引擎(Form Engine)等子產品。

流程引擎之Flowable簡介
  • 2016年10月13日,Tijs Rademakers 釋出Flowable 5.22.0
  • 2017.02.15釋出Flowable 6.0,該版本基于Activiti6
  • ......
  • 2021.12.28釋出Flowable 6.7.2 release

附 Flowable 官方位址:

  • Flowable 官方網站:https://www.flowable.com/
  • Flowable github:https://github.com/flowable
  • Flowable 版本釋出記錄:https://github.com/flowable/flowable-engine/releases?page=1
  • Flowable 文檔:https://www.flowable.com/open-source/docs/
中文 Flowable 文檔: https://tkjohn.github.io/flowable-userguide/#chapterApi
  • Flowable 教程:https://documentation.flowable.com/latest/howto/tutorial/first-experience

Flowable 使用

1)Flowable UI 使用

與 jBPM 的 Business Central 類似(相對來說 Business Central 功能更強大),Flowable UI 是 Flowable 官方提供給使用者可初始化的流程等資源設計和管理器,使用步驟如下:

Step 1:下載下傳 flowable-6.8.0.zip 檔案,并解壓在 wars 目錄下找到 flowable-ui.war 檔案
  • flowable zip 包 github 位址:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0
流程引擎之Flowable簡介
Step 2:執行 "java -jar flowable-ui.war" 指令啟動 Flowable UI
流程引擎之Flowable簡介
Step 3:通路 http://localhost:8080/flowable-ui/,并賬密(admin/test)登入
流程引擎之Flowable簡介
流程引擎之Flowable簡介

Flowable UI 登入後主要包括以下四個功能(圖如上):

  • 任務應用程式(Flowable Task):運作時任務應用,這個提供了啟動流程執行個體、編輯任務表單、完成任務,以及查詢流程執行個體與任務的功能。
  • 模組化器應用程式(Flowable Modeler):讓具有模組化權限的使用者可以建立流程模型、表單、選擇表與應用定義。
  • 管理者應用程式(Flowable Admin): 管理應用。讓具有管理者權限的使用者可以查詢流程、CMMN、APP、Form、DMN 及 Content 引擎,并提供了許多選項用于修改流程執行個體、任務、作業等。
  • 身份管理應用程式(Flowable IDM):為所有 Flowable UI 應用提供單點登入認證功能,并且為擁有 IDM 管理者權限的使用者提供了管理使用者、組與權限的功能。
Step 4:請假流程示例 demo
流程引擎之Flowable簡介

其中導入的 holiday.bpmn 如下(該流程檔案不能在 Flowable UI 上執行,隻做模組化示例使用):

<process id="holidayRequest" name="Holiday Request" isExecutable="true">

		<startEvent id="startEvent"/>
		<sequenceFlow sourceRef="startEvent" targetRef="approveTask"/>

		<userTask id="approveTask" name="Approve or reject request" flowable:candidateGroups="managers" />
		<sequenceFlow sourceRef="approveTask" targetRef="decision"/>

		<exclusiveGateway id="decision"/>
		<sequenceFlow sourceRef="decision" targetRef="externalSystemCall">
			<conditionExpression xsi:type="tFormalExpression">
				<![CDATA[
          ${approved}
        ]]>
			</conditionExpression>
		</sequenceFlow>
		<sequenceFlow  sourceRef="decision" targetRef="sendRejectionMail">
			<conditionExpression xsi:type="tFormalExpression">
				<![CDATA[
          ${!approved}
        ]]>
			</conditionExpression>
		</sequenceFlow>

		<serviceTask id="externalSystemCall" name="Enter holidays in external system"
					 flowable:class="com.flowable.zqh.ExternalDelegateApproved"/>
		<sequenceFlow sourceRef="externalSystemCall" targetRef="holidayApprovedTask"/>

		<userTask id="holidayApprovedTask" name="Holiday approved" flowable:assignee="${employee}"/>
		<sequenceFlow sourceRef="holidayApprovedTask" targetRef="approveEnd"/>

		<serviceTask id="sendRejectionMail" name="Send out rejection email"
					 flowable:class="com.flowable.zqh.SendRejectionEmail"/>
		<sequenceFlow sourceRef="sendRejectionMail" targetRef="rejectEnd"/>

		<endEvent id="approveEnd"/>

		<endEvent id="rejectEnd"/>
	</process>
           

2)Flowable demo

以請假流程作為 Flowable 基本使用示例(流程示例同 Flowable UI):

  • 請假流程檔案 holiday.bpmn 配置

同 Flowable UI 示例中的 holiday.bpmn。

  • 代碼示例

示例源碼參考 csdn 下載下傳位址:https://download.csdn.net/download/zhuqiuhui/87462589

流程引擎之Flowable簡介

3)Flowable 與 Spring 內建

spring boot 與 Flowable 內建比較簡單,引入以下依賴後,會自動注入 Flowable 相關核心類,直接在代碼中使用即可。更詳情的參考 Flowable 官方文檔說明:https://www.flowable.com/open-source/docs/bpmn/ch05a-Spring-Boot

<dependency>
  <groupId>org.flowable</groupId>
  <artifactId>flowable-spring-boot-starter</artifactId>
  <version>${flowable.version}</version>
</dependency>
           

4)流程引擎對比

Flowable 相對于其他流程引擎,優點如下:

  • 以 Flowable6.4.1版本為分水嶺,大力發展其商業版産品,開源版本維護不及時,部分功能已經不再開源版釋出,比如表單生成器(表單引擎)、曆史資料同步至其他資料源、ES等
  • 支援了流程、CMMN、APP、Form、DMN 及 Content 引擎
  • 支援異步執行器、動态腳本等
  • Flowable 啟動後會自動初始化 46 張資料表
  • ......

Flowable 整體架構

使用引擎 API 是與 Flowable 互動的最常見方式,核心類是 ProcessEngine,從 ProcessEngine 中可以擷取包含工作流/BPM方法的各種服務(與 Activiti5 類似,有興趣可進一步深入)。如下圖所示:

流程引擎之Flowable簡介

流程引擎系列文章

  • 流程引擎之發展史及對比總結:https://blog.csdn.net/zhuqiuhui/article/details/128986403
  • 流程引擎之KIE項目簡介:https://blog.csdn.net/zhuqiuhui/article/details/129035796
  • 流程引擎之jBPM簡介:https://blog.csdn.net/zhuqiuhui/article/details/129052162
  • 流程引擎之Activiti簡介:https://blog.csdn.net/zhuqiuhui/article/details/129107741
  • 流程引擎之Camunda簡介:https://blog.csdn.net/zhuqiuhui/article/details/129107897
  • 流程引擎之Flowable簡介:https://blog.csdn.net/zhuqiuhui/article/details/129109273
  • 流程引擎之compileflow簡介:https://blog.csdn.net/zhuqiuhui/article/details/129109391