Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 5
0
        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;
		}
Ejemplo n.º 12
0
        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;
        }