控制流程類型活動
Code活動:執行關聯的代碼,關鍵屬性“ExecuteCode”。
Sequence:允許按順序執行一組Activity。
IfElse:根據指定的條件執行包含的活動。
While:按指定的迭代次數執行包含的Activity。
Policy:根據一組關聯的規則執行操作。
ConditionedActivityGroup:根據關聯的事件/條件執行包含的Activity。只能在滿足指定條件後,才會執行包含的Activity。
Replicator:通過創建指定數量的複製實例來執行包含的Activity。
SynchronizationScope:在同步域中順序執行所包含的Activity。
容器類型的符合活動,它可以為每個分支設置一個“排他”的標記“SynchronizationHandles”。
事件類型活動
HandleExternalEvent:允許在工作流中接收事件。
依賴外部來觸發事件的,
CallExternalMethod:從工作流中調用外部方法。
Listen:允許根據指定的延遲時間或事件執行所包含的Activity。
此活動每條分支之間都是平行關係,只要有一個分支監聽到事件,其他分支就都不會被執行。
分支與分支之間是具有“排他”性的。此活動每條分支上的第一個子活動一定為事件類型的活動。
Delay:將執行延後指定的一段時間。
事件類型活動,由自身來觸發事件。
該活動可以觸發工作流的“WorkflowIdled”事件,使工作流進入“idle”狀態。
EventHandlingScope:對子Activity的執行啓用事件處理。
容器內的活動,每個分支都是由EventDriven容器類型的活動構成。
此活動是在其主活動運行結束前,它的所有事件的分支都可以被執行,不會出現“排他”的現象,該活動所監聽的事件
都存放在“Event Handlers”視圖裏。
Parallel:允許並行執行包含的Activity。
容器類型的活動,該活動的每條分支都是由Sequence活動構成的,在此活動運行時,只有每條分支全部執行完畢後該活動才結束,工作流
也才能執行Parallel活動的其他後續活動,否則工作流就將一直等待知道Parallel活動結束。此活動的每條分支之間的關係都是平行的,這裏
的“平行”是指邏輯業務上的平行而在運行時都屬於同一個線程。此活動被廣泛運用於“會籤”流程,例如某個文件要3個部門全部簽字後才能
生效,那麼這3各部門在該工作流程中就是平行的關係。
事務和異常處理類型活動
FaultHandler:允許根據指定的異常執行包含的Activity。
在wf中同一個容器內某個活動在運行時發生了異常,那麼該容器內位於它後面的所有活動將不能被執行。
Throw:允許在工作流中引發異常。
如果容器沒有對它內部子活動的異常進行捕捉,那麼該容器後面的其他活動將不再被執行,反之容器後續的活動將繼續執行。
在程序運行時由於未知錯誤引發的異常被稱為隱形異常,用户可以通過Throw活動在工作流中聲明一個顯性的異常並將它拋出,
當異常發生時將會觸發工作流運行時容器Runtime的“WorkflowTerminated”事件。
Compensate:為支持長時間運行事務的作用域啓用補償。
此活動是一個順序類型的容器。補償也需要指定一個區域,在該區域內如果發生了某些異常情況,那麼就可以通過Compensatable活動
來指定該類型的異常應該執行哪個區域內的補償措施,這個區域可以使用CoompensatableSequence活動來限定。
在現實工作中工作流還需要對某些特殊情況下的業務邏輯進行處理,例如某廠商生產的物品發現了缺陷,那麼就需要在工作流程
中設置一個召回的流程;某些公文寫錯了,正規的做法就是通過一個流程將其作廢,而不是直接銷燬;如果給客户發了一封錯誤
的郵件,那麼能做的就是再發一封郵件告訴他正確的信息,而不能把客户收到的那份郵件刪除。在wf中可以使用CompensatableSequence
活動和Compensatable活動來實現。
注意:此活動是對已經存在的結果進行補償。
CompensatableSequence:按具有補償的序列執行一組活動。
CompensatableTransactionScope:在事務中按順序執行包含的活動並支持補償。
TransactionScope:在事務中順序執行所包含的Activity。
CompensatableTransactionScope:在事務中按順序執行包含的活動並支持補償。
WebService和與WF相關的活動
InvokeWorkflow:允許使用異步Excute執行指定工作流。
Termainate:終止工作流的執行。
是結束工作流的活動,在執行時將觸發工作流中的“WorkflowTerminated”事件
Suspend:掛起工作流的執行。
是暫停工作流的活動,在執行時將觸發工作流中的“WorkflowSuspended”事件
WebServiceInput:允許在工作流內從WebService接收數據。
WebServiceOutput:允許在工作流內向WebService發送數據。
InvokeWebService:允許從工作流內部調用WebService。