我是工作流4.0和WCF的新手,我很难创建一个创建、运行和与不同类型的工作流进行通信的WCF服务。
使用工作流3.5,我能够创建一个很好的webservice,它创建并破坏不同类型的工作流,并允许一个接口与不同类型的工作流进行对话。例如,在3.5中创建给定代码的工作流:(其中代码对应于工作流类型)
[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);
}
}然后与任何类型的工作流通信:
..
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服务中实现跨多个工作流类型的通用通信?
发布于 2011-01-05 15:59:45
在WF4中,将工作流作为服务运行的通常方法是使用WorkflowServiceHost。但是,这仅限于每个WorkflowServiceHost的单个工作流定义。如果您想要多个工作流,可以使用多个WorkflowServiceHost。
现在,您可以创建一个通用服务,该服务将接受所有消息,检查它们,并根据某些条件将它们传递给正确的WorkflowServiceHost。另一种选择是不使用WorkflowServiceHost,而是使用WorkflowApplication,但这意味着编写大量管道代码。
https://stackoverflow.com/questions/4603293
复制相似问题