關鍵詞:區(qū)塊鏈;元流程;跨域流程協(xié)作;鏈下鏈上協(xié)同
0 引言
工作流技術是復雜業(yè)務過程的計算機技術實現(xiàn),有效地提高了業(yè)務過程的智能化和規(guī)范性。隨著經(jīng)濟全球化以及業(yè)務過程管理等技術發(fā)展,越來越多的業(yè)務過程跨越了組織邊界。跨組織業(yè)務流程需要多方協(xié)作,不同利益方的參與使得業(yè)務流程運行的可信性面臨挑戰(zhàn)。
基于區(qū)塊鏈實現(xiàn)可信業(yè)務流程管理的一種典型設計方案如下,將一個業(yè)務流程模型通過技術方法轉換為智能合約,然后完全在區(qū)塊鏈平臺上執(zhí)行[1]。這種方案雖然安全性高,但實現(xiàn)代價大,成熟度低,且區(qū)塊鏈技術本身仍存在諸多性能問題。
針對上述問題,有一種基于事件驅動的完全分散式的業(yè)務流程協(xié)作方法,組織內(nèi)部業(yè)務活動可使用傳統(tǒng)業(yè)務流程引擎,如jBPM、Flowable等,在組織內(nèi)部自治執(zhí)行,組織間通過事件驅動機制實現(xiàn)業(yè)務協(xié)作,組織間的協(xié)作數(shù)據(jù)持久化到區(qū)塊鏈中,以備審計使用。作為一種輕量級的區(qū)塊鏈實現(xiàn)業(yè)務流程協(xié)作的方案,只將協(xié)作業(yè)務數(shù)據(jù)保存到區(qū)塊鏈上,使得區(qū)塊鏈能夠揚長避短,并且充分利用已有業(yè)務流程引擎的工作,重構代價小。但這種方法在具體實施時仍然存在業(yè)務流程缺乏合規(guī)性驗證、未考慮工作流實例數(shù)據(jù)的可擴展性存儲以及溯源、審計時的查詢性能問題。
借鑒上述輕量級區(qū)塊鏈架構的思路,設計了基于區(qū)塊鏈的工作流實例數(shù)據(jù)管理方案,綜合使用了加密、數(shù)字摘要等安全技術及數(shù)據(jù)鏈下鏈上協(xié)同存儲等優(yōu)化技術,保證了數(shù)據(jù)安全可信,克服了區(qū)塊鏈存儲擴展能力不足的問題。
1 相關工作
區(qū)塊鏈具有去中心化、去中介化、信息透明、無法篡改和安全等特點。區(qū)塊鏈系統(tǒng)可分為公有鏈、私有鏈和聯(lián)盟鏈。聯(lián)盟鏈系統(tǒng),如Hyperledger fabric[2],在數(shù)據(jù)管理上常采用基于通道方式的數(shù)據(jù)隔離機制對數(shù)據(jù)進行保護。
在區(qū)塊鏈技術與BPM集成方面,一種典型架構為,將整個業(yè)務流程邏輯封裝到智能合約中,使得業(yè)務流程執(zhí)行與區(qū)塊鏈緊密集成。為了降低實現(xiàn)難度,方法實現(xiàn)了轉換器組件,為每個流程實例生成一組相應的智能合約。Sturm[3]通過擁有一個處理選擇和并行結構的契約,開發(fā)了一種區(qū)塊鏈內(nèi)控制流管理的通用方法。區(qū)塊鏈的其他性能優(yōu)化工作還有可用性[4]等。
業(yè)務流程合規(guī)性檢驗分為基于模型的靜態(tài)驗證和運行時動態(tài)檢驗兩種方法?;谑录暮弦?guī)性驗證方面,張[5]遵循EPC規(guī)范構建業(yè)務流程模型,基于模型即可進行合規(guī)性驗證,但驗證規(guī)則集無法覆蓋所有的業(yè)務流程合規(guī)要求,且對有效性驗證不足。龔[6]則探討了運行時的合規(guī)性驗證機制,將合規(guī)性規(guī)則轉化為監(jiān)控模型,實現(xiàn)對業(yè)務過程執(zhí)行合規(guī)性狀態(tài)的實時監(jiān)控。
在區(qū)塊鏈性能優(yōu)化方面,Xu[7]著眼于區(qū)塊鏈質量和性能屬性,分類闡述了基于區(qū)塊鏈的系統(tǒng)的架構設計模式。也有一些研究數(shù)據(jù)存儲于鏈上的擴展性,如基于分片的分布式存儲方案。區(qū)塊鏈數(shù)據(jù)查詢優(yōu)化方面,索引和物化視圖[8]是提升區(qū)塊鏈查詢性能的兩種常用方法。
2 整體方案
與事件驅動的工作流協(xié)作執(zhí)行方法相比,通過符合BPMN建模規(guī)范的建模元素實現(xiàn)規(guī)范化的業(yè)務流程建模及流程實例運行,可解決流程規(guī)范化問題,同時流程執(zhí)行過程應該是分布式的,即實現(xiàn)工作流在自治域內(nèi)自主執(zhí)行,在自治域間協(xié)作運行。
規(guī)模較大的數(shù)據(jù)可采用鏈下存儲機制。鏈下存儲是一種將區(qū)塊體中數(shù)據(jù)內(nèi)容從原區(qū)塊體轉移到鏈下存儲系統(tǒng),如具有擴展能力的云儲存基礎設施,區(qū)塊體中僅存儲指向這些數(shù)據(jù)的“指針”和其他非數(shù)據(jù)信息,以解決區(qū)塊鏈存儲可擴展性問題的方法。
基于上述思路,結合相關工作的分析,采用了基于聯(lián)盟鏈的輕量級業(yè)務流程協(xié)作架構,設計了基于元流程與區(qū)塊鏈的跨域工作流分布式執(zhí)行方法。
2.1 元流程驅動的跨域業(yè)務流程分布式執(zhí)行
元流程驅動的跨域業(yè)務流程分布式執(zhí)行的主要過程,包括基于主流程的元流程構造、基于元流程的流程片段調度與部署以及流程片段的分布式協(xié)調執(zhí)行等。
為了實現(xiàn)上述過程,設計并實現(xiàn)了如圖1所示的流程分布式執(zhí)行模塊,由兩個核心部分組成:解析構造模塊和流程服務。前者直接交互于符合BPMN標準的業(yè)務流程模型,用于實現(xiàn)流程的解析,分割和組合,最終構造出元流程及相應的調度信息。解析構造模塊包括流程解析器、流程片段構造器、流程調度器三個部分?;谠鞒虒崿F(xiàn)工作流分布式調度的詳細過程可參考文獻[9]。
2.2 鏈下鏈上協(xié)同的工作流實例數(shù)據(jù)存儲
已有研究表明,鏈下鏈上協(xié)同存儲可以一定程度上解決區(qū)塊鏈存儲的擴展性問題,但鏈下數(shù)據(jù)一般存儲在非可信的平臺,需要相應的安全機制來保障鏈下數(shù)據(jù)的安全性。
圖2是工作流實例數(shù)據(jù)鏈下鏈上協(xié)同進行工作流實例數(shù)據(jù)管理的總體架構。
1)區(qū)塊鏈網(wǎng)絡由CA 證書中心、Endorser 背書節(jié)點、Leader記賬節(jié)點、Committer提交節(jié)點和Order排序節(jié)點等分布式節(jié)點構成,網(wǎng)絡上部署有工作流實例數(shù)據(jù)存取鏈碼。
2)聯(lián)盟盟主的流程服務包括元流程的執(zhí)行引擎以及流程監(jiān)控與審計模塊,實現(xiàn)流程調度和審計。提供了監(jiān)控數(shù)據(jù)中心承載鏈下工作流實例數(shù)據(jù)的持久化存儲。
3)聯(lián)盟成員的流程服務負責執(zhí)行本組織內(nèi)部業(yè)務流程,并將流程實例數(shù)據(jù)共享或保存到區(qū)塊鏈與監(jiān)控數(shù)據(jù)中心中。
3 案例驗證和分析
基于規(guī)范的流程建模可以解決事件驅動的跨域協(xié)作的規(guī)范性問題,元流程實現(xiàn)協(xié)作的方法正是基于此設計的,但元流程驅動的業(yè)務流程分布式執(zhí)行結果是否正確是該方法得以實際應用的前提條件,為此設計了仿真實驗,以驗證其正確性。在區(qū)塊鏈數(shù)據(jù)管理方面,使用了實際應用中的業(yè)務流程協(xié)作案例,驗證了鏈下鏈上存儲方案在流程審計中的有效性。
3.1 元流程驅動方法的正確性驗證
實驗首先仿真了一些分屬于不同自治域的基礎任務單元,并進行適當組合,再依據(jù)自治域邊界進行流程分割,得到1000個工作流模型作為樣例集。將這些模型應用元流程執(zhí)行引擎進行控制執(zhí)行,并驗證其正確性。其中某實例如圖3所示,該實例包括23個基礎任務單元。
為驗證元流程驅動方法的正確性,本實驗所有仿真實例流程都是實現(xiàn)一個累加器功能,實現(xiàn)對輸入數(shù)據(jù)N 的累加,所有預設的任務單元功能都是進行N++。最終結果顯示所有分布式執(zhí)行的仿真實例輸出的結果都與集中式執(zhí)行的輸出結果無異,驗證了元流程驅動方法的正確性。
3.2 區(qū)塊鏈數(shù)據(jù)管理與應用案例
以某筆記本電腦制造企業(yè)A 的生產(chǎn)制造流程為例。
3.2.1 案例描述
案例中,制造企業(yè)A、配件經(jīng)銷商、配件提供商以及物流企業(yè)形成了企業(yè)聯(lián)盟,其中企業(yè)A處于主導地位,既是聯(lián)盟成員,承擔了主要生產(chǎn)制造流程,又是聯(lián)盟盟主,提供元流程執(zhí)行環(huán)境、監(jiān)控審計等功能。
如果企業(yè)、配件代理商和配件提供商由于配件提供的型號、數(shù)量或完成時間發(fā)生了糾紛,則可借助于基于鏈下鏈上協(xié)同存儲的工作流實例數(shù)據(jù),實現(xiàn)工作流審計及流程溯源,明確具體責任方。假設企業(yè)A發(fā)起了如下采購請求:
假設企業(yè)A最終收到提供商B提供的芯片數(shù)量為95,芯片數(shù)量小于采購請求要求,發(fā)生業(yè)務糾紛,需要進行流程審計。筆記本電腦制造流程實例如圖4所示。
1)企業(yè)A和提供商B提供其工作流實例編號,流程監(jiān)控中心確認本次工作流運行實例編號;
2)通過確認的工作流實例編號,監(jiān)控中心從監(jiān)控數(shù)據(jù)中心查詢獲得本次業(yè)務流程協(xié)作的完整的工作流實例數(shù)據(jù)日志;
3)對上述敏感的協(xié)作業(yè)務數(shù)據(jù),由相關聯(lián)盟成員使用自己的私鑰對業(yè)務數(shù)據(jù)進行解密;
4)對解密后的數(shù)據(jù)進行數(shù)字摘要,將摘要結果與區(qū)塊鏈保存的相應工作流實例數(shù)據(jù)中的數(shù)字摘要進行比對。
5)將企業(yè)A、B、C解密的三份協(xié)作業(yè)務數(shù)據(jù)進行比對,以確認是哪個環(huán)節(jié)出現(xiàn)數(shù)據(jù)不一致,最終界定每個企業(yè)的具體責任。
3.2.2 案例分析
在上述業(yè)務流程審計案例中,鏈下鏈上協(xié)作存儲方案保證了數(shù)據(jù)安全可信,同時克服了區(qū)塊鏈存儲擴展能力不足的問題。具體分析如下:
1)安全性分析
某聯(lián)盟成員的工作流協(xié)作數(shù)據(jù)保存到云中心時采用非對稱加密存儲,其他聯(lián)盟成員和聯(lián)盟盟主,只有需要流程審計時,持有私鑰進行解密才能得到原始數(shù)據(jù)。
2)支持可信
聯(lián)盟成員在獲取到協(xié)作業(yè)務數(shù)據(jù)時,可通過與區(qū)塊鏈的摘要數(shù)據(jù)比對,確認收到的數(shù)據(jù)是真實的。
3)協(xié)作存儲的可擴展性
由于采用全副本機制,大量數(shù)據(jù)會導致區(qū)塊鏈網(wǎng)絡帶寬濫用,影響業(yè)務處理性能。本例采用的SHA-256摘要算法輸出的摘要結果為定長256位,與一般業(yè)務數(shù)據(jù)相比,數(shù)據(jù)尺寸小,從而可以支持更多數(shù)據(jù)存儲到區(qū)塊鏈網(wǎng)絡中。
4 結束語
不同利益方的參與使得跨域業(yè)務流程協(xié)作的可信性面臨挑戰(zhàn),將區(qū)塊鏈技術與BPM集成成為解決該問題的可能技術途徑。借鑒輕量級區(qū)塊鏈的設計思路,設計了基于元流程與區(qū)塊鏈的跨域業(yè)務流程協(xié)作方案,克服了已有工作在合規(guī)性驗證及工作流實例數(shù)據(jù)管理方面的不足。與基于事件的分散式流程協(xié)作相比,元流程通過符合BPMN規(guī)范的流程建模保障了規(guī)范性,設計了相應的功能模塊實現(xiàn)跨域業(yè)務流程的分布式執(zhí)行,流程實例數(shù)據(jù)通過區(qū)塊鏈鏈上鏈下協(xié)同機制實現(xiàn)數(shù)據(jù)的安全、可信和可擴展存儲。實驗驗證了元流程驅動流程分布式執(zhí)行方法的正確性以及基于區(qū)塊鏈溯源業(yè)務流程協(xié)作數(shù)據(jù)的有效性。