背景
compileflow 是一個非常輕量、高性能、可內建、可擴充的流程引擎。compileflow Process 引擎是淘寶工作流 TBBPM 引擎之一,是專注于純記憶體執行,無狀态的流程引擎,通過将流程檔案轉換生成 java 代碼編譯執行,簡潔高效。目前是阿裡業務中台交易等多個核心系統的流程引擎。compileflow能讓開發人員通過流程編輯器設計自己的業務流程,将複雜的業務邏輯可視化,為業務設計人員與開發工程師架起了一座橋梁。
- compileflow github 位址:https://github.com/alibaba/compileflow
- Idea插件設計器:https://github.com/alibaba/compileflow-idea-designer
compileflow 特性
- 高性能:通過将流程檔案轉換生成java代碼編譯執行,簡潔高效。
- 豐富的應用場景:在阿裡巴巴中台解決方案中廣泛使用,支撐了導購、交易、履約、資金等多個業務場景。
- 可內建:輕量、簡潔的設計使得可以極其友善地內建到各個解決方案和業務場景中。
- 完善的插件支援:流程設計目前有IntelliJ IDEA、Eclipse插件支援,可以在流程設計中實時動态生成java代碼并預覽,所見即所得。
- 支援流程設計圖導出svg檔案和單元測試代碼。
compileflow 使用
1)compileflow demo 使用示例
compileflow 官方 demo 項目中有一個 ktv 唱歌的例子,如果價格大于等于300的話打九折,否則不打折(demo源碼位址:https://github.com/compileflow/compileflow-demo)。示例如下:
maven 依賴
<dependency>
<groupId>com.alibaba.compileflow</groupId>
<artifactId>compileflow</artifactId>
<version>1.2.0</version>
</dependency>
compileflow-designer 使用
compileflow-designer 是 compileflow 開放的流程設計插件,可直接在上面編輯流程檔案,同時可實時動态生成java代碼并預覽,比較清楚看到流程内容。
另外,自動節點關聯指定類方法界面如下:
流程啟動
public void run() {
//code在bpm檔案中定義
String code = "bpm.ktvExample";
//執行流程的入參
Map<String, Object> context = new HashMap<>();
List<String> pList = new ArrayList<>();
pList.add("wuxiang");
pList.add("yusu");
pList.add("xugong");
pList.add("fandu");
context.put("pList", pList);
try {
ProcessEngine processEngine = ProcessEngineFactory.getProcessEngine();
Map<String, Object> result = processEngine.start(code, context);
System.out.println(result.get("price"));
} catch (Exception e) {
e.printStackTrace();
}
}
2)流程引擎對比
相對于其他流程引擎,compileflow 具有以下優點:
- compileflow 極其容易上手,降低工作流學習的難度
- compileflow 專注于純記憶體執行,無狀态的流程引擎,更偏向于代碼流程編排,即編排引擎
compileflow 标簽
compileflow 原生隻支援淘寶 BPM 規範,為相容 BPMN 2.0 規範,做了一定适配,但僅支援部分 BPMN 2.0 元素,如需其他元素支援,可在原來基礎上擴充。
- 原始淘寶BPM規範詳細說明:https://github.com/alibaba/compileflow/wiki/%E5%8D%8F%E8%AE%AE%E8%AF%A6%E8%A7%A3
compileflow 整體架構
compileflow 運作階段如下:
compileflow 定義了一套協定可以解析 xml 檔案,并生成 java 類,再編譯成 class 檔案,加載記憶體後反射生成對象緩存起來,等引擎需要執行指定的 xml 流程時就會調用該對象。
流程引擎系列文章
- 流程引擎之發展史及對比總結: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