一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

一步一步學(xué)WF系列(三)

  1. 寫(xiě)在前面

  原本計(jì)劃從這篇文章開(kāi)始,開(kāi)始介紹活動(dòng)的使用方式,但是考慮到很多在WF中,重要的類和概念都沒(méi)有清晰,所以還是在本文中繼續(xù)明確一下WF中重要的類的用法。

  這節(jié)是純粹的理論知識(shí),只是為你的后續(xù)學(xué)習(xí)打下一個(gè)基礎(chǔ),如果您不敢興趣,可以略過(guò)。

  2. WorkflowRuntime類

  WorkflowRuntime:工作流運(yùn)行時(shí)。

  這個(gè)類有四個(gè)作用:

  <1> 管理工作流運(yùn)行時(shí)

  <2> 啟動(dòng)和管理工作流實(shí)例

  <3> 管理運(yùn)行時(shí)服務(wù)

  <4> 處理運(yùn)行時(shí)事件

  A . 管理工作流運(yùn)行時(shí)

  管理工作流運(yùn)行時(shí),涉及到兩個(gè)重要的方法:StartRuntime和StopRuntime。

  StartRuntime:這個(gè)方法啟動(dòng)工作流運(yùn)行時(shí)引擎和工作流運(yùn)行時(shí)引擎服務(wù),當(dāng)StartRuntime被調(diào)用時(shí),會(huì)首先檢查運(yùn)行時(shí)核心服務(wù)是否被添加到運(yùn)行時(shí)中。核心服務(wù)即指:派生自  WorkflowCommitWorkBatchService(工作流事務(wù)服務(wù))和WorkflowSchedulerService(工作流調(diào)度服務(wù))的計(jì)劃程序服務(wù)。如果哪一個(gè)缺失,那么運(yùn)行時(shí)就會(huì)為每一個(gè)服務(wù)創(chuàng)建一個(gè)默認(rèn)的服務(wù),即:DefaultWorkflowCommitWorkBatchService服務(wù)和DefaultWorkflowSchedulerService服務(wù),然后將他們加載到運(yùn)行時(shí)服務(wù),之后通過(guò)服務(wù)的Start方法啟動(dòng)服務(wù),并將IsStart屬性設(shè)置為true,并且觸發(fā)Started事件。

  B. 啟動(dòng)和管理工作流實(shí)例

  首先需要的是創(chuàng)建一個(gè)工作流實(shí)例,我們常用的是使用工作流運(yùn)行時(shí)實(shí)例下的Create(type)方法來(lái)創(chuàng)建工作流實(shí)例。

  然后用這個(gè)工作流實(shí)例的Start方法,啟動(dòng)自身。

  這個(gè)時(shí)候,如果工作流運(yùn)行時(shí)未開(kāi)啟,也就是尚未調(diào)用WorkflowRuntime的Start方法,那么這時(shí)會(huì)自動(dòng)地去調(diào)用Start開(kāi)啟工作流運(yùn)行時(shí)。

  C. 管理運(yùn)行時(shí)服務(wù)

  WorkflowRuntimeService類:這個(gè)類是工作流運(yùn)行時(shí)引擎核心服務(wù)的抽象基類。我們把他叫做運(yùn)行時(shí)服務(wù)。這些服務(wù)運(yùn)行在工作流運(yùn)行時(shí)的環(huán)境下,對(duì)用戶不可見(jiàn)。例如我們之前提到的WorkflowSchedulerService,WorkflowCommitWorkBatchService服務(wù)都是派生自WorkflowRuntimeService類。

