private SysTaskProcess PrepareSysTaskProcessData(Func <DO.SysTask> getTask, string name = "测试任务流程名称") { SysTaskProcess process = new SysTaskProcess(); process.ID = UuidHelper.NewUuidString(); process.Name = name; process.Status = SysTaskProcessStatus.Running; process.StartTime = DateTime.Now; SysTaskActivity activity1 = new SysTaskActivity(getTask()); activity1.ID = UuidHelper.NewUuidString(); activity1.Name = "活动1"; process.Activities.Add(activity1); SysTaskActivity activity2 = new SysTaskActivity(getTask()); activity2.ID = UuidHelper.NewUuidString(); activity2.Name = "活动2"; process.Activities.Add(activity2); return(process); }
/// <summary> /// 发送执行任务流程活动的任务 /// </summary> /// <param name="sysTaskActivity"></param> /// <returns></returns> public static ExecuteSysTaskActivityTask SendTask(SysTaskActivity sysTaskActivity) { ExecuteSysTaskActivityTask task = ExecuteSysTaskActivityTask.CreateTask(sysTaskActivity); SysTaskAdapter.Instance.Update(task); return task; }
/// <summary> /// 构造一个推出维护模式的任务活动 /// </summary> /// <param name="sysTaskProcess"></param> /// <param name="processID"></param> /// <param name="index"></param> /// <returns></returns> public static SysTaskActivity CreateExitMaintainingActivity(this SysTaskProcess sysTaskProcess, string processID, int index) { SysTask task = ExitMaintainingStatusTask.CreateTask(string.Empty, processID, true); SysTaskActivity activity = CreateActivity(sysTaskProcess, index, processID, task); activity.Name = string.Format("退出ID为{0}流程的维护状态", processID); return(activity); }
/// <summary> /// 创建一个包含了作废流程任务的任务流程活动 /// </summary> /// <param name="sysTaskProcess"></param> /// <param name="processID"></param> /// <param name="index"></param> /// <returns></returns> public static SysTaskActivity CreateCancelProcessActivity(this SysTaskProcess sysTaskProcess, string processID, int index) { CancelProcessTask task = CancelProcessTask.CreateTask(processID, false); SysTaskActivity activity = WfSysTaskActivityHelper.CreateActivity( sysTaskProcess, index, string.Format("作废ID为{0}的流程的任务流程活动", processID, index), task); SysTaskProcessRuntime.ProcessContext.AffectedActivities.AddOrReplace(activity); return(activity); }
private SysTaskActivity CreateUserActivity(SysTaskProcess sysTaskProcess, int index, IEnumerable <IUser> users) { SysTask task = CreateUserTaskInActivity(users); SysTaskActivity activity = WfSysTaskActivityHelper.CreateActivity( sysTaskProcess, index, string.Format("创建活动{0}的分支流程的任务流程活动{1}", this.OwnerActivityID, index), task); SysTaskProcessRuntime.ProcessContext.AffectedActivities.AddOrReplace(activity); return(activity); }
/// <summary> /// 构造一个任务活动 /// </summary> /// <param name="sysTaskProcess"></param> /// <param name="index"></param> /// <param name="name"></param> /// <param name="task"></param> /// <returns></returns> public static SysTaskActivity CreateActivity(this SysTaskProcess sysTaskProcess, int index, string name, SysTask task) { sysTaskProcess.NullCheck("sysTaskProcess"); SysTaskActivity activity = new SysTaskActivity(task); activity.ID = UuidHelper.NewUuidString(); activity.ProcessID = sysTaskProcess.ID; activity.Sequence = index; activity.Name = name; SysTaskProcessRuntime.ProcessContext.AffectedActivities.AddOrReplace(activity); return(activity); }
/// <summary> /// 构造一个任务活动 /// </summary> /// <param name="sysTaskProcess"></param> /// <param name="index"></param> /// <param name="name"></param> /// <param name="task"></param> /// <returns></returns> public static SysTaskActivity CreateActivity(this SysTaskProcess sysTaskProcess, int index, string name, SysTask task) { sysTaskProcess.NullCheck("sysTaskProcess"); SysTaskActivity activity = new SysTaskActivity(task); activity.ID = UuidHelper.NewUuidString(); activity.ProcessID = sysTaskProcess.ID; activity.Sequence = index; activity.Name = name; SysTaskProcessRuntime.ProcessContext.AffectedActivities.AddOrReplace(activity); return activity; }
/// <summary> /// 创建一个包含了撤回流程任务的任务流程活动 /// </summary> /// <param name="sysTaskProcess"></param> /// <param name="processID"></param> /// <param name="index"></param> /// <returns></returns> public static SysTaskActivity CreateWithdrawProcessActivity(this SysTaskProcess sysTaskProcess, string processID, int index) { string activityID = UuidHelper.NewUuidString(); WithdrawProcessTask task = WithdrawProcessTask.CreateTask(processID, false); SysTaskActivity activity = WfSysTaskActivityHelper.CreateActivity( sysTaskProcess, index, string.Format("撤回ID为{0}的流程的任务流程活动", processID, index), task); SysTaskProcessRuntime.ProcessContext.AffectedActivities.AddOrReplace(activity); return(activity); }
/// <summary> /// 创建一个分发作废流程任务流程的任务活动 /// </summary> /// <param name="sysTaskProcess"></param> /// <param name="ownerActivityID"></param> /// <param name="cancelAllBranchProcesses"></param> /// <param name="index"></param> /// <returns></returns> public static SysTaskActivity CreateDispatchCancelBranchesProcessActivity(this SysTaskProcess sysTaskProcess, string ownerActivityID, bool cancelAllBranchProcesses, int index) { string activityID = UuidHelper.NewUuidString(); DispatchCancelBranchProcessesTask task = DispatchCancelBranchProcessesTask.CreateTask(activityID, ownerActivityID, cancelAllBranchProcesses); SysTaskActivity activity = WfSysTaskActivityHelper.CreateActivity( sysTaskProcess, index, string.Format("分派作废活动ID为{0}的分支流程的任务流程活动", ownerActivityID, index), task); activity.ID = activityID; SysTaskProcessRuntime.ProcessContext.AffectedActivities.AddOrReplace(activity); return(activity); }
/// <summary> /// 如果能够流转,自动流转到下一个活动 /// </summary> /// <param name="activity"></param> private static void AutoMoveToNextActivity(SysTaskActivity activity) { if (activity.CanMoveTo()) { SysTaskActivity nextActivity = activity.Process.MoveToNextActivity(); SysTaskProcessRuntime.Persist(); if (activity.Process.Status == SysTaskProcessStatus.Running) ExecuteSysTaskActivityTask.SendTask(nextActivity); } else { //对于第一个活动就带子流程的场景,其状态是NotRunning且有可能被阻塞不能流转,需要通过此操作启动子流程的Task if (activity.Status == SysTaskActivityStatus.NotRunning) SysTaskProcess.EnterActivity(activity, DateTime.Now); } }
public static ExecuteSysTaskActivityTask CreateTask(SysTaskActivity sysTaskActivity) { sysTaskActivity.NullCheck("sysTaskActivity"); ExecuteSysTaskActivityTask task = new ExecuteSysTaskActivityTask(sysTaskActivity.ID); task.TaskID = UuidHelper.NewUuidString(); task.ResourceID = sysTaskActivity.ID; if (sysTaskActivity.Task != null && sysTaskActivity.Task.TaskTitle.IsNotEmpty()) { task.TaskTitle = string.Format("执行任务流程活动,任务ID为{0},名称为{1}", sysTaskActivity.Task.TaskID, sysTaskActivity.Task.TaskTitle); } else { task.TaskTitle = string.Format("执行任务流程活动{0}", sysTaskActivity.ID); } return task; }
private SysTaskProcess PrepareSysTaskProcessData(Func<DO.SysTask> getTask, string name = "测试任务流程名称") { SysTaskProcess process = new SysTaskProcess(); process.ID = UuidHelper.NewUuidString(); process.Name = name; process.Status = SysTaskProcessStatus.Running; process.StartTime = DateTime.Now; SysTaskActivity activity1 = new SysTaskActivity(getTask()); activity1.ID = UuidHelper.NewUuidString(); activity1.Name = "活动1"; process.Activities.Add(activity1); SysTaskActivity activity2 = new SysTaskActivity(getTask()); activity2.ID = UuidHelper.NewUuidString(); activity2.Name = "活动2"; process.Activities.Add(activity2); return process; }