public void PersistActions(WfActionParams actionParams) { this.ForEach(action => { PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration( string.Format("Persist Action: {0}", action.GetType().FullName), () => action.PersistAction(actionParams)); }); }
public void AfterWorkflowPersistAction(WfActionParams actionParams) { ProcessProgress.Current.MaxStep += this.Count; ProcessProgress.Current.Response(); this.ForEach(action => { PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration( string.Format("AfterWorkflowPersist Action: {0}", action.GetType().FullName), () => action.AfterWorkflowPersistAction(actionParams)); ProcessProgress.Current.Increment(); ProcessProgress.Current.Response(); }); }
/// <summary> /// 保存一个流程的数据,保存成功后,清除所有的缓存 /// </summary> /// <param name="process"></param> public static void PersistWorkflows() { IWfProcessPersistManager persistManager = WorkflowSettings.GetConfig().GetPersistManager(); WfActionParams actionParams = new WfActionParams(WfRuntime.ProcessContext); WfRuntime.ProcessContext.Acl.Distinct((a1, a2) => string.Compare(a1.ResourceID, a2.ResourceID, true) == 0 && string.Compare(a1.ObjectID, a2.ObjectID, true) == 0); PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("PersistWorkflows", () => { CommonInfoMappingCollection cimItems = new CommonInfoMappingCollection(); cimItems.FromProcesses(WfRuntime.ProcessContext.AffectedProcesses); using (TransactionScope scope = TransactionScopeFactory.Create()) { PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("DeletePendingActivities", () => WfPendingActivityInfoAdapter.Instance.Delete(WfRuntime.ProcessContext.ReleasedPendingActivities)); PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("Update Acl", () => WfAclAdapter.Instance.Update(WfRuntime.ProcessContext.Acl)); PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("Update CommonInfoMapping", () => CommonInfoMappingAdapter.Instance.Update(cimItems)); //保存流程后再执行Actions PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("PersistActions", () => WfRuntime.ProcessContext.AffectedActions.PersistActions(actionParams)); ProcessProgress.Current.MaxStep += WfRuntime.ProcessContext.AffectedProcesses.Count; ProcessProgress.Current.Response(); int i = 0; int total = WfRuntime.ProcessContext.AffectedProcesses.Count; WfRuntime.ProcessContext.AffectedProcesses.ForEach(process => { PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration( string.Format("PersistWorkflow: {0}", process.ID), () => persistManager.SaveProcess(process)); i++; ProcessProgress.Current.Increment(); ProcessProgress.Current.StatusText = Translator.Translate(Define.DefaultCulture, "保存了{0}/{1}条流程数据", i, total); ProcessProgress.Current.Response(); }); //保存流程后再执行Actions PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("AfterWorkflowPersistAction", () => WfRuntime.ProcessContext.AffectedActions.AfterWorkflowPersistAction(actionParams)); ProcessProgress.Current.StatusText = string.Empty; ProcessProgress.Current.Response(); scope.Complete(); } }); WfRuntime.ClearCache(); }
public void PrepareActions(WfActionParams actionParams) { ForEach(action => action.PrepareAction(actionParams)); }