引言:
本文的重点不是如何使用in,out参数,而是WF如何接收自身之外的数据
在工作流执行过程中,往往需要外部环境传递数据给工作流。
这可以从两个角度理解(杜撰):
数据类型:审核数据、业务数据。
数据传递的阶段:流程发起阶段、流程执行过程中。
开始
流程发起阶段,可以通过Dictionary传递参数。
在流程执行过程,采用书签传递参数。
一般而言,dictionary可以承载比较复杂的数据(一次可能需要传递多个业务数据),通过key-value与流程的变量一一映射。
利用书签传递dictinary可能很难一一映射(期待有人拍砖),所以在传递多个参数的时候,可以考虑使用自定义数据类型来解决。
如下图
demo梳理
1 自定义类:
public class BookResult
{
public int days { get; set; }
public string result { get; set; }
}
2 Rev(流程变量)为BookResult类型,判断节点的条件:Rev.days > 3
3 流程总共两步,第2通过书签传递Rev
public void Excute(Guid id, string bookmark,BookResult rev)
{
WorkflowApplication WFApp = LoadInstance(id);
System.Console.WriteLine("恢复书签");
WFApp.ResumeBookmark(bookmark, rev);
instanceUnloaded.WaitOne();
}
原始代码:https://files.cnblogs.com/wreading//WF.rar(如有问题,请指正,本人对WF4研究不深)