建立自訂通訊活動
Windows Workflow Foundation 會實作一組基底類別,讓服務類別提供者能夠將通訊公開為自訂服務。 亦即,服務類別的方法和事件可直接轉譯成一組展開的定義域特定活動,這些活動會隱藏傳訊和相互關聯集的所有詳細資訊。 這些詳細資料甚至可對活動作者隱藏。 直接從介面定義撰寫這些新活動,而活動作者可直接以服務類別介面的方式實作。
將服務類別公開為活動
下節說明將服務類別展示為代表在特定定義域中動作之活動的展開色板。
CallExternalMethodActivity 和 HandleExternalEventActivity 活動可用於在由 ExternalDataExchangeAttribute 屬性識別的工作流程通訊服務介面上傳送和接收訊息。
類別介面上的每個方法和事件在程式設計模型中的表示方式,都是藉由使用與該方法或事件相符的活動來達成。
實作自訂通訊活動
活動作者會為服務類別介面中的每個方法實作一個新活動,為每個事件實作一個活動。 在本範例中使用的通訊介面來自在工作流程使用本機服務。
// Handle External Event Activity.
[ToolboxItemAttribute(typeof(ActivityToolboxItem))]
public partial class HelloWorkflow : HandleExternalEventActivity
{
public HelloWorkflow()
{
base.InterfaceType = typeof(ClassLibrary1.ICommunicationService);
base.EventName = "HelloWorkflow";
}
}
// Call External Method Activity.
[ToolboxItemAttribute(typeof(ActivityToolboxItem))]
public partial class HelloHost : CallExternalMethodActivity
{
public static DependencyProperty messageProperty = DependencyProperty.Register("message", typeof(string), typeof(HelloHost));
public HelloHost()
{
base.InterfaceType = typeof(ClassLibrary1.ICommunicationService);
base.MethodName = "HelloHost";
}
[ValidationOptionAttribute(ValidationOption.Required)]
public string message
{
get
{
return ((string)(this.GetValue(HelloHost.messageProperty)));
}
set
{
this.SetValue(HelloHost.messageProperty, value);
}
}
protected override void OnMethodInvoking(System.EventArgs e)
{
this.ParameterBindings["message"].Value = this.message;
}
}
請參閱
概念
在工作流程中使用相互關聯
建立自訂活動
在工作流程使用本機服務
工作流程與應用程式通訊
其他資源
Communications Samples
Custom Activities Samples
Copyright © 2007 by Microsoft Corporation. All rights reserved.