新四季網

工作流系統實現流程事務和業務事務完整性的系統結構及方法

2023-05-08 13:23:31 2

專利名稱:工作流系統實現流程事務和業務事務完整性的系統結構及方法
技術領域:
本發明涉及計算機軟體領域,特別涉及事務型處理系統的應用技術領域,具體是指一種工作流系統中實現流程事務和業務事務完整性的系統結構及其方法。
背景技術:
事務是設計與編制高可靠性軟體系統的最重要的概念。事務用以解決數據的並發 訪問和出錯恢復問題。事務通常指一組對於物理的或者抽象的應用狀態的操作組成的集 合。事務與普通的程序操作的最大區別是它具有的事務特性,即原子性、一致性、分離性和 持久性。事務特性的提出主要是為了提高資料庫的出錯恢復能力和資料庫系統的可靠性。事務的概念來自於資料庫研究領域,主要是為了實現數據在操作中的一致性。與 此相類似,工作流也需要引入相應的事務概念來保證工作流數據在執行過程中的正確性。 從實際應用的角度來看,分布式事務處理功能對於工作流系統而言是必不可少的。事實上, 工作流也可以看成是一系列有序操作的集合,只不過這些操作的對象具有更廣的內涵,並 不僅僅限於資料庫中的數據。因此,工作流也同樣具有事務特性。工作流系統中具有事務特性的場景包括工作流中的某一活動實例對用戶數據進 行寫操作時不允許其它活動實例同時對該數據進行有關的讀寫操作;當一個工作流過程在 執行到某一活動時被迫取消,那麼在這一活動之前已經完成的活動所造成的影響也應該盡 可能取消,尤其是應該把被改動的數據恢復到過程執行前的狀態;一個包含正在執行的工 作流過程的業務處理邏輯的執行序列在當工作流過程執行時出錯時需要一併取消之前的 業務處理邏輯的操作結果等。要處理上述情況需要在工作流管理系統中引入事務概念和相 應的事務處理方法,但是工作流具有更複雜的操作、更廣泛的分布性以及更多的異構性,工 作流的事務處理要比資料庫中的事務處理複雜很多,使得工作流事務的完整性、一致性無 法得到保證。這種複雜性還體現在與業務事務的協調機制上。如何與業務事務相互通信和協調 使得工作流系統中的事務不受業務事務的影響、或將工作流系統中的事務與業務事務聯合 在一起,這些協調行為都是工作流系統中事務複雜性的體現。目前工作流系統中的事務處 理沒有一個標準的解決方案和規則,因此成為工作流系統發展的障礙。