image

  從WorkflowRuntimeService派生的服務(wù)都可以由工作流運(yùn)行引擎啟動(dòng)或停止。

  我們可以向運(yùn)行時(shí)服務(wù)增加或者刪除服務(wù),對(duì)應(yīng)的方法為AddService()和RemoveService()。

  當(dāng)然,我們也可以獲得某一個(gè)工作流運(yùn)行時(shí)下的所有服務(wù):對(duì)應(yīng)方法為GetService()和GetAllServices()方法。

  另外,我們可以去根據(jù)某一個(gè)運(yùn)行時(shí)服務(wù)的State屬性去獲得該運(yùn)行時(shí)服務(wù)的運(yùn)行狀況。

  D. 處理運(yùn)行時(shí)事件

  其中包括工作流運(yùn)行時(shí)的事件和工作流實(shí)例相關(guān)的事件。

  例如:

  WorkflowRuntime的Started,Stopped事件

  WorkflowInstance的WorkflowStarted,WorkflowStopped事件。

  3. WorkflowInstance類

  WorkflowInstance:表示一個(gè)工作流實(shí)例。

  他本質(zhì)上是工作流運(yùn)行時(shí)引擎所使用的實(shí)際工作流的代理。通過(guò)包含在WorkflowInstance類里的方法,宿主程序可以指示工作流運(yùn)行引擎在工作流實(shí)例上進(jìn)行操作。

  我們也可以把他看成我們一個(gè)工作流類定義的外包裝。

  4. 持久化點(diǎn)

  我們知道,工作流其中有一個(gè)特點(diǎn)是持久性。

  也就是說(shuō),比如我們有一個(gè)審批流,你不能因?yàn)?a href=/yuedu/fuwuqi/ target=_blank class=infotextkey>服務(wù)器中間突然斷電,而讓整個(gè)審批流的狀態(tài)丟失。

  所以說(shuō),我們需要一個(gè)可以持久化的介質(zhì)來(lái)持久化我們的工作流。這個(gè)持久化介質(zhì)比較常用的就是數(shù)據(jù)庫(kù)。

  當(dāng)然,我們?cè)谶@里并不是討論持久化介質(zhì),而是討論持久化點(diǎn)。什么是持久化點(diǎn),也就是說(shuō)我們的工作流不能每進(jìn)行一步,我們就去將他持久化一次,這樣浪費(fèi)資源和效率。所以我們會(huì)在持久化點(diǎn)將當(dāng)前的工作流實(shí)例持久化。

  在生命周期中,持久化點(diǎn)常常發(fā)生在以下時(shí)刻:

  <1> 在工作流實(shí)例完成或終止前

  <2> 在工作流實(shí)例編程空閑之后

  <3> 在工作流實(shí)例被顯式地卸載后

  <4> 當(dāng)具有PersistOnClose特性的活動(dòng)完成后(PersistOnCloseAttribute:當(dāng)經(jīng)過(guò)裝飾的活動(dòng)完成之后,必須持久化當(dāng)前工作流實(shí)例)

  并且,持久化服務(wù)對(duì)于終端用戶是不可見(jiàn)的。

 

NET技術(shù)一步一步學(xué)WF系列(三),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本乱人伦在线观看免费 | 四虎永久在线免费观看 | 久久综合亚洲伊人色 | 精品国产污污免费网站 | 热久久视久久精品18国产 | 性色aⅴ在线观看swag | 免费人成网站尤物在线观看 | 在线成人免费视频 | 微拍秒拍99福利精品小视频 | 色悠综合 | 亚洲一区二区免费在线观看 | 四虎综合九九色九九综合色 | 精品午夜久久福利大片免费 | 大量国产激情视频在线观看 | 色婷婷一区 | 久久成年片色大黄全免费网站 | 成人春色在线观看免费网站 | 婷婷中文在线 | 国产一区二区精品在线观看 | 成人信息集中地 | 大伊人久久 | 香蕉人人超人人超免费看视频 | 成人在线a | 四虎影视国产精品永久在线 | 国产大片91精品免费看3 | 色综合视频一区二区三区 | baoyu113成人免费视频网页 | 欧美黑人50巨大v | 九色精品视频在线观看 | 国产热视频 | dyav午夜片| 亚洲欧美一区二区三区不卡 | 天天做天天玩天天爽天天 | 欧美综合区| 国产亚洲视频在线 | 六月色婷婷| 国产大片免费观看中文字幕 | 亚洲第9页 | 青青伊人91久久福利精品 | 成人在色线视频在线观看免费大全 | 国产精品手机在线 |