首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Fire Workflow 源碼深度解析 (一):核心模型元素與 WorkflowProcess 頂層架構

     編輯:Java 相關知識

Fire Workflow 國產開源工作流引擎,源碼分為 `FireflowEngine` (運行時服務) 與 `FireflowModel` (流程定義模型) 兩大模組。本系列從 `FireflowModel` 的 `org.fireflow.model` 套件切入,解析核心模型元素與頂層流程架構。

整體套件類圖

model 套件類圖

核心介面與基類

IWFElement - 工作流元素介面

定義所有流程元素的通用契約:

  • 識別屬性:`sn` (系統序號)、`id` (組合鍵:父ID.自身Name)、`name`、`displayName`、`description`
  • 關係導航:`getParent()`/`setParent()`、`getEventListeners()`
  • 擴展機制:`getExtendedAttributes()` 返回 `Map`

AbstractWFElement - 抽象基類實現

實作介面所有方法,重寫 `hashCode()`、`toString()` 提供預設行為。

IWFElement AbstractWFElement

Task - 工作流任務定義

任務類型常數:

  • `FORM` (人工任務)、`TOOL` (自動任務)、`SUBFLOW` (子流程)、`DUMMY` (保留)

循環執行策略:

  • `REDO`:重新執行 (Form 任務指派給上次操作者)
  • `SKIP`:迴路中跳過 (生命週期僅執行一次)
  • `NONE`:預設行為 (Form 任務重新指派)

可插拔擴展點:`taskInstanceCreator`、`taskInstanceRunner` (分 Form/Tool/Subflow)、`taskInstanceCompletionEvaluator` (分三型)。

Task 類別

WorkflowProcess - 流程頂層容器

流程定義的根元素,聚合所有子元素:

屬性集合包含元素類型
dataFieldsDataField (流程變量定義)
tasksTask (全域任務定義)
activitiesActivity (流程環節/步驟)
transitionsTransition (轉移)
loopsLoop (迴路)
synchronizersSynchronizer (同步器)
startNode / endNodesStartNode / EndNode

全域可插拔組件:`resourceManager`、`taskInstanceCreator`、各型 Runner 與 Evaluator。

核心查詢與驗證方法:`findWFElementById()`、`validate()`、`isReachable()`、`getReachableNodes()`、`getEnterableNodes()` 等。

WorkflowProcess

DataField - 流程資料欄位

對應運行時流程變量,支援類型:STRING、INTEGER、FLOAT、BOOLEAN、DATE、DATETIME、BLOB。含 `initialValue`、`dataPattern` (日期格式) 等屬性。

DataField

TaskRef - 任務引用

Activity 透過 `TaskRef` 引用全域 `Task` 定義,實現任務定義與流程環節分離複用。

TaskRef

架構設計總結

  1. 元素統一介面:`IWFElement` 確立所有模型元素共同契約,支援樹狀結構導航與擴展屬性
  2. 頂層容器聚合:`WorkflowProcess` 作為根聚合體,集中管理所有流程構成元素
  3. 任務定義與引用分離:`Task` 定義任務本質,`TaskRef` 在 Activity 中引用,支援跨流程複用
  4. 可插拔運行時策略:實例建立、執行、完成判斷皆定義介面,預設實現可覆寫

下一篇將深入 `org.fireflow.model.net` 套件,解析基於 Petri Net 的流程網路模型。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved