999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

工作流辦理人篩選規則引擎的設計與實現

2019-10-08 09:01:51胡昌平王平卞德志
軟件 2019年3期

胡昌平 王平 卞德志

摘? 要: 針對工作流在復雜業務應用場景中按照業務條件動態分配人工節點辦理人的需求,設計實現了一種工作流辦理人篩選規則引擎,對現有工作流引擎提供的人員變量接口進行擴展,通過執行運行期定義的規則,動態設置辦理人集合。該引擎分析了辦理人篩選規則基本構成元素,定義了篩選規則對象模型,給出了規則解析運算的算法邏輯,并且提供了規則的可視化編輯設計界面,降低運營人員操作難度,達到快速靈活分配辦理人的目的。該規則引擎已經結合開源Activiti工作流引擎在多個企業的實際應用并獲取良好的應用成果。

關鍵詞: 工作流;辦理人篩選;規則引擎;Activiti

【Abstract】: Aiming at the requirement of dynamically allocates users for workflow manual activity according to business conditions in complex business application scenarios, a screening rule engine of workflow handlers is designed and implemented, which extends the handler variable interface provided by the existing workflow engine, and dynamically sets up handlers by executing the rules defined at run-time. The engine analyses the main elements of the handlers screening rules, defines the object model of the screening rules, gives the logic of the rule analysis operation, and provides the visual editing and design interface of the rules, reduces the operation difficulty of operators, and achieves the purpose of fast and flexible allocation of handlers. The rule engine has been successfully applied in many enterprises by embedded into the open source workflow engine of Activiti.

【Key words】: Workflow; Handler screening; Rule engine; Activiti

0? 引言

人工處理節點是工作流系統中的一種重要活動節點類型,國內許多學者對流程引擎在不同領域的應用進行了研究[1-8],其中都涉及人工處理節點的使用。現有的工作流引擎,例如Activiti、JBPM等支持以角色分配、直接指定用戶、XML配置、變量綁定和監聽器方式指定辦理人。雖然這些方式可以滿足按照固定組織、角色、人員進行分配的需求,但是在一些復雜應用場景中,如果需要按照業務邏輯條件,動態分配不同的人員組合共同處理同一人工節點,依靠現有辦理人設置方式就難以實現了,只能在工作流事件監聽器接口中,以硬編碼方式實現辦理人分配邏輯,但是硬編碼方式實現業務邏輯,缺乏靈活性,操作難度大,需要開發人員編碼,這就給工作流系統運營實施工作帶來一定挑戰。

解決這個問題的思路是采用規則引擎在運行時動態解釋業務規則,執行篩選邏輯,避免硬編碼,例如文獻[9]給出了一種分布式規則引擎的實現方案,文獻[10]對智能化規則引擎的應用技術研究。但是通用化的規則引擎,要求運營人員掌握其規則語法,編寫規則腳本,并且進行調試,難度較大。因此,本文在分析抽象工作流辦理人篩選共性業務需求的基礎上, 建立統一規范的篩選規則對象模型,定義規則對象序列化格式,構建篩選規則引擎,實現基于模型的篩選規則解析運算,動態分配辦理人,同時基于模型設計實現了可視化規則編輯界面[11],降低運營人員操作難度,提高系統運維效率,達到快速靈活設置工作辦理人的目的。

1? 篩選規則分析

1.1? 基本規則分析

1.2? 規則邏輯模型

根據以上分析,可以建立以基本規則1)為基礎的辦理篩選規則邏輯模型,首先定義圖1所示的過濾表達式。

過濾表達式以全體人員集合為輸入,輸出返回按照表達式進行處理后的人員集合。完整的篩選規則是對各條過濾表達式運算的結果進一步做交、并或差集運算,可以用表達式樹的形式建立完整的過濾規則,如圖2所示。

1.3? 業務條件

過濾表達式中業務條件是由業務數據、組織數據、流程上下文數據等形成的布爾邏輯表達式,由業務邏輯解析引擎執行,用于判斷是否需要對指定范圍人員進行篩選。管理管可以先使用條件構造器編輯業務條件表達式保存到系統中,在創建篩選規則時選用。

1.4? 人員范圍

在過濾表達式中,可以為每條過濾表達式選擇一項預設的人員范圍,預設人員范圍包括按照用戶個人屬性、角色、所屬部門、關聯業務數據和相關流程節點等劃定的人員范圍,也包括全體人員集合和空集。過濾表達式計算時,將根據業務條件是否滿足直接返回指定范圍的人員集合,或者返回從全體人員中排除指定人員范圍后的剩余人員集合。創建篩選規則時,可選預設人員范圍,以便構成過濾表達式。人員范圍不限于組織機構、角色等常見的幾種,也可以由應用系統的數據指定,例如在項目管理系統中,不同項目團隊成員也是一種人員范圍。

2? 引擎設計

2.1? 邏輯架構設計

篩選規則引擎由規則設計器、規則解析運算器兩部分組成,規則設計器提供用戶設計界面,生成規則文本。工作流系統通過引擎接口獲取辦理人集合,觸發規則解析運算器加載規則文本,執行規則解析運算邏輯,整個引擎架構如圖3所示。

2.2? 規則對象模型

辦理人篩選規則的靜態對象結構模型采用組合設計模式設計,核心類與接口如圖4所示。

IRule是一個完整的規則表達式,Calculate方法接收流程上下文參數執行規則計算,實現該接口的SetExpression類表示二元集合運算,Left和Right通過遞歸引用IRule,形成了參與集合運算的兩個子表達式,SetOperator屬性表示交并集運算符,對Left和Right關聯的兩個子表達式的結果集進行交集或并集運算。

FilterExpression是過濾表達式,同樣實現了IRule接口,作為規則對象結構樹中葉子節點,其屬性包含了過濾表達式的所有元素。

IBizCondition接口表示業務條件表達式,靜態結構與規則表達式類似,呈樹形結構,BoolExpression作為二元邏輯運算表達式,可以對Left和Right關聯的子條件式進行與或運算。ConditonExpression類表示數據對比條件,可以指定流程參數、業務數據、用戶數據等與固定常量或其他參數數據進行比較。

人員范圍過濾器與過濾表達式對象之間采用橋接模式設計,FilterExpression通過IScopeFilter接口調用人員過濾器的范圍過濾方法,該接口將人員范圍過濾方法的實現與FilterExpression分離,基于接口實現不同的人員范圍過濾機制,同時提供了擴展機制,IScopeFilter實現類對象可以通過IOC框架注入過濾表達式對象中。

3? 引擎實現

3.1? 可視化規則設計器

可視化設計器包括業務條件設計界面和辦理人過濾規則設計界面。業務條件設計界面可以使用業務數據條件表達式、SQL、代碼和組合方式快速構建多條業務條件。業務條件設計界面如圖5所示。

辦理人過濾規則設計器為管理員提供了辦理人篩選規則的配置編輯工具界面。設計器根據管理員輸入,生成規則的客戶端對象模型,進行序列化后保存到流程配置文件中。規則編輯器界面如圖6所示。

3.2? 規則表達式序列化

規則對象模型生成后需要將其序列化,以便保存到流程配置文件或者發送前端渲染設計器頁面。

常用序列化方式有XML和Json方式,考慮到序列化采用Json格式具備易于讀寫,格式壓縮后占帶寬小等優點,客戶端JavaScript可以簡單的通過eval()函數進行Json數據的讀取,同時也支持多種服務器端語言,便于服務器端的解析,因此采用Json序列化方式轉化規則對象為文本保存到流程配置文件中。

3.3? 規則運算

流程引擎觸發篩選規則計算,規則組件首先加載規則JSON文本,反序列化成為IRuleExpression接口類型表示的規則對象,然后通過調用其Calculate方法,對規則對象樹左右分支逐層向下遍歷訪問,直到計算出葉子節點過濾表達式的結果,再逐層向上做交并運算,最后得出規則過濾結果。遍歷計算邏輯主要在SetExpression類和FilterExpression類的Calculate接口方法中實現,關鍵代碼如下:

3.4? 流程引擎掛載

篩選引擎可以通過Activiti工作流引擎提供的TaskService().setAssignee(taskId,userId)接口,在流程啟動后掛載到工作流中執行。當執行到指定步驟時,流程引擎觸發篩選規則引擎執行,獲取到辦理人,然后通過接口設置辦理人執行流程。

4? 結論

本文設計實現的工作流辦理人篩選引擎,可以動態靈活設置工作流的辦理規則,解決了硬編碼復雜業務規則導致系統僵硬的問題, 滿足了企業工作流應用中的復雜業務場景的需求,降低了工作流管理人員的操作復雜度,提升流程應用管理的效率,結合Activiti工作流引擎在多個實際企業應用項目中實際應用并取得了良好的效果。

