什么是后端表達式?
在 Flowable 中,后端表達式是一種強大的工具,用于在流程、案例或決策表執行期間動態獲取或設置變量。它還能實現自定義邏輯,或將復雜邏輯委托……
后端表達式在 Flowable 的后端運行,無法訪問前端數據,但在 Flowable Design 中,你可以通過帶有 ?? 閃電圖標的字段輕松使用它們。Flowable 采用統一的表達式語言(UEL),以 ${...}
格式書寫,語法簡單且功能豐富。
表達式類型
后端表達式分為兩種:
- 值表達式:返回一個值,如布爾、字符串或數字。例如:
${variable.property}
。 - 方法表達式:調用方法,可帶參數。例如:
${bean.setPropertyValue('newValue')}
。
任何暴露為 Spring Bean 的服務都可以在表達式中使用,極大擴展了靈活性。
核心功能與關鍵字
Flowable 支持上下文相關的對象,如 root
(流程或案例實例的頂部對象)和 parent
(上層對象)。在 BPMN 中,你還可以使用 execution
(當前執行路徑)、task
(當前任務)以及 authenticatedUserId
(當前用戶 ID)。CMMN 則支持 caseInstance
和 planItemInstance
。
常用屬性示例
- 流程實例:
${root.businessKey}
獲取業務鍵。 - 案例實例:
${parent.name}
獲取案例名稱。 - 定義:
${definition.version}
獲取模型版本。
實用函數
Flowable 提供了豐富的內置函數,簡化變量操作、用戶分配和數據處理:
- 變量操作:如
${var:getOrDefault(varName, defaultValue)}
獲取變量或默認值。 - 流程分配:如
${bpmn:setAssignee(processInstanceId, userId)}
設置任務受理人。 - 字符串處理:如
${flwStringUtils.toLowerCase(text)}
轉換小寫。 - 日期時間:如
${flwTimeUtils.now()}
獲取當前時間。 - JSON 處理:如
${json:array()}
創建空 JSON 數組。
實際應用場景
假設你有一個流程需要根據部門動態分配任務。通過表達式 ${departmentResolver.getAssignee(execution)}
,你可以調用自定義的 Spring Bean,根據部門 ID 查找成員并設置任務受理人。這樣,流程就能靈活適應不同場景。
自定義表達式
想讓表達式更強大?Flowable 支持通過 Spring Bean 或自定義 ELResolver 擴展功能。例如,你可以創建一個解析器,將 ${departmentAssignee}
直接映射到部門受理人,簡化流程定義。
為什么選擇 Flowable?
Flowable 的后端表達式讓流程自動化更智能、更靈活。無論是動態任務分配還是復雜邏輯處理,它都能輕松應對。
想深入了解?訪問 Flowable中文文檔 查看完整文檔和示例,解鎖更多可能性!