工作流帮助类:
//让工作流继续沿着书签的位置向下执行
value是向书签传递参数 wfc.ResumeBookmark(bookmarkName,value);
//把传过来的数据value作为输出参数outResult的值 传到书签外面其实执行这个函数
private void MyCallback(NativeActivityContext context, Bookmark bookmark, object value)
{
}
namespace EazyBPMS.WorkFlow { public class WorkFlowApplicationHelper { //创建工作流 public static WorkflowApplication CreateWorkflowApp(Activity activity,string instanceId, Dictionary<string, object> dictionary) { //每次点击的时候都会创建新的工作流实例 WorkflowApplication wfc = new WorkflowApplication(activity, dictionary); //WorkflowInvoker.Invoke(new DemoActivity()); wfc.Idle += a =>//监控,当工作流停下来的时候执行 { Console.WriteLine("工作流停下来了...."); }; //当工作流停顿下来了,进行什么操作,如果返回的是unload 就卸载当前工作流实例 持久化到数据库中 wfc.PersistableIdle = delegate (WorkflowApplicationIdleEventArgs e2) { Console.WriteLine("工作流被卸载了,进行持久化"); return PersistableIdleAction.Unload; }; //监听卸载事件 wfc.Unloaded += a => { Console.WriteLine("工作流被卸载了"); }; //当出现了未处理的异常的时候 wfc.OnUnhandledException += a => { return UnhandledExceptionAction.Terminate;//当出现异常的时候直接结束工作流 }; wfc.Aborted += a => { Console.WriteLine("工作流终止了"); }; //创建一个保存工作流实例的sqlstore对象 SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(DbHelperSQL.connectionString); //当前工作实例持久化的时候保存到数据库中 wfc.InstanceStore = store; // wfApp.Id;//工作流实例id需要将此实例id保存到实例数据库中 EazyBPMS.BLL.eazy_wf_instance bll = new BLL.eazy_wf_instance(); EazyBPMS.Model.eazy_wf_instance model = bll.GetModel(Convert.ToInt32(instanceId)); model.WFApplicationId = wfc.Id; bll.Update(model); wfc.Run(); return wfc; } //继续往下执行工作流 public static WorkflowApplication ResumeBookMark(Activity activity,Guid InstanceId,string bookmarkName, BaseResumeBookMarkValue value) { //每次点击的时候都会创建新的工作流实例 WorkflowApplication wfc = new WorkflowApplication(activity); //WorkflowInvoker.Invoke(new DemoActivity()); wfc.Idle += a =>//监控,当工作流停下来的时候执行 { Console.WriteLine("工作流停下来了...."); }; //当工作流停顿下来了,进行什么操作,如果返回的是unload 就卸载当前工作流实例 持久化到数据库中 wfc.PersistableIdle = delegate (WorkflowApplicationIdleEventArgs e3) { Console.WriteLine("工作流被卸载了,进行持久化"); return PersistableIdleAction.Unload; }; //监听卸载事件 wfc.Unloaded += a => { Console.WriteLine("工作流被卸载了"); }; //当出现了未处理的异常的时候 wfc.OnUnhandledException += a => { return UnhandledExceptionAction.Terminate;//当出现异常的时候直接结束工作流 }; wfc.Aborted += a => { Console.WriteLine("工作流终止了"); }; //创建一个保存工作流实例的sqlstore对象 SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(DbHelperSQL.connectionString); //当前工作实例持久化的时候保存到数据库中 wfc.InstanceStore = store; wfc.Load(InstanceId); //从数据库中加载工作流状态 //让工作流继续沿着书签的位置向下执行 wfc.ResumeBookmark(bookmarkName,value); return wfc; } } }