參考文獻

[1]鞏思漢. 基于工作流的應急預案管理系統的設計與實現[J].軟件, 2015, 36(11):89-91.

[2]曹月恬, 詹舒波. 基于工作流的計算機輔助電話訪問系統[J]. 軟件, 2016, 37 (02): 42-45.

[3]顏樂鳴. 基于工作流的軟件測試過程模型研究[J]. 軟件, 2018, 39(5): 160-165.

[4]楊朝霞. 基于RBAC的學生科研項目管理系統工作流模型分析與設計[J]. 軟件, 2012, 33 (4): 13-15.

[5]崔歡歡, 黃偉, 舒江波. 基于規則引擎的自適應工資系統設計與實現[J]. 軟件導刊, 2018, 17(6): 102-105.

[6]朱曉輝, 馬晶, 王焱. 基于規則和工作流引擎的保險電子商務系統研究[J]. 現代電子技術, 2016, 39(19): 157-160, 164.

[7]劉恩海, 李甜, 陳媛媛. 跨部門的工作流引擎模式研究[J]. 計算機應用與軟件, 2018, 35(6): 76-82.

[8]安婧. 基于工作流引擎的辦公自動化管理系統的設計[J]. 微型電腦應用, 2018, 34(7): 19-21.

[9]朱思遠, 張雷. 一種分布式規則引擎的實現方法[J]. 軟件, 2015, 36(12): 158-161.

[10]趙志偉. 智能化規則引擎技術研究[J]. 軟件, 2018, 39(8): 65-69.

[11]歐陽廣津, 武彤. 基于JBPM的在線流程設計器的研究與應用[J]. 計算機技術與發展, 2018, 28(7): 29-33.

主站蜘蛛池模板: Aⅴ无码专区在线观看| AV老司机AV天堂| 成人欧美日韩| 黄色网在线| 亚洲精品在线91| 久久人人97超碰人人澡爱香蕉 | 国产精品色婷婷在线观看| 91在线丝袜| 凹凸国产熟女精品视频| 欧美精品亚洲精品日韩专区va| 激情综合婷婷丁香五月尤物| 一区二区影院| 国产十八禁在线观看免费| 免费观看欧美性一级| 国产精品亚洲片在线va| 欧美日韩成人| 国产爽爽视频| 伊人久久青草青青综合| 欧美yw精品日本国产精品| 中文字幕久久波多野结衣| 免费高清自慰一区二区三区| 精品久久国产综合精麻豆| 婷婷五月在线| 国产在线精品人成导航| 无码在线激情片| 国产成人综合日韩精品无码首页| 国产在线视频欧美亚综合| 99人体免费视频| 亚洲男人在线天堂| 97久久精品人人| 国产精品嫩草影院av| 美女毛片在线| 在线观看免费黄色网址| 伊人久久久久久久久久| 婷婷久久综合九色综合88| 免费国产无遮挡又黄又爽| 国产一区二区色淫影院| 精品久久久无码专区中文字幕| 好吊妞欧美视频免费| 婷婷午夜天| 伊人网址在线| 欧美特级AAAAAA视频免费观看| 色爽网免费视频| 亚洲国产精品一区二区第一页免| 亚洲成a人在线播放www| 国产精品第| 超碰精品无码一区二区| 54pao国产成人免费视频| 四虎亚洲国产成人久久精品| 午夜视频免费一区二区在线看| 国产麻豆精品手机在线观看| 一本一道波多野结衣一区二区 | 亚洲国产成人自拍| 久久精品人人做人人爽电影蜜月 | 97综合久久| 国内丰满少妇猛烈精品播 | 免费国产好深啊好涨好硬视频| 91久草视频| 久久99国产精品成人欧美| 国产三区二区| 伊人久久精品无码麻豆精品| 亚洲欧洲自拍拍偷午夜色| 国产精品不卡片视频免费观看| 亚洲无码精品在线播放| av色爱 天堂网| 一级全免费视频播放| 日韩区欧美区| 伊人色综合久久天天| 丁香六月激情综合| 97se亚洲综合不卡| 国产精品原创不卡在线| 亚洲成人一区二区三区| 伊人91视频| 国产成人亚洲毛片| 波多野结衣的av一区二区三区| 中文字幕一区二区人妻电影| 99精品免费在线| 人妖无码第一页| 黄色网页在线播放| 人妖无码第一页| 日本一区中文字幕最新在线| 热热久久狠狠偷偷色男同|