發明內容
本發明的目的是克服了上述現有技術中的缺點,提供一種能夠統一的接口環境和 簡化的操作接口、能夠跨越不同類型的資料庫事務、使用快捷方便、運行效率較高、系統性 能穩定可靠、適用範圍較為廣泛的工作流系統實現流程事務和業務事務完整性的系統結構 及方法。為了實現上述的目的,本發明的工作流系統實現流程事務和業務事務完整性的系 統結構及方法如下
該工作流系統中實現流程事務和業務事務完整性的系統結構,其主要特點是,所述的系統結構包括入口事務協調器,進行事務環境處理,並判斷執行啟用事務分段操作;引擎活動調度器,與所述的入口事務協調器相連接,進行活動應用程式接口(API) 模塊的調度和執行;分段事務協調器,與所述的引擎活動調度器相連接,啟動新的事務上下文,對外部 事務環境進行分割,並進行工作流系統數據的提交和回滾操作;出口事務協調器,與所述的分段事務協調器相連接,根據需要提交工作流和業務 數據,並恢復外部事務環境。該基於上述的系統結構實現工作流系統中流程事務和業務事務完整性的方法,其 主要特點是,所述的方法包括以下步驟(1)所述的工作流系統進行初始化操作;(2)判斷與該工作流系統所連接的用戶業務系統的業務操作請求所對應的業務操 作所執行的工作流系統應用程式接口是否為完成活動的應用程式接口;(3)如果是,則調用所述的入口事務協調器進行事務環境處理;(4)工作流系統中的業務操作線程進入該入口事務協調器,將業務操作中的當前 會話中的用戶信息傳遞給工作流系統的會話句柄,並且保存到當前線程上下文環境中;(5)所述的入口事務協調器進行啟用事務分段操作的判斷執行;(6)所述的業務操作線程調用所述的引擎活動調度器,獲取業務流程實例鎖並鎖 定當前流程實例;(7)所述的引擎活動調度器調用引擎活動調度代理器執行完成活動的應用程式接 Π ;(8)所述的引擎活動調度器啟動後繼活動,並繼續執行該後繼活動;(9)所述的業務操作線程調用所述的出口事務協調器提交工作流和業務數據;(10)將線程上下文環境恢復為調用該入口事務協調器之前的線程上下文環境;(11)所述的用戶業務系統調用的完成活動應用程式接口在正常執行完畢後調用 堆棧恢復到執行業務操作的後續方法,繼續執行後繼業務操作;(12)如果所述的後繼業務操作正常執行到業務事務的提交操作,則通知所述的分 段事務協調器執行工作流系統數據的提交操作,並結束;(13)如果所述的後繼業務操作執行出錯並且執行到業務事務的回滾操作,則通知 所述的分段事務協調器執行工作流系統數據的回滾操作,並結束。該實現工作流系統中流程事務和業務事務完整性的方法中的工作流系統進行初 始化操作,包括以下步驟(21)實例化工作流日誌系統;(22)加載工作流配置文件;(23)加載工作流業務字典;(24)判斷工作流系統版本;(25)工作流系統服務進行初始化操作;(26)實例化工作流系統流程實例緩存池服務;
(27)初始化工作流系統歷史數據轉移服務服務;(28)設置工作流流程定義緩存服務;該實現工作流系統中流程事務和業務事務完整性的方法中的工作流系統服務進行初始化操作,包括以下步驟(251)初始化工作流日誌服務;(252)初始化工作流事務協調器服務;(253)初始化工作流引擎活動調度服務;(254)初始化工作流引擎活動調度代理器;(255)初始化分段事務協調器服務;(257)初始化工作流任務代理服務;(258)初始化消息隊列服務;(259)初始化流程實例鎖服務;(25a)初始化定時器服務;(25b)初始化工作流組織機構服務。該實現工作流系統中流程事務和業務事務完整性的方法中的入口事務協調器進 行啟用事務分段操作的判斷執行,包括以下步驟(31)獲取當前線程上下文環境並進行保存;(32)如果啟用事務分段的條件為邏輯「真」,則分段事務協調器啟用事務分段上下 文,與外部事務環境進行分割;(33)如果啟用事務分段的條件為邏輯「假」,則分段事務協調器使用原有的事務上 下文。該實現工作流系統中流程事務和業務事務完整性的方法中的事務分段上下文的 數據欄位包括當前用戶ID、流程實例標識、是否分段事務、調度開始時間、調度結束時間。該實現工作流系統中流程事務和業務事務完整性的方法中的引擎活動調度代理 器執行完成活動的應用程式接口,包括以下步驟(41)判斷活動事件類型是否為「完成活動」事件;(42)設置活動實例狀態為「完成」;(43)設置活動實例被結束時間;(44)執行活動定義的觸發事件並調用事務協調器控制觸發事件的事務;(45)如果執行活動定義的觸發事件發生錯誤,則終止活動調度操作,並返回所述 的引擎活動調度器執行錯誤處理;(46)保存活動實例數據到資料庫中。該實現工作流系統中流程事務和業務事務完整性的方法中的返回引擎活動調度 器執行錯誤處理,包括以下步驟(451)通知流程實例緩存,將之前對活動實例的操作全部取消;(452)將錯誤日誌記錄到跟蹤日誌中;(453)向控制臺列印出錯信息;(454)通知所述的出口事務協調器當前事務操作無效,取消與之配對的事務入口調用堆棧中的所有操作數據。該實現工作流系統中流程事務和業務事務完整性的方法中的調用出口事務協調器提交工作流和業務數據,包括以下步驟(51)如果啟用了事務分段,則將數據提交到資料庫中;(52)如果未啟用事務分段,則不提交實際數據,僅向事務上下文環境通知事務數 據已經提交;(53)將活動實例更新到工作流系統緩存中。該實現工作流系統中流程事務和業務事務完整性的方法中的分段事務協調器執 行工作流系統數據的提交操作,包括以下步驟(61)判斷業務操作中是否採用了事務分段的方式來執行工作流系統功能;(62)如果在業務操作中是採用了事務分段的方式來執行工作流系統功能,則執行 以下步驟(a)完成活動應用程式接口執行完成後調用出口事務協調器提交工作流的數據到 資料庫中;(b)業務事務執行提交操作;(c)通知所述的工作流系統中的出口事務協調器業務事務已經執行提交操作;(d)出口事務協調器不執行任何事務提交操作,業務代碼繼續執行;(63)如果在業務操作中未採用事務分段的方式來執行工作流系統功能,則執行以 下步驟(a)完成活動應用程式接口執行完成;(b)業務事務執行提交操作;(c)通知所述的工作流系統的出口事務協調器業務事務已經執行提交操作;(d)所述的出口事務協調器和業務事務協同提交工作流數據。該實現工作流系統中流程事務和業務事務完整性的方法中的分段事務協調器執 行工作流系統數據的回滾操作,包括以下步驟(71)判斷業務操作中是否採用了事務分段方式來執行工作流系統功能;(72)如果在業務操作中是採用了事務分段的方式來執行工作流系統功能,則執行 以下步驟(a)完成活動應用程式接口執行完成後調用所述的出口事務協調器提交工作流的 數據到資料庫中;(b)業務事務執行回滾操作;(c)通知所述的工作流系統中的出口事務協調器業務事務已經執行回滾操作;(d)所述的出口事務協調器不執行任何事務回滾操作,業務代碼繼續執行;(73)如果在業務操作中未採用事務分段的方式來執行工作流系統功能,則執行以 下步驟(a)完成活動應用程式接口執行完成;(b)業務事務執行回滾操作;(c)通知所述的工作流系統的出口事務協調器業務事務已經執行回滾操作;(d)所述的出口事務協調器和業務事務協同執行工作流事務回滾操作。
採用了該發明的工作流系統實現流程事務和業務事務完整性的系統結構及方法,由於通過將高級事務模型與工作流管理技術相結合,使用良好定義的模型語義與恢復 機制可以提高工作流系統的可靠性與實用性,從而提供了一致的事務協調器,為不同的事 務API提供了一致的編程模型,支持聲明性事務管理,提供比大多數事務API (諸如Java TransactionAPI)更簡單、更易於使用的編程式事務管理API,以此保證了工作流流程事務 的完整性、工作流和業務事務的結合來確保業務和工作流數據的一致性和工作流事務分段 以保證活動的執行獨立性;由於其通過使用特定方式的組件來協調工作流系統中事務同業 務事務的協調、調度,來達到工作流系統事務同業務事務的完整性,使得應用開發者能夠在 任何環境下使用一致的編程模型,開發者可以只寫一次代碼,多次使用,從而能夠在不同環 境下的不同事務管理策略中很有益處,開發者通過直接使用工作流系統提供的API,在API 參數上明確說明「是否啟用事務分段」,這使得原本複雜的工作流事務場景變得簡潔、易操 作、靈活可變,使得工作流系統更易於在複雜的業務場景和跨資料庫的事務操作中使用,同 時也增強了系統的可移植性和可擴展性,不僅能夠統一的接口環境和簡化的操作接口,而 且能夠跨越不同類型的資料庫事務,使用快捷方便,運行效率較高,系統性能穩定可靠,適 用範圍較為廣泛。


