다음을 통해 공유


작업 2: IOrderingService 인터페이스 정의

이 작업에서는 새로운 주문이 제출될 때 호스트 응용 프로그램에서 상태 시스템 워크플로로 데이터를 전달하는 데 사용되는 클래스와 IOrderingService 인터페이스를 정의합니다.

IOrderingService 인터페이스는 간단한 주문 양식 호스트 응용 프로그램과 OrderProcessingWorkflow 간의 통신을 더욱 용이하게 만드는 데 사용됩니다.

인터페이스에는 단일 메서드와 정의된 이벤트가 포함되어 있습니다.

  • ItemStatusUpdate 메서드는 OrderProcessingWorkflow에서 호스트 응용 프로그램에 상태 업데이트를 보내는 데 사용됩니다.

  • NewOrder 이벤트는 WaitingForOrder 상태 활동을 시작하는 초기 이벤트입니다. 이 이벤트는 사용자가 새로운 주문을 제출할 때마다 간단한 주문 양식 호스트 응용 프로그램에서 발생합니다.

참고

이 연습을 차례대로 수행하는 것이 좋지만 반드시 그럴 필요는 없습니다. 샘플 프로젝트를 열고 다음 단원의 단계를 진행하여 이 연습을 시작할 수 있습니다.

NewOrderEventArgs 클래스 정의

먼저, 주문이 제출될 때 호스트 응용 프로그램에서 상태 시스템 워크플로로 데이터를 전달하는 데 사용되는 클래스를 정의해야 합니다..

NewOrderEventArgs 클래스를 정의하려면

  1. StateMachineWorkflow 소스 파일에서 EventArgs 기본 클래스에서 파생되는 NewOrderEventArgs라는 새 public 클래스를 만듭니다.

    SerializableAttribute를 적용하여 클래스를 serialize 가능하게 만듭니다. 이 클래스는 Microsoft.Samples.Workflow.Tutorials.StateMachineWorkflow 네임스페이스에 정의되어야 합니다.

    <Serializable()> _
    Public Class NewOrderEventArgs : Inherits ExternalDataEventArgs
    End Class
    
    [Serializable]
    public class NewOrderEventArgs : ExternalDataEventArgs
    {
    }
    
  2. NewOrderEventArgs 클래스에서 다음 필드를 선언합니다.

    액세스 한정자 형식 이름

    Private

    System.Guid

    orderItemId

    Private

    System.String

    orderItem

    Private

    System.Int32

    orderQuantity

    private Guid orderItemId;
    private string orderItem;
    private int orderQuantity;
    
  3. 다음을 매개 변수로 사용하는 NewOrderEventArgs 클래스에 대한 생성자를 만듭니다.

    생성자의 본문에서 생성자에 전달된 연결된 매개 변수를 사용하여 이전 단계에서 만든 각 필드를 할당합니다.

    public NewOrderEventArgs(Guid itemId, string item, int quantity)
        : base(itemId)
    {
        this.orderItemId = itemId;
        this.orderItem = item;
        this.orderQuantity = quantity;
    }
    
  4. NewOrderEventArgs 클래스에서 ItemId라는 public System.Guid 속성을 만듭니다.

    이 속성에 대한 get 메서드를 만들고 orderItemId 필드의 값과 orderItemId 필드를 설정하는 set 메서드를 반환합니다.

    public Guid ItemId
    {
        get { return orderItemId; }
        set { orderItemId = value; }
    }
    
  5. NewOrderEventArgs 클래스에서 Item이라는 public System.String 속성을 만듭니다.

    이 속성에 대한 get 메서드를 만들고 orderItem 필드의 값과 orderItem 필드를 설정하는 set 메서드를 반환합니다.

    public string Item
    {
        get { return orderItem; }
        set { orderItem = value; }
    }
    
  6. NewOrderEventArgs 클래스에서 Quantity라는 public System.Int32 속성을 만듭니다.

    이 속성에 대한 get 메서드를 만들고 orderQuantity 필드의 값과 orderQuantity 필드를 설정하는 set 메서드를 반환합니다.

    Tut_Create_State_Machine#14
    

인터페이스 만들기

다음 작업으로, IOrderingService 인터페이스를 정의합니다. 이 인터페이스는 워크플로와 호스트 응용 프로그램 간의 통신에 사용됩니다.

절차 제목

IOrderingService 인터페이스를 정의하려면

  1. NewOrderEventArgs 클래스의 정의 뒤에서 IOrderingService라는 public 인터페이스를 만듭니다.

    이 인터페이스가 호스트 응용 프로그램과 OrderProcessingWorkflow 간의 통신에 사용되기 때문에 ExternalDataExchangeAttribute 특성을 적용합니다.

    <ExternalDataExchange()> _
    Public Interface IOrderingService
    End Interface
    
    [ExternalDataExchange]
    public interface IOrderingService
    {
    }
    
  2. IOrderingService 인터페이스에서 다음을 매개 변수로 사용하는 ItemStatusUpdate라는 메서드를 만듭니다.

    • orderId라는 Guid

    • newStatus라는 String

    void ItemStatusUpdate(Guid orderId, string newStatus);
    
  3. IOrderingService 인터페이스에서 NewOrderEventArgs 형식의 제네릭 EventHandler가 형식인 NewOrder라는 새 이벤트를 만듭니다.

    event EventHandler<NewOrderEventArgs> NewOrder;
    

코드 컴파일

코드 컴파일에 대한 자세한 내용은 코드 컴파일을 참조하십시오.

다음 작업 작업 3: IOrderingService 인터페이스 구현에서는 간단한 주문 양식 호스트 응용 프로그램에서 이 인터페이스를 구현합니다.

참고 항목

작업

작업 3: IOrderingService 인터페이스 구현

참조

ExternalDataExchangeAttribute

개념

워크플로 및 응용 프로그램 통신
상태 시스템 워크플로

기타 리소스

자습서: 상태 시스템 워크플로 만들기
Communications
HostCommunication Sample
Ordering State Machine
Simple State Machine

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.