天天看點

流程引擎之compileflow簡介

背景

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代碼并預覽,比較清楚看到流程内容。

流程引擎之compileflow簡介

另外,自動節點關聯指定類方法界面如下:

流程引擎之compileflow簡介
流程啟動
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簡介

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