다음을 통해 공유


사용자 지정 통신 활동 만들기

Windows Workflow Foundation에서는 서비스 클래스 공급자가 통신을 사용자 지정 서비스로 노출할 수 있도록 하는 일련의 기본 클래스를 구현합니다. 즉, 서비스 클래스 메서드와 이벤트가 메시징 및 상관 관계 집합의 세부 사항을 모두 숨기는 도메인 관련 활동의 확장된 집합으로 직접 변환될 수 있습니다. 활동 작성자에게도 이러한 세부 사항이 숨겨질 수 있습니다. 이러한 새 활동의 작성은 인터페이스 정의에서 즉시 이루어지며 활동 작성자는 서비스 클래스의 인터페이스 측면에서 직접 구현할 수 있습니다.

서비스 클래스를 활동으로 노출

다음 단원에서는 특정 도메인의 작업을 나타내는 활동의 확장된 범위로 서비스 클래스를 표현하는 방법에 대해 설명합니다.

CallExternalMethodActivityHandleExternalEventActivity 활동을 사용하여 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

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.