public void PersistAction(WfActionParams actionParams) { if (actionParams.Context.StatusChangedProcesses != null) { List <object> result = new List <object>(); actionParams.Context.StatusChangedProcesses.ForEach(p => { result.Add(new { ProcessId = p.ID, ProcessKey = p.Descriptor.Key, ProcessName = p.Descriptor.Name, Status = p.Status.ToString(), CreatorId = p.Creator.ID, CreatorName = p.Creator.DisplayName, Created = p.StartTime, TenantCode = p.ApplicationRuntimeParameters.GetValue(UserTaskServicePlugin._TenantCode, string.Empty), EmailCollector = p.ApplicationRuntimeParameters.GetValue(UserTaskServicePlugin._MailCollector, string.Empty) }); }); if (result.Count >= 0) { UserTaskServicePluginBroker.Instance.SyncProcess(JSONSerializerExecute.Serialize(result)); } } }
public override void PrepareAction(WfActionParams actionParams) { if (WfRuntime.ProcessContext.OriginalActivity != null) { UserTaskCollection currentProcessTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => builder.AppendItem("ACTIVITY_ID", WfRuntime.ProcessContext.OriginalActivity.ID)); //删除已经发送的待办 WfRuntime.ProcessContext.DeletedUserTasks.CopyFromNotExistedTaskID(currentProcessTasks); //对被撤回的点发送通知 this.PrepareNotifyTasks(WfRuntime.ProcessContext.OriginalActivity); IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; //对当前的活动点发送待办 if (currentActivity != null) { this.PrepareMoveToTasks(currentActivity); } WfRuntime.ProcessContext.FireWithdrawPrepareAction(); } }
public void PersistAction(WfActionParams actionParams) { if (actionParams.Context.StatusChangedProcesses != null) { List<object> result = new List<object>(); actionParams.Context.StatusChangedProcesses.ForEach(p => { result.Add(new { ProcessId = p.ID, ProcessKey = p.Descriptor.Key, ProcessName = p.Descriptor.Name, Status = p.Status.ToString(), CreatorId = p.Creator.ID, CreatorName = p.Creator.DisplayName, Created = p.StartTime, TenantCode = p.ApplicationRuntimeParameters.GetValue(UserTaskServicePlugin._TenantCode, string.Empty), EmailCollector = p.ApplicationRuntimeParameters.GetValue(UserTaskServicePlugin._MailCollector, string.Empty) }); }); if (result.Count >= 0) UserTaskServicePluginBroker.Instance.SyncProcess(JSONSerializerExecute.Serialize(result)); } }
public override void PrepareAction(WfActionParams actionParams) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; if (currentActivity != null) { //找到当前流程所有的待办,然后删除,主要是为了删除通知 UserTaskCollection currentActivityTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => builder.AppendItem("ACTIVITY_ID", currentActivity.ID)); WfRuntime.ProcessContext.DeletedUserTasks.CopyFrom(currentActivityTasks); //找到当前流程所有的已办,然后转为待办 UserTaskCollection currentActivityAccomplishedTasks = UserTaskAdapter.Instance.GetUserAccomplishedTasks(UserTaskIDType.ActivityID, UserTaskFieldDefine.All, false, currentActivity.ID); WfRuntime.ProcessContext.MoveToUserTasks.CopyFrom(currentActivityAccomplishedTasks); if (currentActivity.Status == WfActivityStatus.Pending) WfRuntime.ProcessContext.PendingActivities.Add(currentActivity); WfRuntime.ProcessContext.FireRestoreProcessPrepareAction(); } }
public void PersistAction(WfActionParams actionParams) { actionParams.Context.StatusChangedProcesses.ForEach(process => { Console.WriteLine("状态改变的流程{0},Status={1}", process.ID, process.Status); }); }
public override void PrepareAction(WfActionParams actionParams) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; if (currentActivity != null) { //找到当前流程所有的待办,然后删除,主要是为了删除通知 UserTaskCollection currentActivityTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => builder.AppendItem("ACTIVITY_ID", currentActivity.ID)); WfRuntime.ProcessContext.DeletedUserTasks.CopyFrom(currentActivityTasks); //找到当前流程所有的已办,然后转为待办 UserTaskCollection currentActivityAccomplishedTasks = UserTaskAdapter.Instance.GetUserAccomplishedTasks(UserTaskIDType.ActivityID, UserTaskFieldDefine.All, false, currentActivity.ID); WfRuntime.ProcessContext.MoveToUserTasks.CopyFrom(currentActivityAccomplishedTasks); if (currentActivity.Status == WfActivityStatus.Pending) { WfRuntime.ProcessContext.PendingActivities.Add(currentActivity); } WfRuntime.ProcessContext.FireRestoreProcessPrepareAction(); } }
public override void PrepareAction(WfActionParams actionParams) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; if (currentActivity != null) { //找到当前流程所有的待办,然后转为已办 UserTaskCollection currentProcessTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => builder.AppendItem("PROCESS_ID", currentActivity.Process.ID)); UserTaskCollection toAccomplishedTasks = new UserTaskCollection(); UserTaskCollection toDeletedTasks = new UserTaskCollection(); currentProcessTasks.ForEach(u => { if (u.Status == TaskStatus.Ban) { toAccomplishedTasks.Add(u); } else { toDeletedTasks.Add(u); } }); WfRuntime.ProcessContext.DeletedUserTasks.CopyFromNotExistedTaskID(toDeletedTasks); UserTaskCollection userTasksInContext = RemoveTasksInContext(actionParams); //将上下文中的待办转到已办中 userTasksInContext.ForEach(t => toAccomplishedTasks.Add(t)); //将上下文中标记为已删除的从准备转已办的记录中删除 toAccomplishedTasks.RemoveExistedTasks(WfRuntime.ProcessContext.DeletedUserTasks); //将待办转到已办中,便于事后恢复 toAccomplishedTasks.ForEach(u => LeaveActivityUserTaskAction.ChangeUserTaskToAccomplishedTasks(currentActivity, u)); WfRuntime.ProcessContext.AccomplishedUserTasks.CopyFromNotExistedTaskID(toAccomplishedTasks); //暂时对当前活动的处理人发送通知 UserTaskCollection notifyTasks = BuildUserNotifiesFromActivity(currentActivity); AppendResourcesToNotifiers(currentActivity, notifyTasks, currentActivity.Descriptor.Process.CancelEventReceivers); foreach (UserTask task in notifyTasks) { task.Status = TaskStatus.Yue; task.TaskTitle = Translator.Translate(Define.DefaultCulture, currentActivity.Process.Descriptor.Properties.GetValue("DefaultCancelTaskPrefix", "流程被取消:")) + task.TaskTitle; } WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(notifyTasks); WfRuntime.ProcessContext.Acl.CopyFrom(notifyTasks.ToAcl()); WfRuntime.ProcessContext.AbortedProcesses.AddOrReplace(currentActivity.Process); WfRuntime.ProcessContext.FireCancelProcessPrepareAction(); } }
public override void PrepareAction(WfActionParams actionParams) { if (WfRuntime.ProcessContext.OriginalActivity != null) { IWfActivity originalActivity = WfRuntime.ProcessContext.OriginalActivity; //找到当前环节所有的待办,然后转为已办 UserTaskCollection currentActTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => { builder.AppendItem("ACTIVITY_ID", originalActivity.ID); builder.AppendItem("STATUS", (int)TaskStatus.Ban); }); //从上下文中找到需要转已办的记录 currentActTasks.CopyFrom(WfRuntime.ProcessContext.MoveToUserTasks.FindAll( u => string.Compare(u.ActivityID, originalActivity.ID, true) == 0)); currentActTasks.Sort((u1, u2) => u1.Level - u2.Level); if (currentActTasks.Count == 0) { UserTaskCollection preparedUserTasks = (UserTaskCollection)originalActivity.Context["UserTasks"]; if (preparedUserTasks != null) { WfRuntime.ProcessContext.MoveToUserTasks.CopyFrom(preparedUserTasks); currentActTasks = preparedUserTasks; } } currentActTasks.ForEach(u => { if (u.Status == TaskStatus.Ban) ChangeUserTaskToAccomplishedTasks(originalActivity, u); else WfRuntime.ProcessContext.DeletedUserTasks.Add(u); }); UserTaskCollection notifyTasks = new UserTaskCollection(); AppendResourcesToNotifiers(originalActivity, notifyTasks, originalActivity.Descriptor.LeaveEventReceivers); foreach (UserTask task in notifyTasks) { task.Status = TaskStatus.Yue; task.TaskTitle = Translator.Translate(Define.DefaultCulture, originalActivity.Process.Descriptor.Properties.GetValue("DefaultLeaveTaskPrefix", "离开活动:")) + task.TaskTitle; task.Context["ExtraOperationType"] = WfControlSubOperationType.Leave; } WfRuntime.ProcessContext.Acl.CopyFrom(notifyTasks.ToAcl()); WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(notifyTasks); WfRuntime.ProcessContext.FireLeaveActivityPrepareAction(); } }
public virtual void PrepareAction(WfActionParams actionParams) { if (WfRuntime.ProcessContext.EnableServiceCall) { //调用需要在非持久化时调用的服务 this.InvokeServiceOperations(this.GetAllOperationsBeforePersist()); //将需要在持久化时调用的服务记录下来 WfRuntime.ProcessContext.ServiceOperations.CopyFrom(this.GetAllOperationsWhenPersist()); } }
public override void PrepareAction(WfActionParams actionParams) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; if (currentActivity != null) { //找到当前流程所有的待办,然后转为已办 UserTaskCollection currentProcessTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => builder.AppendItem("PROCESS_ID", currentActivity.Process.ID)); WfRuntime.ProcessContext.DeletedUserTasks.CopyFromNotExistedTaskID(currentProcessTasks); UserTaskCollection toAccomplishedTasks = new UserTaskCollection(); currentProcessTasks.ForEach(u => { if (u.Status == TaskStatus.Ban) toAccomplishedTasks.Add(u); }); UserTaskCollection userTasksInContext = RemoveTasksInContext(actionParams); //将上下文中的待办转到已办中 userTasksInContext.ForEach(t => toAccomplishedTasks.Add(t)); //将上下文中标记为已删除的从准备转已办的记录中删除 toAccomplishedTasks.RemoveExistedTasks(WfRuntime.ProcessContext.DeletedUserTasks); //将待办转到已办中,便于事后恢复 toAccomplishedTasks.ForEach(u => LeaveActivityUserTaskAction.ChangeUserTaskToAccomplishedTasks(currentActivity, u)); WfRuntime.ProcessContext.AccomplishedUserTasks.CopyFromNotExistedTaskID(toAccomplishedTasks); //暂时对当前活动的处理人发送通知 UserTaskCollection notifyTasks = BuildUserNotifiesFromActivity(currentActivity); AppendResourcesToNotifiers(currentActivity, notifyTasks, currentActivity.Descriptor.Process.CancelEventReceivers); foreach (UserTask task in notifyTasks) { task.Status = TaskStatus.Yue; task.TaskTitle = Translator.Translate(Define.DefaultCulture, currentActivity.Process.Descriptor.Properties.GetValue("DefaultCancelTaskPrefix", "流程被取消:")) + task.TaskTitle; } WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(notifyTasks); WfRuntime.ProcessContext.Acl.CopyFrom(notifyTasks.ToAcl()); WfRuntime.ProcessContext.AbortedProcesses.AddOrReplace(currentActivity.Process); WfRuntime.ProcessContext.FireCancelProcessPrepareAction(); } }
public override void AfterWorkflowPersistAction(WfActionParams actionParams) { WfRuntime.ProcessContext.FireLeaveActivityPersistAction(); WfRuntime.ProcessContext.MoveToUserTasks.DistinctByActivityUserAndStatus(); UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.MoveToUserTasks); WfRuntime.ProcessContext.NotifyUserTasks.DistinctByActivityUserAndStatus(); UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.NotifyUserTasks); UserTaskAdapter.Instance.SetUserTasksAccomplished(WfRuntime.ProcessContext.AccomplishedUserTasks); UserTaskAdapter.Instance.DeleteUserTasks(WfRuntime.ProcessContext.DeletedUserTasks); this.ClearCache(); }
public override void PrepareAction(WfActionParams actionParams) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; if (currentActivity != null) { if (WfRuntime.ProcessContext.TargetActivityCanMoveTo && currentActivity.Status == WfActivityStatus.Running) { UserTaskCollection userTasks = BuildUserTasksFromActivity(currentActivity); UserTaskCollection notifyTasks = new UserTaskCollection(); AppendResourcesToNotifiers(currentActivity, notifyTasks, currentActivity.Descriptor.EnterEventReceivers); foreach (UserTask task in notifyTasks) { task.Status = TaskStatus.Yue; task.TaskTitle = task.TaskTitle; task.Context["ExtraOperationType"] = WfControlSubOperationType.Enter; } WfRuntime.ProcessContext.Acl.CopyFrom(notifyTasks.ToAcl()); //当从数据库中加载流程时,LoadingType为DataLoadingType.External。 if (CanAutoSendUserTask(currentActivity)) { WfRuntime.ProcessContext.MoveToUserTasks.CopyFrom(userTasks); WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(notifyTasks); } else { currentActivity.Context["UserTasks"] = userTasks; currentActivity.Context["NotifyTasks"] = notifyTasks; } if (currentActivity.Status == WfActivityStatus.Completed) { WfRuntime.ProcessContext.ClosedProcesses.AddOrReplace(currentActivity.Process); } } else { WfRuntime.ProcessContext.PendingActivities.Add(currentActivity); } WfRuntime.ProcessContext.FireEnterActivityPrepareAction(); } }
public override void AfterWorkflowPersistAction(WfActionParams actionParams) { WfRuntime.ProcessContext.FireCancelProcessPersistAction(); WfRuntime.ProcessContext.NotifyUserTasks.DistinctByActivityUserAndStatus(); UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.NotifyUserTasks); UserTaskAdapter.Instance.SetUserTasksAccomplished(WfRuntime.ProcessContext.AccomplishedUserTasks); UserTaskAdapter.Instance.DeleteUserTasks(WfRuntime.ProcessContext.DeletedUserTasks); AppCommonInfoAdapter.Instance.UpdateProcessStatus(WfRuntime.ProcessContext.AffectedProcesses.FindAll(p => p.IsApprovalRootProcess)); WfPendingActivityInfoAdapter.Instance.DeleteByProcesses(WfRuntime.ProcessContext.AbortedProcesses); WfPendingActivityInfoAdapter.Instance.DeleteByProcesses(WfRuntime.ProcessContext.ClosedProcesses); this.ClearCache(); }
public override void AfterWorkflowPersistAction(WfActionParams actionParams) { WfRuntime.ProcessContext.FireWithdrawPersistAction(); WfRuntime.ProcessContext.MoveToUserTasks.DistinctByActivityUserAndStatus(); UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.MoveToUserTasks); WfRuntime.ProcessContext.NotifyUserTasks.DistinctByActivityUserAndStatus(); UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.NotifyUserTasks); UserTaskAdapter.Instance.DeleteUserTasks(WfRuntime.ProcessContext.DeletedUserTasks); AppCommonInfoAdapter.Instance.UpdateProcessStatus(WfRuntime.ProcessContext.AffectedProcesses.FindAll(p => p.IsApprovalRootProcess)); this.ClearCache(); }
public override void PrepareAction(WfActionParams actionParams) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; if (currentActivity != null) { if (WfRuntime.ProcessContext.TargetActivityCanMoveTo && currentActivity.Status == WfActivityStatus.Running) { UserTaskCollection userTasks = BuildUserTasksFromActivity(currentActivity); UserTaskCollection notifyTasks = new UserTaskCollection(); AppendResourcesToNotifiers(currentActivity, notifyTasks, currentActivity.Descriptor.EnterEventReceivers); foreach (UserTask task in notifyTasks) { task.Status = TaskStatus.Yue; task.TaskTitle = task.TaskTitle; task.Context["ExtraOperationType"] = WfControlSubOperationType.Enter; } WfRuntime.ProcessContext.Acl.CopyFrom(notifyTasks.ToAcl()); //当从数据库中加载流程时,LoadingType为DataLoadingType.External。 if (CanAutoSendUserTask(currentActivity)) { WfRuntime.ProcessContext.MoveToUserTasks.CopyFrom(userTasks); WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(notifyTasks); } else { currentActivity.Context["UserTasks"] = userTasks; currentActivity.Context["NotifyTasks"] = notifyTasks; } if (currentActivity.Status == WfActivityStatus.Completed) WfRuntime.ProcessContext.ClosedProcesses.AddOrReplace(currentActivity.Process); } else { WfRuntime.ProcessContext.PendingActivities.Add(currentActivity); } WfRuntime.ProcessContext.FireEnterActivityPrepareAction(); } }
public override void AfterWorkflowPersistAction(WfActionParams actionParams) { WfRuntime.ProcessContext.FireRestoreProcessPersistAction(); UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.MoveToUserTasks); UserTaskAdapter.Instance.DeleteUserTasks(WfRuntime.ProcessContext.DeletedUserTasks); AppCommonInfoAdapter.Instance.UpdateProcessStatus(WfRuntime.ProcessContext.AffectedProcesses.FindAll(p => p.IsApprovalRootProcess)); WfRuntime.ProcessContext.PendingActivities.ForEach(act => { WfPendingActivityInfo data = new WfPendingActivityInfo(act); WfPendingActivityInfoAdapter.Instance.Update(data); }); ClearCache(); }
/// <summary> /// 删除当前在上下文中的待办 /// </summary> /// <param name="actionParams"></param> /// <returns></returns> private static UserTaskCollection RemoveTasksInContext(WfActionParams actionParams) { UserTaskCollection result = new UserTaskCollection(); actionParams.Context.MoveToUserTasks.Remove(t => { bool remove = string.Compare(t.ProcessID, actionParams.Context.CurrentProcess.ID, true) == 0; if (remove) { result.Add(t); } return(remove); }); return(result); }
public override void PrepareAction(WfActionParams actionParams) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; if (currentActivity != null) { //暂时对当前活动的处理人发送通知 UserTaskCollection notifyTasks = BuildUserNotifiesFromActivity(currentActivity); AppendResourcesToNotifiers(currentActivity, notifyTasks, currentActivity.Descriptor.Process.CompleteEventReceivers); foreach (UserTask task in notifyTasks) { task.Status = TaskStatus.Yue; task.TaskTitle = Translator.Translate(Define.DefaultCulture, currentActivity.Process.Descriptor.Properties.GetValue("DefaultCompleteTaskPrefix", "流程已办结:")) + task.TaskTitle; } WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(notifyTasks); WfRuntime.ProcessContext.Acl.CopyFrom(notifyTasks.ToAcl()); } }
public override void PrepareAction(WfActionParams actionParams) { if (WfRuntime.ProcessContext.OriginalActivity != null) { UserTaskCollection currentProcessTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => builder.AppendItem("ACTIVITY_ID", WfRuntime.ProcessContext.OriginalActivity.ID)); //删除已经发送的待办 WfRuntime.ProcessContext.DeletedUserTasks.CopyFromNotExistedTaskID(currentProcessTasks); //对被撤回的点发送通知 this.PrepareNotifyTasks(WfRuntime.ProcessContext.OriginalActivity); IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; //对当前的活动点发送待办 if (currentActivity != null) this.PrepareMoveToTasks(currentActivity); WfRuntime.ProcessContext.FireWithdrawPrepareAction(); } }
public override void AfterWorkflowPersistAction(WfActionParams actionParams) { WfRuntime.ProcessContext.FireEnterActivityPersistAction(); WfRuntime.ProcessContext.MoveToUserTasks.DistinctByActivityUserAndStatus(); UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.MoveToUserTasks); WfRuntime.ProcessContext.NotifyUserTasks.DistinctByActivityUserAndStatus(); UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.NotifyUserTasks); WfPendingActivityInfoAdapter.Instance.DeleteByProcesses(WfRuntime.ProcessContext.AbortedProcesses); WfPendingActivityInfoAdapter.Instance.DeleteByProcesses(WfRuntime.ProcessContext.ClosedProcesses); AppCommonInfoAdapter.Instance.UpdateProcessStatus(WfRuntime.ProcessContext.AffectedProcesses.FindAll(p => p.IsApprovalRootProcess)); WfRuntime.ProcessContext.PendingActivities.ForEach(act => { WfPendingActivityInfo data = new WfPendingActivityInfo(act); WfPendingActivityInfoAdapter.Instance.Update(data); }); this.ClearCache(); }
public virtual void PrepareAction(WfActionParams actionParams) { }
public override void PrepareAction(WfActionParams actionParams) { if (WfRuntime.ProcessContext.OriginalActivity != null) { IWfActivity originalActivity = WfRuntime.ProcessContext.OriginalActivity; //找到当前环节所有的待办,然后转为已办 UserTaskCollection currentActTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => { builder.AppendItem("ACTIVITY_ID", originalActivity.ID); builder.AppendItem("STATUS", (int)TaskStatus.Ban); }); //从上下文中找到需要转已办的记录 currentActTasks.CopyFrom(WfRuntime.ProcessContext.MoveToUserTasks.FindAll( u => string.Compare(u.ActivityID, originalActivity.ID, true) == 0)); currentActTasks.Sort((u1, u2) => u1.Level - u2.Level); if (currentActTasks.Count == 0) { UserTaskCollection preparedUserTasks = (UserTaskCollection)originalActivity.Context["UserTasks"]; if (preparedUserTasks != null) { WfRuntime.ProcessContext.MoveToUserTasks.CopyFrom(preparedUserTasks); currentActTasks = preparedUserTasks; } } currentActTasks.ForEach(u => { if (u.Status == TaskStatus.Ban) { ChangeUserTaskToAccomplishedTasks(originalActivity, u); } else { WfRuntime.ProcessContext.DeletedUserTasks.Add(u); } }); UserTaskCollection notifyTasks = new UserTaskCollection(); AppendResourcesToNotifiers(originalActivity, notifyTasks, originalActivity.Descriptor.LeaveEventReceivers); foreach (UserTask task in notifyTasks) { task.Status = TaskStatus.Yue; task.TaskTitle = Translator.Translate(Define.DefaultCulture, originalActivity.Process.Descriptor.Properties.GetValue("DefaultLeaveTaskPrefix", "离开活动:")) + task.TaskTitle; task.Context["ExtraOperationType"] = WfControlSubOperationType.Leave; } WfRuntime.ProcessContext.Acl.CopyFrom(notifyTasks.ToAcl()); WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(notifyTasks); WfRuntime.ProcessContext.FireLeaveActivityPrepareAction(); } }
public virtual void PersistAction(WfActionParams actionParams) { this.InvokeServiceOperations(WfRuntime.ProcessContext.ServiceOperations); this.ClearCache(); }
public void AfterWorkflowPersistAction(WfActionParams actionParams) { Console.WriteLine("after workflow persist action"); }
/// <summary> /// 删除当前在上下文中的待办 /// </summary> /// <param name="actionParams"></param> /// <returns></returns> private static UserTaskCollection RemoveTasksInContext(WfActionParams actionParams) { UserTaskCollection result = new UserTaskCollection(); actionParams.Context.MoveToUserTasks.Remove(t => { bool remove = string.Compare(t.ProcessID, actionParams.Context.CurrentProcess.ID, true) == 0; if (remove) result.Add(t); return remove; }); return result; }
/// <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(); }
private static void RegisterAndPrepareActions(WfActionCollection actions) { WfActionParams actionParams = new WfActionParams(WfRuntime.ProcessContext); actions.PrepareActions(actionParams); WfRuntime.ProcessContext.AffectedActions.CopyFrom(actions); }
public virtual void AfterWorkflowPersistAction(WfActionParams actionParams) { }
public override void PrepareAction(WfActionParams actionParams) { this._Process = WfRuntime.ProcessContext.CurrentProcess; base.PrepareAction(actionParams); }
public virtual void PersistAction(WfActionParams actionParams) { }
public void PersistAction(WfActionParams actionParams) { Console.WriteLine("persist action"); }
public override void AfterWorkflowPersistAction(WfActionParams actionParams) { WfRuntime.ProcessContext.NotifyUserTasks.DistinctByActivityUserAndStatus(); UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.NotifyUserTasks); }
public override void PrepareAction(WfActionParams actionParams) { this._OriginalActivity = actionParams.Context.CurrentActivity; base.PrepareAction(actionParams); }
public void PrepareAction(WfActionParams actionParams) { Console.WriteLine("prepare action"); }