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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論