老汉色av影院,av熟女先锋影音,欧美性爱迷奸系列精品视频,国产丰满老熟女重口对白,av甜汤网,第一黄色影院

熱門資訊
干貨分享

工作流模式之異常模式

作者:alphaflow來源:flowyun.com訪問:210時間:2019-05-09

在流程執(zhí)行的過程中既有成功的情景,也會有失敗的情景.如果某個流程中執(zhí)行失敗了,應該采取哪些處理措施呢?這些處理措施是不是有最佳實踐呢?答案就是工作流技術中的異常模式。

異常并不是工作流管理系統(tǒng)才有的,所有軟件信息系統(tǒng)都有異常, 先來看看信息體統(tǒng)中的常規(guī)異常,有別于后續(xù)要介紹的工作流異常。常規(guī)異常,實際上就是指我們日常開發(fā)中所遇到的各種程序異常和業(yè)務異常。常規(guī)異常對于IT人員并不陌生,我們幾乎每天都在與各種程序語言中的異常打交道,例如Java語言中各種各樣的Checked Exception和UnChecked Exception。對于常規(guī)異常,不同的語言提供了不同的處理機制。

一個穩(wěn)定健壯的應用系統(tǒng)是離不開良好的異常處理設計與實現(xiàn)的。程序語言只提供了最基本的異常處理機制,在實際的開發(fā)中,往往需要設計者給出更易用、更友好的、統(tǒng)一的異??蚣茉O計。

1.工作流異常的概念

那么什么是工作流異常呢?工作流異常是指對理想的協(xié)同處理過程(利用已有資源,以一種最佳的方式來達到任務的要求)產生的任何偏移,包括活動執(zhí)行時遇到的錯誤、代理人之間的通信錯誤、對任務和資源的變化缺少支持等。即工作流在協(xié)同處理的過程中,出現(xiàn)的任何偏離了正?;蚱谕男袨槎际枪ぷ髁鳟惓P袨椤@?,工作流的正常期望是流程的各個活動能夠順利執(zhí)行結束,為顧客輸出他想要的價值,如果不能得到這個結果,則屬于工作流異常。

需要注意的是,相當多情況下工作流異常需要在人工參與的情況下進行傳播,而非自動傳播,并且在異常處理完成后,過程應該從異常發(fā)生處繼續(xù)執(zhí)行,這是與高級編程語言異常處理模式的很大不同。

2.工作流異常的分類

按照異常的預測程度分為可預測異常和不可預測異常

a)可預測異常:可以預見的并且已經定義好異常處理器的工作流異常,通常對出現(xiàn)的異常情況有充分的了解,并明確定義了異常處理過程;

b)不可預測異常:在模型定義階段無法預知的異常情況,通常需要在異常發(fā)生時通過人工參與處理該類異常。

按照觸發(fā)源分為外部異常和內部異常

a)外部異常:由參與工作流執(zhí)行的系統(tǒng)外部因素所引起的異常,如操作系統(tǒng)、網絡、數(shù)據庫、應用軟件和硬件設備等故障所產生的異常。

b)內部異常:由工作流管理系統(tǒng)自身印發(fā)的異常,如不能為活動指定執(zhí)行者、不能獲取活動執(zhí)行所需的資源、活動錯過截止期等。

對于按照觸發(fā)源劃分,美國喬治亞大學的ZongweiLuo與Amit Sheth等人又進行了更為細致的劃分,產生了以下工作流異常分類:應用異常、工作流異常、基礎結構異常。

應用異常:指由任務的執(zhí)行者通過這個任務項參與到業(yè)務系統(tǒng)中,進行業(yè)務操作。此時,任務執(zhí)行者如果由于誤操作(例如輸入了錯誤的參數(shù))或故意執(zhí)行非正常期望的操作(例如進行駁回),從而導致工作流不能正常執(zhí)行,稱之為應用異常。工作流引擎還會在執(zhí)行的過程中自動調用業(yè)務系統(tǒng)提供的接口或服務(有可能位于ESB中),如果業(yè)務系統(tǒng)提供的接口或服務發(fā)生異常(例如不可調用),同樣會引起工作流不能正常執(zhí)行,此時也稱之為應用異常。實際上,應用異常可以定義為由工作流的應用者本身所引起的異常。

工作流異常:指由工作流系統(tǒng)本身直接激發(fā)的異常,又分為系統(tǒng)異常和用戶定義異常。前者包括時間異常(工作流實例違反時間限制,如任務運行時間超過給定期限)、資源異常(資源不可用,例如生成任務時找不到建模期定義的任務執(zhí)行者)、數(shù)據異常(工作流相關數(shù)據違反其約束條件)。后者實際上就是指上文提到的可預測異常,也就是說,由工作流的設計者在建模期對于可預測的工作流系統(tǒng)本身的多個異常進行定義,并且為每個異常定義一個異常處理,在異常發(fā)生時做出相應的處理。

基礎結構異常:指由應用服務器、數(shù)據庫、網絡、操作系統(tǒng)、硬件設備等基礎設施所引起的異常。

從技術角度來看,上面三層異常模型應該是最容易理解與應用的。從工作流產品設計和實現(xiàn)的角度,我們也認為是最清晰的。當然除了上述兩個主要的分類方式以外,還有一些其他的分類方式,按照工作流可探測的異常事件可分為:

  • 工作項執(zhí)行失敗

  • 超時

  • 資源不可用

  • 外部觸發(fā)

  • 違反約束

