使用HandleEternalEvent活動(dòng)分析和總結(jié)_第1頁(yè)
使用HandleEternalEvent活動(dòng)分析和總結(jié)_第2頁(yè)
使用HandleEternalEvent活動(dòng)分析和總結(jié)_第3頁(yè)
使用HandleEternalEvent活動(dòng)分析和總結(jié)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、事件活動(dòng)相反的調(diào)用過(guò)程是宿主應(yīng)用程序觸發(fā)的事件被工作流捕獲進(jìn)行處理(盡管工作流事件處 理可被用在更廣泛的任務(wù)中,而不僅僅是和宿主進(jìn)行通信)。在第八章中,我提到過(guò)在對(duì)工作 流用來(lái)處理事件的活動(dòng)進(jìn)行表達(dá)后,我們還將重溫宿主/工作流之間的通信,在本章中我 們將完成這件事。學(xué)習(xí)完本章,你將掌握:,使用HondlExtnolEvnt活動(dòng)創(chuàng)立特定的事件處理程序.在你的工作流中使用DHoy活動(dòng).在你的工作流中使用EventDriven活動(dòng).在你的工作流中使用Listen活動(dòng)5JIMEventHandlingScope活動(dòng)在活動(dòng)并發(fā)執(zhí)行的情況下是怎樣監(jiān)聽(tīng)事件的在第八章(“調(diào)用外部方法和工作流”)中,你看過(guò)工作

2、流怎樣使用CHExtemcilMMhod 活動(dòng)來(lái)和宿主應(yīng)用程序進(jìn)行通信。當(dāng)工作流調(diào)用一個(gè)外部方法時(shí),使用一個(gè)你提供的本地通信 服務(wù),該宿主應(yīng)用程序會(huì)收到一個(gè)事件,然后宿主對(duì)數(shù)據(jù)進(jìn)行處理并產(chǎn)生一些相應(yīng)的動(dòng)作。相反的調(diào)用過(guò)程是宿主應(yīng)用程序觸發(fā)的事件被工作流捕獲進(jìn)行處理(盡管工作流事件處 理可被用在更廣泛的任務(wù)中,而不僅僅是和宿主進(jìn)行通信)。在第八章中,我提到過(guò)在對(duì)工作 流用來(lái)處理事件的活動(dòng)進(jìn)行表達(dá)后,我們還將重溫宿主/工作流之間的通信,在本章中我們 將完成這件事。在目前為止的其它章節(jié)中,我都是單獨(dú)地對(duì)某個(gè)工作流活動(dòng)進(jìn)行描述,然后提供一個(gè)小應(yīng) 用程序來(lái)演示該活動(dòng)的操作過(guò)程。和這些章節(jié)不同,本章將在一

3、個(gè)例如應(yīng)用程序中對(duì)多個(gè)活動(dòng)進(jìn)行 描述和演示。為什么這樣做呢?因?yàn)槲以谶@里要描述的這些活動(dòng)都是相互關(guān)聯(lián)互相依賴(lài)的。我不 能演示其中一個(gè)活動(dòng)而對(duì)其它的活動(dòng)不進(jìn)行演示。Listen活動(dòng)可作為EventDriven活動(dòng)的容 器。在EventDrivn活動(dòng)的內(nèi)部,你還會(huì)不出所料找到唯一的一個(gè)HondleExterncilEvnt活動(dòng)等等。因此在本章中我將從始至終只創(chuàng)立一個(gè)應(yīng)用程序來(lái)對(duì)這些 活動(dòng)進(jìn)行描述和演示。“宿主到工作流”這一節(jié)是本章的主線。我們首先從 HandleExternalEvent 活動(dòng)開(kāi)始。HandleExternalEvent 活動(dòng)不管在你的工作流中在何處處理事件,也不管你的工作流正處于

4、執(zhí)行狀態(tài)時(shí)所發(fā)現(xiàn)要執(zhí)行 的是什么樣的活動(dòng)組合,只要當(dāng)一個(gè)事件來(lái)到了你的工作流路徑當(dāng)中,HcindlEx怕rncilEvent活動(dòng)就是最終去處理該事件的工作流活動(dòng)。對(duì)我來(lái)說(shuō),.N日的強(qiáng)大的 功能特性很多,它的觸發(fā)和處理事件的能力就是這些最強(qiáng)大的功能中的一個(gè)。包括工作流事件 的處理也同樣強(qiáng)大。HandleExternalEvent活動(dòng)的作用是響應(yīng)一個(gè)基于lEventActivity接口的事件,它有三 個(gè)主要的成員:QueueNome屬性、Subscribe和Unsubscribe方法。QueueNome表示正 等待該事件的工作流隊(duì)列,而Subscribe和Unsubscribe方法用來(lái)把你的事件處

