首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >构建WCF服务,在4.0中创建多个不同的工作流并与之通信

构建WCF服务,在4.0中创建多个不同的工作流并与之通信
EN

Stack Overflow用户
提问于 2011-01-05 10:59:49
回答 1查看 578关注 0票数 0

我是工作流4.0和WCF的新手,我很难创建一个创建、运行和与不同类型的工作流进行通信的WCF服务。

使用工作流3.5,我能够创建一个很好的webservice,它创建并破坏不同类型的工作流,并允许一个接口与不同类型的工作流进行对话。例如,在3.5中创建给定代码的工作流:(其中代码对应于工作流类型)

代码语言:javascript
运行
复制
  [WebMethod]
    public string CreateWorkflow(int code)
    {
        WorkflowRuntime runtime = createRuntime();
        try
        {
            Type type = GetWorkflowType(code);
            string reply = "";
            WorkflowInstance instance =
                runtime.CreateWorkflow(type);
            instance.Start();
            reply = instance.InstanceId.ToString();
            instance.Unload();
            return reply;
        }
        catch (Exception e)
        {
            return e.ToString();
        }
        finally
        {
            closeRuntime(runtime);
        }
    }

然后与任何类型的工作流通信:

代码语言:javascript
运行
复制
          ..
          WorkflowInstance instance = runtime.GetWorkflow(new Guid(Id));
          PassDataEventArgs eve = new PassDataEventArgs(instance.InstanceId, data);
          InputData(null, eve);
          ..

是否可以使用WCF和工作流4.0提供这样的接口?我已经成功地使用WCF创建了不同类型的工作流,但是为了与它们通信,我不知道如何传递数据。理想情况下,在我的WCF服务上调用像passData(Guid,对象数据)这样的方法会将这些数据传递给任意类型的工作流实例(如果工作流处于不正确的状态以接收数据,则捕获错误)。有谁能告诉我如何在单个WCF服务中实现跨多个工作流类型的通用通信?

EN

回答 1

Stack Overflow用户

发布于 2011-01-05 15:59:45

在WF4中,将工作流作为服务运行的通常方法是使用WorkflowServiceHost。但是,这仅限于每个WorkflowServiceHost的单个工作流定义。如果您想要多个工作流,可以使用多个WorkflowServiceHost。

现在,您可以创建一个通用服务,该服务将接受所有消息,检查它们,并根据某些条件将它们传递给正确的WorkflowServiceHost。另一种选择是不使用WorkflowServiceHost,而是使用WorkflowApplication,但这意味着编写大量管道代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4603293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档