3.工作流異常的處理

忽略策略:工作流的某個活動在執(zhí)行過程中,主要行為已經執(zhí)行完畢。此時如果出現(xiàn)異常,但是此異常所產生的行為不影響后續(xù)活動的執(zhí)行,那么此時就可以采用忽略策略。忽略此異常,讓活動繼續(xù)執(zhí)行,直至轉移到其后續(xù)活動。

放棄策略:若在某個活動的執(zhí)行過程中,出現(xiàn)的異常使得整個活動不能繼續(xù)執(zhí)行下去,此時就只有采取放棄策略。實際上,這一策略的本質就是回滾。對于工作流的某個原子活動的某次狀態(tài)轉移來講,所有的行為(活動本身的執(zhí)行、此活動節(jié)點綁定的事件或服務的執(zhí)行、任務的分配等)都處于一個原子事務中,因此失敗即回滾。

替換策略:在工作流執(zhí)行過程中,若某個活動執(zhí)行時出現(xiàn)異常使其不能繼續(xù),但存在另外一個可選的活動或另外一條執(zhí)行路徑使得程序可以繼續(xù),此時就可以采用替換策略。

補償策略:補償是發(fā)生在兩個原子事務甚至多個原子事務之間;或者說,發(fā)生在事務遞交之后。在業(yè)務操作已經跨越了多個原子事務之后,如果在最后一個事務處發(fā)生失敗,需要消除對以前的一個或多個業(yè)務操作所產生的影響,則必須執(zhí)行補償策略。

重試策略:在工作流活動執(zhí)行的過程中,對于出現(xiàn)異常的活動重新嘗試執(zhí)行,直到活動執(zhí)行成功,或者達到最大重試次數(shù),這種策略稱之為“重試策略”。重試策略一般應用在異步執(zhí)行的場景中,因為不知道什么時候重試成功,所以不能一直同步等待。

工作流模型定義了其組成任務(包括活動與子過程)的各種執(zhí)行屬性。為了滿足異常處理的要求,我們在工作流模型中加入任務的事務特征和異常處理屬性定義。表1簡要描述了這些屬性,其中包括任務執(zhí)行失敗后的回退(Rollback)屬性,由于并非所有任務都是原子性的,所以在任務執(zhí)行失敗后需要取消任務失敗所產生的影響;任務執(zhí)行完成后的補償(Compensate)屬性,可以在后向恢復時將已經完成的影響消除,恢復到未執(zhí)行狀態(tài);任務失敗后的重試(Retry)屬性;以及該任務所有可以引發(fā)的異常和提供的異常處理過程。

除了工作流異常處理的五個最基本策略,目前在工作流異常領域主要有三個基本方法來針對具體的應用。

失敗補償法:這種方法的基本思想就是每一個活動對應一個補償活動,這個補償活動在語義上就是消除(undo)對已執(zhí)行的活動所產生的影響。當一個活動執(zhí)行失敗時,就啟動執(zhí)行補償活動(通常是前面活動的逆執(zhí)行),直到找到一個分支點,使整個過程能繼續(xù)向前執(zhí)行。

ECA規(guī)則法:事件描述了潛在異常情況的出現(xiàn),條件用來表示當事件發(fā)生時不同的處理前提,動作是指對異常事件應做出的反應。ECA規(guī)則要求每一具體的異常類別建立相應的規(guī)則(也稱為觸發(fā)器),根據發(fā)生的異常事件,在滿足一定的條件的前提下去調用相應的動作(活動、子程序、人工干預等)。

基于知識庫法:先對異常分類,定義每一類別的特征,建立起知識庫;每個異常有一種“異常探測”處理模板來捕獲異常,通過自頂向下的啟發(fā)式搜索找到異常的原因,再采用相應的過程去處理。這種方法與ECA規(guī)則類似,不過這種方法為人機交互處理異常(選擇合適的處理方法)提供了更多的信息。

4. 異常處理模式

在工作流當中部分短事務可以采用回滾策略,但對于長事務,則必須采用補償策略來解決。補償一般都是基于事件驅動的,即在異常(此處異常是廣義上的,如流程駁回也可以稱之為異常)發(fā)生時,通過異常事件去觸發(fā)執(zhí)行駁回事件。駁回事件由業(yè)務系統(tǒng)提供,以數(shù)據庫的CRUD(Create、Read、Update、Delete)操作為例,插入的補償操作是刪除、更新的補償操作是另一次更新。一句話,“原有業(yè)務操作的逆操作即定義為補償操作”。

相當多的情況下,異常處理過程需要人工參與進行??紤]到人員在工作流系統(tǒng)中的嚴格角色的和權限定義,單靠部分參與者可能無法完成一個異常處理過程,二頻繁的異常傳播又會導致處理過程復雜,效率下降。所以在不進行異常傳播時,可以采用組織層次的異常處理協(xié)調機制,實現(xiàn)多人參與的異常處理模式。

本文核心關鍵詞:工作流模式工作流異常模式

?2023 AlphaFlow流程云 杭州微宏科技有限公司 版權所有 ICP備案號:浙ICP備18039265號-1