WF4:活动关联Activity correlation

简介:

Activity correlation:活动关联,确保两个活动一起工作。

当使用多个活动来完成单个操作时需要使用Activity correlation,WF4中的Send和ReceiveReply活动就是很好的例子。当我们使用ReceiveAndSendReply 或 SendAndReceiveReply 模板时,需要的活动的关联都已经自动的配置好了,但是如果我们在代码中使用Send 和 ReceiveReply或者 Receive 和SendReply活动时,就需要自己手动去实现,如没有改关联会有下面异常:System.InvalidOperationException:

The Send activity is configured with a request/reply Operation 'GetData', however, there is no ReceiveReply activity paired with it. Please pair Send with ReceiveReply and correlate them using a CorrelationHandle.

有不同的方式来配置活动关联,第一种就是使用CorrelationScope活动,CorrelationScope会自动的创建所需要的关联句柄,并且消息活动将会使用这个句柄。

下面是例子:

 

static Activity CreateWorkflow()
{
    var getDataResult = new Variable<string>();
    var handel = new Variable<CorrelationHandle>();
 
    var send = new Send()
    {
        CorrelationInitializers =
        {
            new RequestReplyCorrelationInitializer()
            { 
                CorrelationHandle = handel
            }
        },
        OperationName = "GetData",
        ServiceContractName = "IService1",
        Endpoint = new Endpoint()
        {
            Binding = new BasicHttpBinding(),
            AddressUri = new Uri("http://localhost:8080/GetDataService/")
        },
        Content = new SendParametersContent()
        {
            Parameters = 
            {
                {"value", new InArgument<int>(42)}
            }
        }
    };
 
    var receive = new ReceiveReply()
    {
        Request = send,
        Content = new ReceiveParametersContent
        {
            Parameters =
            {
                {"GetDataResult", new OutArgument<string>(getDataResult)}
            }
        }
    };
 
    var workflow = new Sequence()
    {
        Variables = { getDataResult, handel },
        Activities = 
        {
            send, 
            receive,
            new WriteLine() { Text = getDataResult } 
        }
    };
 
    return workflow;
}

 

上面我们是使用RequestReplyCorrelationInitializer,我们还可以使用CorrelationScope来完成同样的事情,创建同样的工作流,如下:

static Activity CreateWorkflow()
{
    var getDataResult = new Variable<string>();
 
    var send = new Send()
    {
        OperationName = "GetData",
        ServiceContractName = "IService1",
        Endpoint = new Endpoint()
        {
            Binding = new BasicHttpBinding(),
            AddressUri = new Uri("http://localhost:8080/GetDataService/")
        },
        Content = new SendParametersContent()
        {
            Parameters = 
            {
                {"value", new InArgument<int>(42)}
            }
        }
    };
 
    var receive = new ReceiveReply()
    {
        Request = send,
        Content = new ReceiveParametersContent
        {
            Parameters =
            {
                {"GetDataResult", new OutArgument<string>(getDataResult)}
            }
        }
    };
 
    var workflow = new Sequence()
     {
         Variables = { getDataResult },
         Activities = 
        {  
            new CorrelationScope() 
            {
                Body = new Sequence() 
                { 
                    Activities = { send, receive } 
                } 
            }, 
            new WriteLine() { Text = getDataResult } }
     };
 
    return workflow;
}本文转自生鱼片博客园博客,原文链接:http://www.cnblogs.com/carysun/archive/2009/12/06/wf4-Activitycorrelation.html,如需转载请自行联系原作者
相关文章
SAP WM 通过2-Step Picking创建的TO之间的关联关系
SAP WM 通过2-Step Picking创建的TO之间的关联关系
SAP WM 通过2-Step Picking创建的TO之间的关联关系
SAP WM 2-Step Picking流程里创建的Group的分析
SAP WM 2-Step Picking流程里创建的Group的分析
SAP WM 2-Step Picking流程里创建的Group的分析
SAP RETAIL 为物料组指派Merchandise Hierarchy Level Code
SAP RETAIL 为物料组指派Merchandise Hierarchy Level Code
SAP RETAIL 为物料组指派Merchandise Hierarchy Level Code
|
Java
营销活动之活动创建接口koubei.marketing.campaign.activity.create(创建口令送活动)-Java版
说明:  本帖是测试营销活动创建口令送活动,首先要创建口碑门店,本帖是沙箱环境测试,仅供参考!!   是否支持沙箱环境:支持   接口文档:查看   sdk下载:下载   沙箱Java版营销活动demo:download:营销活动Java版.
685 0
|
Java
营销活动创建接口(koubei.marketing.campaign.activity.create)之创建集点卡活动-java版
说明:  本帖是测试营销活动的创建营销活动之创建集点卡活动,首先要创建口碑门店  测试环境:JAVA1.5+,eclipse   是否支持沙箱环境:支持 接口文档:查看  sdk下载:下载  沙箱Java版营销活动demo:download:营销活动Java版.
509 0