版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1SqlPersistenervice 持久化數(shù)據(jù)庫(kù)1.1數(shù)據(jù)庫(kù)安裝1.2數(shù)據(jù)庫(kù)時(shí)間格式說明1.3表結(jié)構(gòu)1.3.1 Instane對(duì)這個(gè)表我以前有一個(gè)錯(cuò)誤的性叫法,叫它實(shí)例表,其實(shí)應(yīng)叫未完成事例的運(yùn)行狀態(tài)表uidInstanceID sesus unlocked blocked info modified ownerID在 SqlPersistenervice 數(shù)據(jù)庫(kù)中,時(shí)間值是 GMT 格式的,這樣做的目地是使用的時(shí)間軸,如此可以解決一臺(tái)在的服務(wù)器與一臺(tái)的服務(wù)器就可以協(xié)同工作時(shí)的時(shí)差問題GMT 比時(shí)間晚 8 小時(shí)系統(tǒng)盤Windows.NETFrameworkv3.0Windows Workf
2、low FoundationSQLEN 下SqlPersistenervice_Schema.sql SqlPersistenervice_Logic.sql1.3.2CompletedScope1.4過程2SqlWorkflowPersistenerviceSqlWorkflowPersistenervice 作為一個(gè) Persistenervice 的功能實(shí)現(xiàn)類加載到WorkflowRuntime 中為引擎提供了一種使用 SQLServer 數(shù)據(jù)實(shí)現(xiàn)持久化的功能。SqlWorkflowPersistenervice 類是使用 SQL 數(shù)據(jù)庫(kù)對(duì)工作流狀態(tài)進(jìn)行持久化的服務(wù)為了能夠使用 SqlW
3、orkflowPersistenervice,數(shù)據(jù)庫(kù)還需要啟動(dòng) DTC 服務(wù)2.1 加載說明每當(dāng)引擎起動(dòng)時(shí)(StartRuntime),只要 Instan,并將 ownedUntil 字段設(shè)為加載的時(shí)間e 表中有實(shí)例數(shù)據(jù),就會(huì)將該實(shí)例載入引1. 引擎使用 GetWorkflow 方法,可通過 SqlWorkflowPersistenervice 服務(wù)將存于數(shù)據(jù)庫(kù)uidInstanceID completedScopeID semodifiedownedUntil nextTimer中的實(shí)例加載并返回2.實(shí)例使用 load 方法,可觸發(fā)引擎的 WorkflowLoaded 事件3.沒有經(jīng)過持久化
4、的實(shí)例,調(diào)用 load 方法不會(huì)出錯(cuò),也不產(chǎn)生引擎的 WorkflowLoaded 事件4.加載的持久化實(shí)例不用 load 方法也能直接操作,但這樣不會(huì)產(chǎn)生引擎的 WorkflowLoaded事件,調(diào)用 load 方法可以產(chǎn)生引擎的 WorkflowLoaded 事件,除此之外,我沒跟出什么其他的5.引擎.GetWorkflow(GUID)方法可以返回一個(gè)引存在的實(shí)例2.2 持久化說明1.當(dāng)引擎停止時(shí)(StopRuntime),就會(huì)將引擎內(nèi)的所有工作流實(shí)例存入 InstanownedUntil 字段為空e 表,2.實(shí)例使用 Unload 方法,通過加載到引的 SqlWorkflowPersis
5、ten實(shí)例的內(nèi)存移出與保存到數(shù)據(jù)庫(kù)的操作ervice 服務(wù),完成3.沒有加載 SqlWorkflowPersistenervice 時(shí), 實(shí)例的 TryUnload 方報(bào)異常。注:沒加載 SqlWorkflowPersistenervice 服務(wù)時(shí),引擎停止后,引擎并沒有,引的實(shí)例也存在,只是所有的執(zhí)行都被系統(tǒng)級(jí)掛起,當(dāng)重新啟動(dòng)引擎時(shí),所有的實(shí)例還可繼續(xù)運(yùn)行如果引不存在,SqlWorkflowPersistenervice 服務(wù)會(huì)到數(shù)據(jù)庫(kù)中找該實(shí)例,并將其加載到引擎如果引沒有指定 GUID 的實(shí)例,會(huì)報(bào) Workflow with id GUID not found in se persist
6、entore.如沒加載 SqlWorkflowPersistenervice 服務(wù)報(bào)的異常為 The workflow hosting environment does noversistenervice as required by an operation on the workflow instance4.如果調(diào)用 UnLoad 方法時(shí),實(shí)例在掛起狀態(tài)時(shí)(如:實(shí)例.Suspend)5.如果調(diào)用 UnLoad 方法時(shí),實(shí)例在引創(chuàng)建后,還沒開始執(zhí)行前,2.3 idle 狀態(tài)的持久化idle 狀態(tài)即空閑狀態(tài),如 Delay 結(jié)點(diǎn)就能使實(shí)例進(jìn)入 idle 狀態(tài),并觸發(fā)引擎的WorkflowIdl
7、ed 事件。SqlWorkflowPersistenervice 會(huì)不停的刷 Instane 表,發(fā)現(xiàn)有狀態(tài)為 Delay 的實(shí)例,且 nextTimer 小于當(dāng)前時(shí)間,就執(zhí)行他。所以,持久化 Delay 狀態(tài)的實(shí)例,不用人為加載運(yùn)行,SqlWorkflowPersisten服務(wù)會(huì)自動(dòng)運(yùn)行的。ervice1. 如果調(diào)用 UnLoad 方法時(shí),實(shí)例在運(yùn)行到 Delay 結(jié)點(diǎn)的 idle 狀態(tài)2. 使用 SqlWorkflowPersistenUnload 將其持久化ervice 可以實(shí)現(xiàn)每當(dāng)實(shí)例進(jìn)入 idle 狀態(tài)后,自動(dòng)將調(diào)用可以使用 SqlWorkflowPersisten動(dòng)持久化ervic
8、e 類的構(gòu)造函數(shù)的 unloadOnIdle 參數(shù)設(shè)置是否自如調(diào)用 Unload 方法 sus 值為 0 unlocked 值為 1blocked 值為 1nextTimer 值為實(shí)際 Delay 應(yīng)蘇醒的時(shí)間。sus 值為 4 info 值為空其他同上sus 值為 2info 值為 Suspend 方法的參數(shù)unlocked 值為 1blocked 值為 0 modified 為操作的時(shí)間nextTimer 為 9999-12-31 23:59:59.9973. DelayActivity 的延時(shí)修正DelayActivity 是一個(gè)提供延時(shí)處理的組件,當(dāng)實(shí)例處于Idle 狀態(tài)時(shí),實(shí)例的Un
9、loadOnIdle被置位。等時(shí)間到達(dá)后,該實(shí)例繼續(xù)向下執(zhí)行,這里有一個(gè)問題,就是工作流實(shí)例被不同的進(jìn)程進(jìn)行處理時(shí)的延時(shí)修正問題SqlWorkflowPersistenervice 提供了這個(gè)功能Instane 表的 NextTime 字段就是用于修正延時(shí)時(shí)間用的。SqlWorkflowPersistenervice 的構(gòu)造函數(shù)中還有一個(gè)參數(shù) Loadingerval,此參數(shù)可以使引擎在多少時(shí)間間隔內(nèi)去檢測(cè)那些超時(shí)的工作流實(shí)例,如果超時(shí)了則自動(dòng)進(jìn)行加載并運(yùn)行。也就是引擎要過多久才去刷一次數(shù)據(jù)庫(kù),以查檢是否有到時(shí)的實(shí)例4. 重新加載工作流后,計(jì)時(shí)器不會(huì)恢復(fù)操作的錯(cuò)誤2.4 鎖定問題工作流引擎加載
10、工作流實(shí)例時(shí),鎖定該實(shí)例,這樣其它引擎就不能加載這個(gè)工作流實(shí)例了。當(dāng)工作流實(shí)例保存回?cái)?shù)據(jù)庫(kù)后便解除鎖定狀態(tài),這樣其它引擎便可加載該工作流實(shí)例了。 當(dāng)加載工作流實(shí)例的進(jìn)程突然死掉,則數(shù)據(jù)庫(kù)的鎖定狀態(tài)是不是永遠(yuǎn)都不能了。在 SqlWorkflowPersistenervice 的構(gòu)造函數(shù)中有一個(gè)參數(shù) instanceOwnershipDuration,指明了鎖定工作流實(shí)例的時(shí)間限制。可以依據(jù)現(xiàn)實(shí)情況去估計(jì)一個(gè)工作流實(shí)例在某一個(gè)環(huán)節(jié)處理所用的時(shí)間進(jìn)行設(shè)置,如 10 分鐘。如果處理時(shí)間超過這個(gè)值則會(huì)被其它引擎自動(dòng),也就是說可以由其它引擎來進(jìn)行而不依賴于當(dāng)前的進(jìn)程實(shí)現(xiàn)過程:Instan e 表里 著工作
11、流的實(shí)例,OwnedUntil 字段 了該工作流實(shí)例鎖定的到期時(shí)間,當(dāng)引擎加載一個(gè)工作流實(shí)例時(shí),它會(huì)將當(dāng)前時(shí)間加上 SqlWorkflowPersisten ervice 構(gòu)造函數(shù)中的 instanceOwnershipDuration 參數(shù)指定的時(shí)間,并把相加的時(shí)間存放到 OwnedUntil字段里。數(shù)據(jù)庫(kù)里有一個(gè) 過程 UnlockInstan e,其它的工作流引擎就是用此 過程來被鎖定的工作流實(shí)例。這個(gè)過程是引擎自動(dòng)完成的.WF 的一個(gè) BUG2.5 構(gòu)造函數(shù)說明2.5.1第一種2.5.2第二種2.6 屬性2.7 GetAllWorkflows()方法Retrieves instance
12、 descriptions of all得到所有被持久化的實(shí)例說明,persisted workflows.當(dāng)實(shí)例被持久化后,實(shí)例信息從引擎列表中移出,會(huì)添加到持久化列表中當(dāng)引擎啟動(dòng)后,會(huì)從持久化數(shù)據(jù)庫(kù)中加載所有被持久化的數(shù)據(jù),這時(shí)引擎列表與該列表內(nèi)EnableRetries 屬性Loadingerval 屬性Gets the length of the loadingerval.ServiceInstanceId 屬性Gets the service instance identifier.new SqlWorkflowPersistenervitring connectionString,
13、booloadOnIdle,TimeSpan instanceOwnershipDuration , TimeSpan loadingerval)參數(shù):string connectionString是持久化的數(shù)據(jù)庫(kù)參數(shù):booloadOnIdle為真表示自動(dòng)將調(diào)用 Unload 將 Delay 狀態(tài)的實(shí)例持久化參數(shù):TimeSpan instanceOwnershipDuration 引擎鎖定實(shí)例,防止其他引擎加載的時(shí)間參數(shù):TimeSpan loadingerval 是引擎自動(dòng)到數(shù)據(jù)庫(kù)中查找是否有 idle 到實(shí)例的時(shí)間步長(zhǎng)new SqlWorkflowPersistenervitring
14、connectionString)參數(shù):string connectionString是持久化的數(shù)據(jù)庫(kù)連接字串容相同3 當(dāng)實(shí)例完成后,實(shí)例信息從引擎列表中移出,也從持久化列表中移出2.8 LoadExpiredTimerWorkflowIds()方法Retrieves a list of completed timer instan.As IList(Of Guid)3實(shí)例與持久化相關(guān)的方法Load加載實(shí)例SqlWorkflowPersistenerviWPS=new SqlWorkflowPersistenervice(constring);foreach (Guid guid in SWP
15、S.LoadExpiredTimerWorkflowIds()string v = guid.ToString();SqlWorkflowPersistenerviWPS=new SqlWorkflowPersistenervice(constring); System.Collections.IEnumerable workflows = SWPS.GetAllWorkflows();foreach (SqlPersistenceWorkflowInstanceDescription instanceDescription in workflows)string v=instanceDesc
16、ription.SuspendOrTerminateDescription; Guid guid =instanceDescription.WorkflowInstanceId;bool b = instanceDescription.IsBlocked;DateTime time = instanceDescription.NextTimerExpiration.Value; WorkflowSus st = instanceDescription.Sus;/Wpleted/WorkflowSus.Created/WorkflowSus.Running/WorkflowSuspended/WorkflowSus.Terminated4引擎引持久化相關(guān)的事件WorkflowUnloadedWorkflowLoaded加載的持久化實(shí)例不用 load 方法也能直接操作,但這樣不會(huì)產(chǎn)生引擎的 WorkflowLoaded 事件,調(diào)用 load 方法可以產(chǎn)生引擎的 WorkflowLoaded 事件,除此之外,我沒跟出什么其他的TryUnload從內(nèi)存中卸載實(shí)例,返回如果實(shí)例處
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年廣西公務(wù)員申論考試真題及答案-A卷
- 2025年滬教版高二數(shù)學(xué)上冊(cè)月考試卷
- 2025年人教新起點(diǎn)選修1歷史上冊(cè)月考試卷含答案
- 2025年粵教新版九年級(jí)地理上冊(cè)月考試卷
- 2025年人教五四新版七年級(jí)生物上冊(cè)階段測(cè)試試卷
- 2025年蘇人新版七年級(jí)生物上冊(cè)月考試卷含答案
- 2025年粵人版選擇性必修1語文上冊(cè)階段測(cè)試試卷
- 2025年北師大版八年級(jí)生物下冊(cè)月考試卷含答案
- 二零二五年度木門及木飾面定制化生產(chǎn)與安裝服務(wù)合同4篇
- 二零二五版親子閱讀活動(dòng)組織服務(wù)合同4篇
- 江蘇省蘇州市2024-2025學(xué)年高三上學(xué)期1月期末生物試題(有答案)
- 銷售與銷售目標(biāo)管理制度
- 人教版(2025新版)七年級(jí)下冊(cè)英語:寒假課內(nèi)預(yù)習(xí)重點(diǎn)知識(shí)默寫練習(xí)
- 2024年食品行業(yè)員工勞動(dòng)合同標(biāo)準(zhǔn)文本
- 2025年第一次工地開工會(huì)議主要議程開工大吉模板
- 全屋整裝售后保修合同模板
- 高中生物學(xué)科學(xué)推理能力測(cè)試
- GB/T 44423-2024近紅外腦功能康復(fù)評(píng)估設(shè)備通用要求
- 2024-2030年中國(guó)減肥行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)與投資研究報(bào)告
- 運(yùn)動(dòng)技能學(xué)習(xí)
- 2024年中考英語專項(xiàng)復(fù)習(xí):傳統(tǒng)文化的魅力(閱讀理解+完型填空+書面表達(dá))(含答案)
評(píng)論
0/150
提交評(píng)論