圖1為本發明的工作流系統實現流程事務和業務事務完整性的系統結構示意圖。圖2為本發明的實現工作流系統中流程事務和業務事務完整性的方法的工作原 理示意圖。圖3為採用本發明的公文流轉案例的業務流程示意圖。
具體實施例方式為了能夠更清楚地理解本發明的技術內容,特舉以下實施例詳細說明。請參閱圖1所示,該工作流系統中實現流程事務和業務事務完整性的系統結構, 其主要特點是,所述的系統結構包括入口事務協調器,進行事務環境處理,並判斷執行啟用事務分段操作;引擎活動調度器,與所述的入口事務協調器相連接,進行活動應用程式接口(API) 模塊的調度和執行;分段事務協調器,與所述的引擎活動調度器相連接,啟動新的事務上下文,對外部 事務環境進行分割,並進行工作流系統數據的提交和回滾操作;出口事務協調器,與所述的分段事務協調器相連接,根據需要提交工作流和業務 數據,並恢復外部事務環境。再請參閱圖2所示,該基於上述的系統結構實現工作流系統中流程事務和業務事 務完整性的方法,其主要特點是,所述的方法包括以下步驟(1)所述的工作流系統進行初始化操作,包括以下步驟(a)實例化工作流日誌系統;(b)加載工作流配置文件;(c)加載工作流業務字典;
(d)判斷工作流系統版本;(e)工作流系統服務進行初始化操作,包括以下步驟(i)初始化工作流日誌服務;(ii)初始化工作流事務協調器服務;(iii)初始化工作流引擎活動調度服務;(iv)初始化工作流引擎活動調度代理器;(ν)初始化分段事務協調器服務;(vii)初始化工作流任務代理服務;(viii)初始化消息隊列服務;(ix)初始化流程實例鎖服務;(X)初始化定時器服務;(xi)初始化工作流組織機構服務;(f)實例化工作流系統流程實例緩存池服務;
(g)初始化工作流系統歷史數據轉移服務服務;(h)設置工作流流程定義緩存服務;(2)判斷與該工作流系統所連接的用戶業務系統的業務操作請求所對應的業務操作所執行的工作流系統應用程式接口是否為完成活動的應用程式接口;(3)如果是,則調用所述的入口事務協調器進行事務環境處理;(4)工作流系統中的業務操作線程進入該入口事務協調器,將業務操作中的當前 會話中的用戶信息傳遞給工作流系統的會話句柄,並且保存到當前線程上下文環境中;(5)所述的入口事務協調器進行啟用事務分段操作的判斷執行,包括以下步驟(a)獲取當前線程上下文環境並進行保存;(b)如果啟用事務分段的條件為邏輯「真」,則分段事務協調器啟用事務分段上下 文,與外部事務環境進行分割;該事務分段上下文的數據欄位包括當前用戶ID、流程實例標識、是否分段事務、調度開始時間、調度結束時間;(c)如果啟用事務分段的條件為邏輯「假」,則分段事務協調器使用原有的事務上 下文;(6)所述的業務操作線程調用所述的引擎活動調度器,獲取業務流程實例鎖並鎖 定當前流程實例;(7)所述的引擎活動調度器調用引擎活動調度代理器執行完成活動的應用程式接 口,包括以下步驟(a)判斷活動事件類型是否為「完成活動」事件;(b)設置活動實例狀態為「完成」;(c)設置活動實例被結束時間;(d)執行活動定義的觸發事件並調用事務協調器控制觸發事件的事務;(e)如果執行活動定義的觸發事件發生錯誤,則終止活動調度操作,並返回所述的 引擎活動調度器執行錯誤處理,包括以下步驟(i)通知流程實例緩存,將之前對活動實例的操作全部取消;(ii)將錯誤日誌記錄到跟蹤日誌中;
(iii)向控制臺列印出錯信息;(iv)通知所述的出口事務協調器當前事務操作無效,取消與之配對的事務入口調 用堆棧中的所有操作數據;(f)保存活動實例數據到資料庫中;(8)所述的引擎活動調度器啟動後繼活動,並繼續執行該後繼活動;(9)所述的業務操作線程調用所述的出口事務協調器提交工作流和業務數據,包 括以下步驟(a)如果啟用了事務分段,則將數據提交到資料庫中;(b)如果未啟用事務分段,則不提交實際數據,僅向事務上下文環境通知事務數據 已經提交;(c)將活動實例更新到工作流系統緩存中;(10)將線程上下文環境恢復為調用該入口事務協調器之前的線程上下文環境;(11)所述的用戶業務系統調用的完成活動應用程式接口在正常執行完畢後調用 堆棧恢復到執行業務操作的後續方法,繼續執行後繼業務操作;(12)如果所述的後繼業務操作正常執行到業務事務的提交操作,則通知所述的分 段事務協調器執行工作流系統數據的提交操作,並結束;該分段事務協調器執行工作流系 統數據的提交操作,包括以下步驟(a)判斷業務操作中是否採用了事務分段的方式來執行工作流系統功能;(b)如果在業務操作中是採用了事務分段的方式來執行工作流系統功能,則執行 以下步驟(i)完成活動應用程式接口執行完成後調用出口事務協調器提交工作流的數據到 資料庫中;(ii)業務事務執行提交操作;(iii)通知所述的工作流系統中的出口事務協調器業務事務已經執行提交操作;(iv)出口事務協調器不執行任何事務提交操作,業務代碼繼續執行;(c)如果在業務操作中未採用事務分段的方式來執行工作流系統功能,則執行以 下步驟(i)完成活動應用程式接口執行完成;(ii)業務事務執行提交操作;(iii)通知所述的工作流系統的出口事務協調器業務事務已經執行提交操作;(iv)所述的出口事務協調器和業務事務協同提交工作流數據;(13)如果所述的後繼業務操作執行出錯並且執行到業務事務的回滾操作,則通知 所述的分段事務協調器執行工作流系統數據的回滾操作,並結束;該分段事務協調器執行 工作流系統數據的回滾操作,包括以下步驟(a)判斷業務操作中是否採用了事務分段方式來執行工作流系統功能;(b)如果在業務操作中是採用了事務分段的方式來執行工作流系統功能,則執行 以下步驟(i)完成活動應用程式接口執行完成後調用所述的出口事務協調器提交工作流的 數據到資料庫中;
(ii)業務事務執行回滾操作;(iii)通知所述的工作流系統中的出口事務協調器業務事務已經執行回滾操作;(iv)所述的出口事務協調器不執行任何事務回滾操作,業務代碼繼續執行;(c)如果在業務操作中未採用事務分段的方式來執行工作流系統功能,則執行以 下步驟(i)完成活動應用程式接口執行完成;(ii)業務事務執行回滾操作;(iii)通知所述的工作流系統的出口事務協調器業務事務已經執行回滾操作;(iv)所述的出口事務協調器和業務事務協同執行工作流事務回滾操作。在實際使用當中,首先定義一個公文流轉的工作流流程示例,請參閱圖3所示,公 文流轉的流程步驟如下1、公文撰寫發文人撰寫公文具體內容,同時指定公文收件人姓名或者部門和職 位;2、下發公文由計算機自動處理髮送到公文審核人處;3、發送郵件通知發送成功後,由計算機自動發送email提醒公文審核人審核;4、公文接收人審核公文審核人在收到發送的公文後,對其內容進行評判檢查。對 審核通過的下發到下級部門,不通過的則將由公文撰稿人重新修改;5、下發到各級部門由計算機自動處理髮送到各級部門;其次,準備業務處理邏輯操作「完成公文撰稿」,業務處理操作分為如下2個操作 步驟1、保存公文撰稿內容;2、通知工作流引擎,完成「公文撰稿」業務活動,繼續向後流轉公文流程;以上2個操作步驟同時完成,才可視為「完成公文撰稿」的業務活動被完成;然後再配置業務處理邏輯操作中的偽代碼,偽代碼如下public viod doBusiness {
0187]try{
0188]/*事務管理器發起事務*/
0189]beginTransaction ;
0190]/*保存公文撰稿內容*/
0191]saveDocument ( 「公文內容」);
0192]/*通知工作流引擎完成「公文撰稿活動」 */
0193]finishActivity( 「公文撰稿活動」);
0194]/*事務管理器提交事務*/
0195]commitTransaction ;
0196]}catch (Throwable exception) {
0197]/*事務管理器回滾事務*/
0198]rollbackTransaction ;
0199]}
12
}該工作流系統中實現流程事務和業務事務完整性的方法,該系統包括入口事務協 調器、引擎活動調度器、分段事務協調器和出口事務協調器,其主要特點是,所述的方法包 括以下步驟(1)用戶業務系統所使用的環境進行初始化;(2)工作流系統初始化操作,包括以下步驟(a)實例化工作流日誌系統;
(b)加載工作流配置文件;(c)加載工作流業務字典;(d)判斷工作流系統版本;(e)工作流系統服務初始化,包括以下步驟i.初始化工作流日誌服務;ii.初始化工作流事務協調器服務;iii.初始化工作流引擎活動調度服務;iv.初始化工作流引擎活動調度代理器;v.初始化分段事務協調器服務;vii初始化工作流任務代理服務;viii.初始化消息隊列服務;ix.初始化流程實例鎖服務;X.初始化定時器服務;xi.初始化工作流組織機構服務;(f)實例化工作流系統流程實例緩存池服務;(g)初始化工作流系統歷史數據轉移服務服務;(h)設置工作流流程定義緩存服務;(3)用戶業務系統初始化操作;(4)用戶業務系統發起執行業務操作的請求;(5)用戶業務系統啟動業務事務操作;(6)用戶業務系統執行業務操作請求;(7)業務操作判斷執行的工作流系統API是否為完成活動API,若是則調用入口事 務協調器進行事務環境處理;(8)業務操作線程進入入口事務協調器,將業務操作中的當前會話中的用戶信息 傳遞給工作流系統的會話句柄,並且保存到當前線程上下文環境中;(9)入口事務協調器判斷執行啟用事務分段操作,包括以下步驟(a)獲取當前線程上下文環境並保存;(b)如果啟動事務分段的條件為「真」,則分段事務協調器啟動新的事務上下文,與 外部事務環境進行分割;(c)如果啟動事務分段的條件為「假」,則分段事務協調器使用原有的事務上下 文;其中所述的事務分段上下文數據格式為
當前用戶ID,流程實例標識,是否分段事務,調度開始時間,調度結束時間;(10)業務操作線程進入調用引擎活動調度器並獲取業務流程實例鎖並鎖定當前 流程實例;(11)引擎活動調度器調用引擎活動調度代理器執行完成活動API,包括以下步 驟(a)判斷活動事件類型是否為「完成活動」事件;(b)設置活動實例狀態為「完成」;
(c)設置活動實例被結束時間;(d)執行活動定義的觸發事件並調用事務協調器控制觸發事件的事務;(e)如果執行活動定義的觸發事件發生錯誤,則終止活動調度操作,返回引擎活動 調度器執行錯誤處理,包括以下步驟i.通知流程實例緩存,將之前對活動實例的操作全部取消;ii.將錯誤日誌記錄到跟蹤日誌中;iii.向控制臺列印出錯信息;iv.通知出口事務協調器當前事務操作無效,取消與之配對的事務入口調用堆棧 中的所有操作數據;(f)保存活動實例數據到資料庫中;(12)引擎活動調度器啟動後繼活動,繼續執行;(13)業務操作線程調用出口事務協調器提交工作流和業務數據,包括以下步驟(a)如果啟用了事務分段,則將數據提交到資料庫中;(b)如果未啟用事務分段,則不提交實際數據,僅向事務上下文環境通知事務數據 已經提交;(c)將活動實例更新到工作流系統緩存中;(14)恢復線程上下文環境為調用入口事務協調器之前的線程上下文環境;(15)用戶業務系統調用的完成活動API在正常執行完畢後,調用堆棧恢復到執行 業務操作的後續方法,繼續執行後繼的業務操作;(16)如果後繼業務操作正常執行到業務事務的提交操作,則通知分段事務協調器 執行工作流系統數據的提交操作,包括以下步驟(a)判斷業務操作中是否採用了事務分段的方式來執行工作流系統功能;(b)如果在業務操作中是採用了事務分段的方式來執行工作流系統功能,那麼執 行以下步驟i.完成活動API執行完成後調用出口事務協調器提交工作流的數據到資料庫中;ii.業務事務執行提交操作;iii.通知工作流出口事務協調器業務事務已經執行提交操作;iv.出口事務協調器不執行任何事務提交操作,業務代碼繼續執行;(c)如果在業務操作中是採用了事務未分段的方式來執行工作流系統功能,那麼 執行以下步驟i.完成活動API執行完成;ii.業務事務執行提交操作;
iii.通知工作流出口事務協調器業務事務已經執行提交操作;iv.出口事務協調器和業務事務協同提交工作流數據;(17)如果後繼業務操作執行出錯並且執行到業務事務的回滾操作,則通知分段事 務協調器執行工作流系統數據的回滾操作,包括以下步驟(a)判斷業務操作中是否採用了事務分段方式來執行工作流系統功能;(b)如果在業務操作中是採用了事務分段的方式來執行工作流系統功能,那麼執 行以下步驟i.完成活動API執行完成後調用出口事務協調器提交工作流的數據到資料庫中;ii.業務事務執行回滾操作;iii.通知工作流出口事務協調器業務事務已經執行回滾操作;iv.出口事務協調器不執行任何事務回滾操作,業務代碼繼續執行;(c)如果在業務操作中是採用了事務未分段的方式來執行工作流系統功能,那麼 執行以下步驟i.完成活動API執行完成;ii.業務事務執行回滾操作;iii.通知工作流出口事務協調器業務事務已經執行回滾操作;iv.出口事務協調器和業務事務協同執行工作流事務回滾操作。工作流系統中實現流程事務和業務事務完整性的方法,包括了工作流流程事務完 整性、工作流和業務事務融合以確保業務和流程數據一致性和工作流事務分段來保證活動 的執行獨立性。工作流和業務事務融合以確保業務和流程數據一致性包括下列步驟,參看 圖3。通過業務流程引擎執行「公文流轉」業務流程,包括如下步驟1、用戶業務系統所使用的環境進行初始化;2、工作流系統初始化處理操作,包括以下步驟(1)實例化工作流日誌系統;(2)加載工作流配置文件;(3)加載工作流業務字典;(4)工作流系統版本判斷;(5)初始化工作流系統服務,包括以下步驟(a)初始化工作流日誌服務;(b)初始化工作流事務協調器服務;(c)初始化工作流引擎活動調度服務;(d)初始化工作流引擎活動調度代理器;(e)初始化分段事務協調器服務;(g)初始化工作流任務代理服務;(h)初始化消息隊列服務;(i)初始化流程實例鎖服務;(j)初始化定時器服務;(k)初始化工作流組織機構服務;(6)實例化工作流系統流程實例緩存池服務;
(7)初始化工作流系統歷史數據轉移服務;(8)設置工作流流程定義緩存服務; 3、用戶業務系統初始化操作;4、用戶業務系統發起執行業務操作的請求;5、執行業務代碼中的保存公文內容,並啟動業務事務操作;6、執行「完成撰稿活動」,交由工作流引擎來執行這一操作;所述的「完成撰稿活動」操作包含以下步驟(1)業務系統所執行的業務操作中包含有工作流系統的API,如果執行的是「完成 活動 API,,艮口 :finishfforkItem(long workltemID, Boolean transactionSpan)方法,貝U首 先會進入工作流「入口事務協調器」環境進行事務環境處理。對於工作流系統提供的對外 操作API,都會帶有「是否啟用事務分段」的參數,即布爾類型的transactionSpan參數;(2)進入入口事務協調器,將業務操作中的當前會話(即http session)的用戶信 息傳遞給工作流系統的session句柄,並且保存到當前線程上下文環境中;(3)入口事務協調器中判斷執行啟用事務分段,包括以下步驟(a)獲取當前線程上下文環境,並且保存線程上下文環境;(b)如果啟動事務分段條件為「真」,則執行分段事務協調器啟動新的事務上下文, 達到與外部事物環境分割的目的;(c)如果啟動事務分段條件為「假」,則分段事務協調器使用原有的事務上下文;(4)調用引擎活動調度器獲取業務流程實例鎖,鎖定當前流程實例;(5)調用引擎活動調度器中的引擎活動調度代理器執行完成活動API ;(6)引擎活動調度代理器執行完成活動API後由調度器調度後繼活動的走向,並 且啟動執行「公文接收人審核」該後繼活動;引擎活動調度代理器執行完成活動API包括以下步驟(a)判斷活動事件類型是否為「完成活動」事件;(b)設置活動實例狀態為「完成」;(c)設置活動實例被結束時間;(d)執行活動定義上的觸發事件,並啟動事務協調器控制觸發事件的事務;(e)執行活動定義上的觸發事件發生錯誤,則終止活動調度操作,返回引擎活動調 度器進行錯誤處理,包括以下步驟i.通知流程實例緩存,將之前對活動實例的操作全部取消;ii.記錄錯誤日誌到跟蹤日誌中去;iii.向控制臺列印出錯信息;iv.調用「出口事務協調器」,通知事務協調器,當前事務操作無效,取消與之配對 的事務入口調用堆棧中的所有操作數據;(f)保存活動實例數據到資料庫中;7、「完成公文撰稿」業務操作完畢後,業務代碼控制事務執行提交操作,將保存「公 文內容」操作和「公文撰稿」活動的操作同時提交數據;8、業務事務提交後立即觸發工作流系統出口事務協調器啟動執行,如果啟用了事 務分段,則提交數據到資料庫中;如果未啟用事務分段,則假提交數據到資料庫中;同時更新活動實例到工作流系統緩存中;9、恢復線程上下文環境到調用入口事務協調器之前的線程上下文環境;10、用戶業務系統所調用的完成活動API在正常執行完畢後,調用堆棧恢復到執行業務操作的後續方法,繼續執行後繼業務操作;11、如果後繼業務操作正常執行且一直至運行到業務事務的提交操作,工作流系 統的事務協調器會收到通知執行針對工作流系統所產生的數據的提交操作;12、如果後繼業務操作執行出錯需要運行業務事務的回滾操作時,工作流系統的 事務協調器會接受到通知執行針對工作流系統所產生的數據的回滾操作。採用上述的工作流系統中實現流程事務和業務事務完整性的系統結構及其方法, 由於其中提供了一致的事務協調器,為不同的事務API提供了一致的編程模型,支持聲明 性事務管理,提供比大多數事務API (諸如Java Transaction API)更簡單、更易於使用的 編程式事務管理API,以此保證了工作流流程事務的完整性、工作流和業務事務的結合來確 保業務和工作流數據的一致性和工作流事務分段以保證活動的執行獨立性。由於其通過 使用特定方式的組件來協調工作流系統中事務同業務事務的協調、調度,來達到工作流系 統事務同業務事務的完整性,使得應用開發者能夠在任何環境下使用一致的編程模型,開 發者可以只寫一次代碼,多次使用,這種方式在不同環境下的不同事務管理策略中很有益 處。開發者通過直接使用工作流系統提供的API,在API參數上明確說明「是否啟用事務分 段」,這使得原本複雜的工作流事務場景變得簡潔、易操作、靈活可變,使得工作流系統更易 於在複雜的業務場景和跨資料庫的事務操作中使用,同時也增強了系統的可移植性和可擴 展性,不僅能夠統一的接口環境和簡化的操作接口,而且能夠跨越不同類型的資料庫事務, 使用快捷方便,運行效率較高,系統性能穩定可靠,適用範圍較為廣泛。在此說明書中,本發明已參照其特定的實施例作了描述。但是,很顯然仍可以作出 各種修改和變換而不背離本發明的精神和範圍。因此,說明書和附圖應被認為是說明性的 而非限制性的。
權利要求
一種工作流系統中實現流程事務和業務事務完整性的系統結構,其特徵在於,所述的系統結構包括入口事務協調器,進行事務環境處理,並判斷執行啟用事務分段操作;引擎活動調度器,與所述的入口事務協調器相連接,進行活動應用程式接口模塊的調度和執行;分段事務協調器,與所述的引擎活動調度器相連接,啟動新的事務上下文,對事務環境進行分割,並進行工作流系統數據的提交和回滾操作;出口事務協調器,與所述的分段事務協調器相連接,根據需要提交工作流和業務數據,並恢復外部事務環境。
2. 一種基於權利要求1所述的系統結構實現工作流系統中流程事務和業務事務完整 性的方法,其特徵在於,所述的方法包括以下步驟(1)所述的工作流系統進行初始化操作;(2)判斷與該工作流系統所連接的用戶業務系統的業務操作請求所對應的業務操作所 執行的工作流系統應用程式接口是否為完成活動的應用程式接口;(3)如果是,則調用所述的入口事務協調器進行事務環境處理;(4)工作流系統中的業務操作線程進入該入口事務協調器,將業務操作中的當前會話 中的用戶信息傳遞給工作流系統的會話句柄,並且保存到當前線程上下文環境中;(5)所述的入口事務協調器進行啟用事務分段操作的判斷執行;(6)所述的業務操作線程調用所述的引擎活動調度器,獲取業務流程實例鎖並鎖定當 前流程實例;(7)所述的引擎活動調度器調用引擎活動調度代理器執行完成活動的應用程式接口;(8)所述的引擎活動調度器啟動後繼活動,並繼續執行該後繼活動;(9)所述的業務操作線程調用所述的出口事務協調器提交工作流和業務數據;(10)將線程上下文環境恢復為調用該入口事務協調器之前的線程上下文環境;(11)所述的用戶業務系統調用的完成活動應用程式接口在正常執行完畢後調用堆棧 恢復到執行業務操作的後續方法,繼續執行後繼業務操作;(12)如果所述的後繼業務操作正常執行到業務事務的提交操作,則通知所述的分段事 務協調器執行工作流系統數據的提交操作,並結束;(13)如果所述的後繼業務操作執行出錯並且執行到業務事務的回滾操作,則通知所述 的分段事務協調器執行工作流系統數據的回滾操作,並結束。
3.根據權利要求2所述的實現工作流系統中流程事務和業務事務完整性的方法,其特 徵在於,所述的工作流系統進行初始化操作,包括以下步驟(21)實例化工作流日誌系統;(22)加載工作流配置文件;(23)加載工作流業務字典;(24)判斷工作流系統版本;(25)工作流系統服務進行初始化操作;(26)實例化工作流系統流程實例緩存池服務;(27)初始化工作流系統歷史數據轉移服務服務;(28)設置工作流流程定義緩存服務;
4.根據權利要求3所述的實現工作流系統中流程事務和業務事務完整性的方法,其特 徵在於,所述的工作流系統服務進行初始化操作,包括以下步驟(251)初始化工作流日誌服務;(252)初始化工作流事務協調器服務;(253)初始化工作流引擎活動調度服務;(254)初始化工作流引擎活動調度代理器;(255)初始化分段事務協調器服務;(257)初始化工作流任務代理服務;(258)初始化消息隊列服務;(259)初始化流程實例鎖服務; (25a)初始化定時器服務;(25b)初始化工作流組織機構服務。
5.根據權利要求2所述的實現工作流系統中流程事務和業務事務完整性的方法,其特 徵在於,所述的入口事務協調器進行啟用事務分段操作的判斷執行,包括以下步驟(31)獲取當前線程上下文環境並進行保存;(32)如果啟用事務分段的條件為邏輯「真」,則分段事務協調器啟用事務分段上下文, 與外部事務環境進行分割;(33)如果啟用事務分段的條件為邏輯「假」,則分段事務協調器使用原有的事務上下文。
6.根據權利要求5所述的實現工作流系統中流程事務和業務事務完整性的方法,其特 徵在於,所述的事務分段上下文的數據欄位包括當前用戶ID、流程實例標識、是否分段事務、調度開始時間、調度結束時間。
7.根據權利要求2所述的實現工作流系統中流程事務和業務事務完整性的方法,其特 徵在於,所述的引擎活動調度代理器執行完成活動的應用程式接口,包括以下步驟(41)判斷活動事件類型是否為「完成活動」事件;(42)設置活動實例狀態為「完成」;(43)設置活動實例被結束時間;(44)執行活動定義的觸發事件並調用事務協調器控制觸發事件的事務;(45)如果執行活動定義的觸發事件發生錯誤,則終止活動調度操作,並返回所述的引 擎活動調度器執行錯誤處理;(46)保存活動實例數據到資料庫中。
8.根據權利要求7所述的實現工作流系統中流程事務和業務事務完整性的方法,其特 徵在於,所述的返回引擎活動調度器執行錯誤處理,包括以下步驟(451)通知流程實例緩存,將之前對活動實例的操作全部取消;(452)將錯誤日誌記錄到跟蹤日誌中;(453)向控制臺列印出錯信息;(454)通知所述的出口事務協調器當前事務操作無效,取消與之配對的事務入口調用 堆棧中的所有操作數據。
9.根據權利要求2所述的實現工作流系統中流程事務和業務事務完整性的方法,其特 徵在於,所述的調用出口事務協調器提交工作流和業務數據,包括以下步驟(51)如果啟用了事務分段,則將數據提交到資料庫中;(52)如果未啟用事務分段,則不提交實際數據,僅向事務上下文環境通知事務數據已 經提交;(53)將活動實例更新到工作流系統緩存中。
10.根據權利要求2所述的實現工作流系統中流程事務和業務事務完整性的方法,其 特徵在於,所述的分段事務協調器執行工作流系統數據的提交操作,包括以下步驟(61)判斷業務操作中是否採用了事務分段的方式來執行工作流系統功能;(62)如果在業務操作中是採用了事務分段的方式來執行工作流系統功能,則執行以下 步驟(a)完成活動應用程式接口執行完成後調用出口事務協調器提交工作流的數據到數據 庫中;(b)業務事務執行提交操作;(c)通知所述的工作流系統中的出口事務協調器業務事務已經執行提交操作;(d)出口事務協調器不執行任何事務提交操作,業務代碼繼續執行;(63)如果在業務操作中未採用事務分段的方式來執行工作流系統功能,則執行以下步驟(a)完成活動應用程式接口執行完成;(b)業務事務執行提交操作;(c)通知所述的工作流系統的出口事務協調器業務事務已經執行提交操作;(d)所述的出口事務協調器和業務事務協同提交工作流數據。
11.根據權利要求2所述的實現工作流系統中流程事務和業務事務完整性的方法,其 特徵在於,所述的分段事務協調器執行工作流系統數據的回滾操作,包括以下步驟(71)判斷業務操作中是否採用了事務分段方式來執行工作流系統功能;(72)如果在業務操作中是採用了事務分段的方式來執行工作流系統功能,則執行以下 步驟(a)完成活動應用程式接口執行完成後調用所述的出口事務協調器提交工作流的數據 到資料庫中;(b)業務事務執行回滾操作;(c)通知所述的工作流系統中的出口事務協調器業務事務已經執行回滾操作;(d)所述的出口事務協調器不執行任何事務回滾操作,業務代碼繼續執行;(73)如果在業務操作中未採用事務分段的方式來執行工作流系統功能,則執行以下步驟(a)完成活動應用程式接口執行完成;(b)業務事務執行回滾操作;(c)通知所述的工作流系統的出口事務協調器業務事務已經執行回滾操作;(d)所述的出口事務協調器和業務事務協同執行工作流事務回滾操作。
全文摘要
本發明涉及一種工作流系統中實現流程事務和業務事務完整性的系統結構,其中包括入口事務協調器、引擎活動調度器、分段事務協調器、出口事務協調器,入口事務協調器依次與引擎活動調度器、分段事務協調器和出口事務協調器連接。本發明還涉及一種實現工作流系統中流程事務和業務事務完整性的方法。採用該種工作流系統實現流程事務和業務事務完整性的系統結構及方法,保證了工作流流程事務的完整性、業務和工作流數據的一致性和工作流活動的執行獨立性,使得工作流事務場景簡潔、易操作、靈活可變,增強了系統可移植性和可擴展性,使用快捷方便,運行效率較高,系統性能穩定可靠,適用範圍較為廣泛。
文檔編號G06Q10/08GK101807272SQ20101013169
公開日2010年8月18日 申請日期2010年3月24日 優先權日2010年3月24日
發明者劉曉俊, 劉航, 謝國政 申請人:上海普元信息技術有限責任公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