다음을 통해 공유


ReceiveActivity 활동 사용

ReceiveActivity 활동은 워크플로에서 서비스 계약 작업을 구현하도록 디자인되었습니다. 서비스 계약이 제공된 경우 ReceiveActivity 활동은 클라이언트에서 서비스에 연결한 다음 포함된 자식 활동을 실행할 때까지 기다립니다.

ReceiveActivity 활동은 Windows Workflow Foundation 클래스를 사용하여 서비스 계약을 빌드할 수 있거나(워크플로 중심) WCF(Windows Communication Foundation)을 사용하여 이미 정의되어 있는(계약 중심) 서비스 계약 작업을 구현하는 기능이 있습니다. 서로 다른 워크플로 서비스 제작 스타일에 대한 자세한 내용은 워크플로 서비스 제작 스타일을 참조하십시오.

ReceiveActivity 활동을 사용하여 서비스 계약 구현

ReceiveActivity 활동은 실행되도록 예약되도록 예약되는 경우 서비스 끝점에서 클라이언트로부터 들어오는 연결을 수신합니다. ReceiveActivity 활동은 서비스 계약에 정의된 단일 작업만 구현할 수 있습니다. 작업은 TypedOperationInfo 개체를 사용하여 ReceiveActivity 활동과 연결됩니다. TypedOperationInfo 클래스에는 ContractType에 대한 정보, 작업의 이름 및 클라이언트에서 작업을 성공적으로 실행하는 데 필요한 ID 정보가 포함되어 있습니다. 다음 예제에서는 ReceiveActivity 활동 및 연결된 TypedOperationInfo 개체를 만들어 서비스 계약에 정의된 작업을 구현하는 방법을 보여 줍니다. 서비스 계약은 이전 단원에 나와 있는 동일한 계약입니다.

this.doWorkReceiveActivity = new ReceiveActivity();
TypedOperationInfo doWorkOperationInfo = new TypedOperationInfo();

this.doWorkReceiveActivity.CanCreateInstance = true;
this.doWorkReceiveActivity.Name = "doWorkReceiveActivity";
doWorkOperationInfo.ContractType = typeof(Microsoft.WorkflowServices.Samples.IContractFirstService);
doWorkOperationInfo.Name = "DoWork";
doWorkOperationInfo.PrincipalPermissionRole = "";
this.doWorkReceiveActivity.ServiceOperationInfo = doWorkOperationInfo;

작업은 반환 값뿐만 아니라 원하는 수의 매개 변수를 지원할 수 있습니다. 이를 지원하기 위해 ReceiveActivity 활동은 ParameterBindings 속성을 통해 Windows Workflow Foundation의 매개 변수 바인딩 메커니즘을 사용합니다. 다음 예제에서는 매개 변수 바인딩을 사용하여 워크플로 클래스 속성을 위의 계약에 나와 있는 작업의 반환 값과 연결하는 방법을 보여 줍니다. 이 예제에서 ActivityBind 개체는 워크플로 서비스 클래스 구현에서 정의된 ReturnValue 문자열 속성을 사용하여 만들어집니다. 그런 다음 WorkflowParameterBinding이 만들어지고 SetBinding 메서드를 사용하여 ActivityBind 개체와 연결됩니다. 마지막으로 매개 변수 바인딩은 ParameterBindings 컬렉션에 추가되어 ReceiveActivity 활동과 연결됩니다.

ActivityBind activitybind1 = new ActivityBind();

activitybind1.Name = "ContractFirstServiceWorkflow";
activitybind1.Path = "ReturnValue";
WorkflowParameterBinding returnValueBinding = new WorkflowParameterBinding();
returnValueBinding.ParameterName = "(ReturnValue)";
returnValueBinding.SetBinding(WorkflowParameterBinding.ValueProperty, ((ActivityBind)(activitybind1)));
this.doWorkReceiveActivity.ParameterBindings.Add(returnValueBinding);

서비스 바인딩 및 끝점 만들기

클라이언트에서 워크플로 서비스에 연결하려면 주소, 바인딩 및 계약 형식 정보를 사용하여 끝점을 구성해야 합니다. 이 작업은 응용 프로그램 구성 파일을 사용하여 수행할 수 있습니다. 끝점 정보 외에도 서비스가 나타내는 특정 동작도 사용할 수 있습니다. 이 항목에서 사용되는 계약의 경우 아래에 나와 있는 App.config 파일을 통해 클라이언트에서 서비스에 연결하여 정보를 교환하고 서비스 자체에 대한 계약 정보를 다운로드할 수 있습니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.WorkflowServices.Samples.ContractFirstServiceWorkflow" behaviorConfiguration="ServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="https://localhost:8888/ContractFirstService.svc" />
          </baseAddresses>
        </host>
        <endpoint address ="" binding="wsHttpContextBinding" contract="Microsoft.WorkflowServices.Samples.IContractFirstService" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceCredentials>
            <windowsAuthentication
                allowAnonymousLogons="false"
                includeWindowsGroups="true" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

ReceiveActivity 활동을 사용할 수 있는 특정한 고급 시나리오가 있습니다. 자세한 내용은 워크플로 서비스와 대화를 참조하십시오.

참고 항목

참조

ReceiveActivity
ServiceContractAttribute
OperationContractAttribute
TypedOperationInfo
ActivityBind
WorkflowParameterBinding
ParameterBindings

개념

워크플로 서비스 제작 스타일

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.