5、理程序?qū)⒁?接收(或者不將進(jìn)行接收)的特定事件實(shí)例告知工作流運(yùn)行時(shí)。HandleExternalEvent活動(dòng)本身也可和CcillExternQlMethod活動(dòng)一起使用(我們?cè)诘? 章中看到過(guò))。工作流使用CQllExternolMMhod活動(dòng)來(lái)把數(shù)據(jù)發(fā)送給宿主應(yīng)用程序,但是 在工作流執(zhí)行時(shí),工作流使用HcindQExterncilEvnt來(lái)接收從宿主中發(fā)送過(guò)來(lái)的數(shù)據(jù)。備注:牢記:使用外部數(shù)據(jù)交換的時(shí)機(jī)并不僅僅是在把數(shù)據(jù)從你的宿主應(yīng)用程序發(fā)送到工作 流的時(shí)候。當(dāng)你創(chuàng)立你的工作流實(shí)例的時(shí)候,你可總是為其提供初始數(shù)據(jù)。但是,一旦工作流 正在執(zhí)行時(shí),對(duì)于直接和你的宿主應(yīng)用程序進(jìn)行本地通信來(lái)說(shuō),它是

6、唯一可使用的機(jī)制(當(dāng)然也 可使用更加間接的方式替代,例如使用FTP協(xié)議或者Web服務(wù)調(diào)用這些手段)。表10-1和表10-2歹U出了使用HondleExtemolEvent活動(dòng)時(shí)經(jīng)常用到的一些主要的屬性 和方法。注意有些方法和屬性是所有活動(dòng)共有的(如在第四章“活動(dòng)和工作流類(lèi)型介紹”中表4- 1和表4-2展示的一樣)。我在此展示的屬性和方法無(wú)疑不是所有可使用的屬性和方法,但他們卻是經(jīng)常要被用到的。表10-1經(jīng)常用到的HondleExternolEvnt活動(dòng)的屬性屬性功能Correlat ionToke n獲取或設(shè)置一個(gè)到關(guān)聯(lián)標(biāo)記(correlation token)的綁定。我們將在第17章(關(guān)聯(lián)和

7、本地宿 主通信,z)中處理關(guān)聯(lián)。EventName活動(dòng)將要處理的事件。注意如果沒(méi)有對(duì)其進(jìn)行設(shè)置,該活動(dòng)將不會(huì)對(duì)事件進(jìn)行監(jiān)聽(tīng)并且和宿主 通信也就不可能進(jìn)行。奇怪的是,忽略該屬性值你不會(huì)收到任何錯(cuò)誤驗(yàn)證信息。Interfac eType獲取或設(shè)置進(jìn)行通信所要使用的接口類(lèi)型。該接口必須使用ExternalDataExchange特性進(jìn)行 裝飾(標(biāo)記)。(你或許可回憶一下第8章,你為GIIExternalMethod方法提供了一個(gè)相同的 接口。)表10-2經(jīng)常用到的HandleExternalEvent活動(dòng)的方法方 法功能Onl nvok ed這是一個(gè)有很用的保護(hù)型(protected)方法,它用來(lái)把

8、本領(lǐng)件參數(shù)中的值和你工作流中的字段或 依賴(lài)屬性進(jìn)行綁定。重寫(xiě)該方法(或者處理它所觸發(fā)的事件)是檢索來(lái)自于宿主并被保存到事件參 數(shù)中的數(shù)據(jù)一個(gè)主要的機(jī)制,通常,你會(huì)創(chuàng)立一個(gè)自定義的事件參數(shù)來(lái)把數(shù)據(jù)嵌入進(jìn)參數(shù)對(duì)象自身 中。盡管你能直接從Visucd Studio的工具箱中使用HondleExtrncdEvent活動(dòng),但更普遍 的情形是使用你在第8章中看過(guò)的wcaexe工具來(lái)為你正使用的通信接口創(chuàng)立一個(gè)派生自 HondleExternolEvent的自定義類(lèi)。例如,假如在你的接口中定義了一個(gè)名稱(chēng)為 SendDotoToHost的事件,wco.exe將會(huì)生成一個(gè)稱(chēng)作SendDcitciToHost的新

9、活動(dòng)(它派生 自 HandleExternalEvent),并為你指定了EventNome 和 InterfciceType,而且通過(guò)你創(chuàng)立 的事件參數(shù)也為你和“ndDotoToHost事件進(jìn)行了數(shù)據(jù)綁定。在本章晚些時(shí)候我將提供一個(gè)例子。使用HandleExternalEvent很容易,只需簡(jiǎn)單地在你的工作流中放入該活動(dòng),指定接口和 事件名。假如你需要的話,還可為Invoked事件提供一個(gè)event handler,然后就可執(zhí)行你的 工作流了。假如你使用wca.exe,就可為你提供一個(gè)派生自HandleExternalEvent的活動(dòng), 你可直接把它拖拽到你的工作流中,在屬性窗口中添加綁定,把事件參數(shù)中的數(shù)據(jù)和一個(gè)局部字 段或者依賴(lài)屬性綁定在一起。在你的工作流中有了HandleExternalEvent活動(dòng)后,在等待事件發(fā)生時(shí)所有通過(guò)該順序流 的處理

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論