相互關聯本機服務範例
這個範例會示範搭配本機服務使用相互關聯屬性 (Attribute),以便對工作流程執行個體 (Instance) 引發相互關聯事件。當工作流程執行個體可能會接聽本機服務介面上相同事件的不同執行個體時,就必須在本機服務介面上使用相互關聯屬性。
在此範例中,工作流程會建立兩個工作,然後等候這些事件完成時的通知 (來自相同的本機服務事件)。在此情況下,當外部程式碼對工作流程引發事件時,本機服務基礎結構就必須依靠引發之事件中的資料 (相互關聯值),才能將事件傳送到工作流程執行個體中的適當 HandleExternalEventActivity 活動。
ExternalDataExchangeAttribute 屬性 (Attribute) 是必要的屬性,表示本機服務有參與和工作流程之間的資料交換。
CorrelationParameterAttribute 屬性表示根據預設,在介面上所定義方法和事件中之具有指定名稱的參數上,可以找到相互關聯值。下列範例程式碼會示範 CorrelationParameterAttribute 屬性的使用方式:
[CorrelationParameter("taskId")]
public interface ITaskService
CorrelationInitializerAttribute 屬性表示賦予屬性的方法就是初始化相互關聯值的方法,因此必須最先出現在工作流程中 (在本機服務介面上所定義的其他作業之前),才能讓驗證成功。下列範例程式碼會示範 CorrelationInitializerAttribute 屬性的使用方式。
[CorrelationInitializer]
void CreateTask( string taskId, string assignee, string text );
當必須從不同於 CorrelationParameterAttribute 屬性所表示的位置取得相互關聯值時,CorrelationAliasAttribute 屬性便會覆寫特定方法或事件的 CorrelationParameterAttribute 屬性設定。
在建立每個工作之後,工作服務便會顯示訊息方塊,以通知使用者已經建立該工作。當按一下 [確定] 按鈕時,完成工作的事件便會針對所對應的工作識別碼引發。這些是在 CreateTask 活動上設定的相同屬性 (Property),因此這些事件會與正確的 TaskCompleted 活動相互關聯。
建置範例
按一下 [下載範例] 來下載範例。
這樣會將範例專案擷取到本機硬碟上。
按一下 [開始],並依序指向 [程式集] 和 [Microsoft Windows SDK],再按一下 [CMD 殼層]。
移至範例的來源目錄。
在命令提示字元上,輸入 MSBUILD <Solution file name>。
執行範例
- 在 [SDK 命令提示字元] 視窗中,於 CorrelatedLocalService\bin\debug 資料夾 (若是範例的 VB 版本,則是 CorrelatedLocalService\bin 資料夾) 中執行此 .exe 檔案,該資料夾位於此範例的主要資料夾下方。
請參閱
參考
HandleExternalEventActivity
ExternalDataExchangeAttribute
CorrelationInitializerAttribute
CorrelationParameterAttribute
CorrelationAliasAttribute
其他資源
Copyright © 2007 by Microsoft Corporation. All rights reserved.