사용자 지정 통신 활동 만들기
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.