【发布时间】:2010-03-26 03:36:54
【问题描述】:
可以使用WorkflowInstance.CreateWorkflow 为工作流定义一些起始值,如下所示:
using(WorkflowRuntime runtime = new WorkflowRuntime())
{
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("First", "something");
parameters.Add("Second", 42);
WorkflowInstance instance =
runtime.CreateWorkflow(typeof(MyStateMachineWorkflow), parameters);
instance.Start();
waitHandle.WaitOne();
}
这样,MyStateMachineWorkflow 实例被创建,First 和 Second 公共属性获取该字典值。
但我正在使用 WCF;到目前为止,我设法创建了一个Start 方法,它接受这两个参数,并通过在我的ReceiveActivity 上使用绑定来设置所需的字段:
using (WorkflowServiceHost host =
new WorkflowServiceHost(typeof(MyStateMachineWorkflow)))
{
host.Open();
ChannelFactory<IMyStateMachineWorkflow> factory =
new ChannelFactory<IMyStateMachineWorkflow>("MyStateMachineWorkflow");
IMyStateMachineWorkflow proxy = factory.CreateChannel();
// set this values through binding on my ReceiveActivity
proxy.Start("something", 42);
}
虽然这可行,但会产生异常:该方法应该只被调用一次。
如何通过 WCF 传递这些参数来启动工作流实例?在我的测试中,我只是在调用该代理方法后通过线路与我的工作流程进行交互。还有其他方法吗?
【问题讨论】:
标签: wcf .net-3.5 workflow-foundation