現流行AI工作流引擎技術方案與實現方式調研
n8n
前端技術棧
- 核心流程圖庫:Vue Flow
- 圖形佈局引擎:Dagre
-
拖拽功能:Vuedraggable
n8n 的流程圖繪製技術棧是:
Vue Flow(核心) + Dagre(佈局) + Vuedraggable(拖拽) + Vue 3 Composition API(架構)
後端技術棧
後端代碼模塊化梳理:https://www.processon.com/v/685b72107dbaf842a9ee9b54?cid=685b...
數據庫梳理:https://www.processon.com/v/685ba3a83a444c5346fb296c?cid=685b...
核心組件:
- WorkflowService:流程 CRUD 操作
- ActiveWorkflowManager:流程激活/停用管理
- WorkflowRunner:流程執行管理
- NodeTypes:節點類型管理
數據庫支持:
- SQLite(開發環境)
- PostgreSQL(生產環境推薦)
- MySQL/MariaDB(生產環境支持)
技術特點:
- 基於 TypeORM 的 ORM 框架
- Repository 模式數據訪問
- 事件驅動的架構設計
- 依賴注入的模塊化設計
- 事務管理確保數據一致性
n8n與BPMN引擎對比
Dify
前端技術棧
後端技術棧
後端代碼模塊梳理:https://www.processon.com/v/685b966e74aa236c0c49b6b1?cid=685b...
核心需求分析
- 可視化流程繪製界面 (Frontend):用户能夠通過拖拽節點、連接線、配置節點屬性來設計工作流程。
- 流程定義與存儲 (Backend/Persistence):將繪製的流程圖轉化為可執行的定義(如JSON、XML或DSL),並持久化存儲。
- 流程引擎 (Backend Core):能夠解析流程定義,驅動流程實例的執行,管理流程狀態、任務分配、條件判斷、併發、循環等複雜邏輯。
-
任務執行與集成 (Backend/Integration):流程中的節點能夠觸發具體的業務邏輯,例如:
- 調用知識庫的API(查詢、創建、更新知識)
- 觸發外部服務(發送通知、調用其他微服務)
- 執行自定義代碼片段
- 涉及人工審批/任務
- 流程實例管理與監控 (Backend/Frontend):能夠查看流程實例的運行狀態、歷史記錄、異常信息。
- 用户和權限管理:與Spring Boot知識庫系統的用户體系集成。
技術選型方案
1. 前端可視化流程繪製(核心難點之一)
這是實現“繪製”功能的關鍵,需要一個強大的流程圖庫。
-
推薦方案:基於成熟的圖繪製庫 + 自定義開發
-
bpmn.js / dmn.js / cmmn-js (Camunda生態): 如果你後端計劃使用Camunda或Flowable,那麼前端直接使用它們的配套庫是最自然的選擇。它們提供了非常專業的BPMN 2.0、DMN、CMMN繪圖能力,功能強大且符合標準。
- 優點:高度專業,功能完善,符合行業標準,與後端Camunda/Flowable無縫集成。
- 缺點:學習曲線可能較陡峭,主要圍繞BPMN標準,如果你的流程並非嚴格的BPMN,可能需要自定義擴展。
-
GoJS / JointJS / mxGraph (draw.io): 強大的通用圖形庫,提供了豐富的功能(拖拽、連線、節點、縮放等)。你需要在此基礎上自行構建流程節點、屬性面板和交互邏輯。
- 優點:高度靈活,可定製性強,不綁定特定後端或標準。
- 缺點:開發量大,需要從零開始設計節點類型、屬性配置、數據結構與後端流程定義的映射關係。
-
X6 (AntV / G6): 阿里巴巴AntV團隊的圖可視化引擎,專注於流程圖、腦圖、拓撲圖等。提供了豐富的組件和交互。
- 優點:國產,社區活躍,文檔豐富,性能良好,更適合國內開發習慣。
- 缺點:仍需大量自定義開發以實現流程編排的特定功能。
-
ProFlow (Ant Design Pro): 如果你的前端使用React和Ant Design,ProFlow提供了一個開箱即用的流程圖組件,可以大大減少開發量。
- 優點:基於React,快速構建,與Ant Design生態集成。
- 缺點:通用性不如GoJS等,可能在深度定製上有限制。
-
-
數據格式選擇:前端繪製的流程圖需要轉換為後端能夠識別和執行的數據格式。
- BPMN XML:如果使用Camunda/Flowable,這是標準格式。
- JSON Schema:自定義的JSON結構,可以靈活定義節點類型、屬性和連接關係,適合自研或簡化流程模型。Dify和n8n很可能使用自定義的JSON格式。
2. 後端流程引擎(核心驅動力)
這是實現“編排”和“自動化”效果的核心。Spring Boot應用需要集成一個流程引擎來管理流程的生命週期。
-
推薦方案1:嵌入式BPMN引擎 (Camunda / Flowable)
-
Camunda BPM:
-
優點:
- 成熟穩定:企業級,功能強大,經過廣泛驗證。
- 標準支持:原生支持BPMN 2.0、CMMN、DMN,符合行業標準。
- 易於集成Spring Boot:Camunda提供了
camunda-bpm-spring-boot-starter,可以非常方便地將流程引擎嵌入到Spring Boot應用中,自動配置數據源、REST API等。 - 可視化工具:配套的Camunda Modeler和Web Apps(Cockpit, Tasklist)提供強大的管理和監控能力。
- 活躍社區與文檔:豐富的資料和社區支持。
- 缺點:可能略重,如果你的流程非常簡單,BPMN標準可能顯得有些複雜。但考慮到要實現“複雜流程”和“自動化”,它的強大是值得的。
-
實現思路:
- 在Maven/Gradle中引入Camunda Spring Boot Starter依賴。
- 流程定義文件(
.bpmn)放在src/main/resources/processes目錄下。 - 通過
RuntimeService,TaskService等Camunda API與流程進行交互。 - 實現
JavaDelegate來執行業務邏輯(如調用知識庫服務)。 - 前端使用
bpmn.js進行繪製,然後將BPMN XML提交給Spring Boot後端進行部署。
-
-
Flowable:
- 優點:與Camunda類似,都是Activiti的分支,輕量級,性能好,也很好地支持Spring Boot集成。在某些方面可能比Camunda更輕量級一些。
- 缺點:功能上略遜於Camunda,但對多數場景已足夠。
- 實現思路:與Camunda類似。
-
-
推薦方案2:自研輕量級引擎 (JSON/DSL解析)
-
優點:
- 極致靈活:完全按照自己的需求定義流程模型和執行邏輯。
- 輕量級:只包含你需要的功能,沒有額外負擔。
-
缺點:
- 開發量巨大:需要自行實現狀態機、任務調度、事件處理、併發控制、錯誤重試、持久化、版本管理等核心功能,難度極高,且容易出現bug。
- 缺乏標準與生態:沒有成熟的可視化工具和通用集成方案。
- 維護成本高:需要長期投入維護和功能迭代。
- 適合場景:除非你的流程需求非常特殊且簡單,或者你有足夠的開發資源和時間,否則不推薦自研核心引擎。Dify和n8n雖然是“自研”,但它們是專門為此而生的產品,投入了大量精力。
-
-
推薦方案3:混合模式 (適用於AI原生流程)
- 核心邏輯:使用Spring Boot業務邏輯處理,將複雜決策和AI能力通過OpenAPI/REST API暴露。
-
流程編排:使用一個更高級的編排器來調用這些API。
- Dify (如果可以嵌入或作為獨立服務): 如果Dify的後端服務可以作為獨立組件運行並通過API與你的知識庫系統交互,那麼可以考慮使用它來專門處理AI相關的流程。
-
LangChain / Semantic Kernel: 如果流程更多是基於LLM的Agentic工作流,可以在Spring Boot中集成LangChain4j (Java版本) 或Semantic Kernel (Java版本)。它們提供了Agent、工具調用、RAG等能力,可以用來構建AI驅動的複雜邏輯。
- 優點:深度融合AI能力,構建Agentic工作流更方便。
- 缺點:不適用於傳統的業務流程(如審批、定時任務),更側重於LLM的編排。
我的建議:對於Spring Boot集成和實現類似“釘釘流程自動化”的通用流程編排,強烈推薦使用 Camunda BPM 作為後端流程引擎。
3. 數據持久化
- 選擇:流程引擎通常需要數據庫來存儲流程定義、流程實例狀態、歷史數據、任務信息等。
- Camunda/Flowable:支持主流關係型數據庫,如 MySQL, PostgreSQL, Oracle, SQL Server。你可以直接使用知識庫系統已有的數據庫,或者為流程引擎單獨配置一個數據庫。
4. 與Spring Boot知識庫系統集成
-
Service Tasks / Delegates:在BPMN流程中,你可以定義“服務任務”(Service Task),它會調用Spring Boot應用中的Java類(實現JavaDelegate接口)。在這些Delegate中,你可以注入Spring Bean,直接調用知識庫系統的Service層或Repository層,執行:
- 知識的創建、查詢、更新、刪除。
- 用户權限判斷。
- 發送通知(郵件、短信、釘釘Webhook)。
- 調用外部API。
-
User Tasks / 任務管理:對於需要人工處理的任務(如知識審批),流程引擎會創建“用户任務”(User Task)。
- 前端展示:你需要開發一個前端頁面來查詢並展示用户的待辦任務列表,以及任務詳情和處理表單。
- 後端API:Spring Boot提供API供前端查詢任務(通過Camunda REST API或自定義Service),處理任務(完成、駁回等)。
- 事件監聽器:流程引擎提供了豐富的事件(如流程啓動、任務完成、流程結束等),你可以註冊監聽器,在這些事件發生時觸發知識庫系統的特定邏輯。
- REST API:Camunda自帶一套REST API,可以直接通過HTTP請求啓動流程、查詢任務、完成任務等。你的Spring Boot Controller可以直接調用這些API,或者封裝自己的業務API來調用Camunda服務。
5. 部署與擴展性
- 單體應用:最簡單的部署方式,流程引擎和知識庫系統打包在一個Spring Boot Jar中。
-
微服務:如果你的知識庫系統已經是微服務架構,可以將流程引擎作為一個獨立的微服務(workflow-service),通過HTTP/消息隊列與知識庫的其他微服務交互。這種情況下,Spring Boot集成Camunda也是非常合適的。
- Camunda 8 (Zeebe):如果你對雲原生、高吞吐量、事件驅動的微服務編排有需求,可以考慮Camunda 8 (Zeebe)。它是一個獨立的、可擴展的微服務,通過gRPC與客户端交互。但這會引入額外的運維複雜性。
實施步驟概要
- 確定前端技術棧:根據你的前端框架(React, Vue, Angular)和對BPMN標準遵守程度的考量,選擇合適的繪圖庫(如
bpmn.js或X6+自定義)。 -
集成後端流程引擎:
- 在Spring Boot項目中添加Camunda BPM Spring Boot Starter依賴。
- 配置數據庫連接。
- 創建一個簡單的BPMN流程(例如,一個知識審批流程:發起 -> 審批 -> 發佈/駁回)。
-
設計流程與業務邏輯映射:
- 將知識庫中的具體業務操作映射為BPMN中的服務任務。
- 為人工審批等操作設計用户任務。
-
實現
JavaDelegate和Service:- 編寫
JavaDelegate類,在其中注入知識庫的業務Service,執行CRUD操作、調用通知服務等。 - 編寫Controller/Service層,封裝啓動流程、查詢待辦、完成任務的API。
- 編寫
-
構建前端界面:
- 流程設計器:集成前端繪圖庫,實現流程的繪製、保存(將BPMN XML提交給後端)。
- 流程列表/詳情:展示已部署的流程定義。
- 待辦任務列表:查詢並展示當前用户的待辦任務。
- 任務處理表單:根據任務類型動態生成表單,供用户完成任務。
- 流程實例監控:展示正在運行的流程實例及其當前狀態、歷史。
- 測試與部署:全面測試流程的各個環節,確保業務邏輯和流程執行的正確性。