protected void descriptorEditor_SaveButtonClicked(object sender, EventArgs e)
		{
			IWfTransitionDescriptor transition = GetNextMoveToTransition(this.operationEditor.CurrentProcess);

			(transition != null).FalseThrow("不能找到下一步能够流转的连线");

			//如果下一步不允许为人员为空,则校验。
			if (transition.ToActivity.Properties.GetValue("AllowEmptyCandidates", true) == false)
			{
				(this.userSelector.SelectedOuUserData.Count > 0).FalseThrow("必须指定下一步的流转人员");
			}

			WfTransferParams transferParams = new WfTransferParams(transition.ToActivity);

			transferParams.FromTransitionDescriptor = transition;
			transferParams.Operator = DeluxeIdentity.CurrentUser;

			foreach (IUser candidate in this.userSelector.SelectedOuUserData)
				transferParams.Assignees.Add(candidate);

			WfMoveToExecutor executor = new WfMoveToExecutor(
				this.operationEditor.CurrentProcess.CurrentActivity,
				this.operationEditor.CurrentProcess.CurrentActivity,
				transferParams);

			executor.Execute();
		}
Beispiel #2
0
        protected void descriptorEditor_SaveButtonClicked(object sender, EventArgs e)
        {
            IWfTransitionDescriptor transition = GetNextMoveToTransition(this.operationEditor.CurrentProcess);

            (transition != null).FalseThrow("不能找到下一步能够流转的连线");

            //如果下一步不允许为人员为空,则校验。
            if (transition.ToActivity.Properties.GetValue("AllowEmptyCandidates", true) == false)
            {
                (this.userSelector.SelectedOuUserData.Count > 0).FalseThrow("必须指定下一步的流转人员");
            }

            WfTransferParams transferParams = new WfTransferParams(transition.ToActivity);

            transferParams.FromTransitionDescriptor = transition;
            transferParams.Operator = DeluxeIdentity.CurrentUser;

            foreach (IUser candidate in this.userSelector.SelectedOuUserData)
            {
                transferParams.Assignees.Add(candidate);
            }

            WfMoveToExecutor executor = new WfMoveToExecutor(
                this.operationEditor.CurrentProcess.CurrentActivity,
                this.operationEditor.CurrentProcess.CurrentActivity,
                transferParams);

            executor.Execute();
        }
Beispiel #3
0
        private static void MoveToExecutor(IWfProcess process)
        {
            IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity;
            WfTransferParams      pa       = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1);
            WfMoveToExecutor      moveExec = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, pa);

            moveExec.Execute();
        }
Beispiel #4
0
        public static WfClientProcess Moveto(WfClientMovetoParameters parameters)
        {
            IWfProcess process = WfRuntime.GetProcessByProcessID(parameters.ProcessID);

            IWfActivity activity = process.CurrentActivity;

            if (activity == null || activity.Assignees == null)// || !activity.Assignees.Contains(UserHelper.UserId))
            {
                return(null);
            }

            WfTransferParams transferParams = WfTransferParams.FromNextDefaultActivity(process);

            UserTaskCollection userTask = new UserTaskCollection();
            WfMoveToExecutor   executor = new WfMoveToExecutor(activity, activity, transferParams);

            //调整待办的url和标题
            executor.PrepareMoveToTasks += (dataContext, tasks) =>
            {
                PrepareUserTasks(tasks, null, null, transferParams.NextActivityDescriptor.Name);
            };

            GenericOpinion serverOpinion = PrepareOpinion(process.CurrentActivity, parameters.CurrentOpinion, DeluxeIdentity.CurrentUser);

            if (activity.Descriptor.ActivityType == WfActivityType.InitialActivity)
            {
                serverOpinion.OpinionType = "提交";
            }
            else if (activity.Descriptor.ActivityType == WfActivityType.CompletedActivity)
            {
                serverOpinion.OpinionType = string.Empty;
            }
            else if (activity.Descriptor.ActivityType == WfActivityType.NormalActivity)
            {
                serverOpinion.OpinionType = "同意";

                if (serverOpinion.Content.IsNullOrEmpty())
                {
                    serverOpinion.Content = "同意";
                }
            }

            executor.PrepareApplicationData += dataContext => GenericOpinionAdapter.Instance.Update(serverOpinion);

            return(GetClientProcess(executor.Execute()));
        }
        /// <summary>
        /// 通过Executor流转到默认的下一个活动
        /// </summary>
        /// <param name="process"></param>
        /// <returns></returns>
        public static IWfActivity MoveToNextDefaultActivityWithExecutor(IWfProcess process)
        {
            IWfTransitionDescriptor transition = process.CurrentActivity.Descriptor.ToTransitions.GetAllCanTransitTransitions(true).FirstOrDefault();

            Assert.IsNotNull(transition,
                             string.Format("活动{0}没有能够使用的出线", process.CurrentActivity.Descriptor.Key));

            WfTransferParams transferParams = new WfTransferParams(transition.ToActivity);

            transferParams.FromTransitionDescriptor = transition;

            WfMoveToExecutor executor = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, transferParams);

            executor.Execute();

            return(process.CurrentActivity);
        }
Beispiel #6
0
        public static IWfProcess MoveToNextActivityByExecutor(this IWfProcess process, Func <WfTransitionDescriptorCollection, IWfTransitionDescriptor> predicate, bool persist = true)
        {
            WfTransferParams transferParams = WfTransferParams.FromNextActivity(process.CurrentActivity.Descriptor, predicate);

            WfMoveToExecutor executor = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, transferParams);

            IWfProcess result = process;

            if (persist)
            {
                executor.Execute();
                result = WfRuntime.GetProcessByProcessID(process.ID);
            }
            else
            {
                executor.ExecuteNotPersist();
            }

            return(result);
        }
Beispiel #7
0
        public static IWfProcess MoveToDefaultActivityByExecutor(this IWfProcess process, bool persist = true)
        {
            WfTransferParams transferParams = WfTransferParams.FromNextDefaultActivity(process);

            WfMoveToExecutor executor = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, transferParams);

            IWfProcess result = process;

            if (persist)
            {
                executor.Execute();
                result = WfRuntime.GetProcessByProcessID(process.ID);
            }
            else
            {
                executor.ExecuteNotPersist();
            }

            return(result);
        }
        public static IWfProcess MoveToNextActivityByExecutor(this IWfProcess process, Func<WfTransitionDescriptorCollection, IWfTransitionDescriptor> predicate, bool persist = true)
        {
            WfTransferParams transferParams = WfTransferParams.FromNextActivity(process.CurrentActivity.Descriptor, predicate);

            WfMoveToExecutor executor = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, transferParams);

            IWfProcess result = process;

            if (persist)
            {
                executor.Execute();
                result = WfRuntime.GetProcessByProcessID(process.ID);
            }
            else
                executor.ExecuteNotPersist();

            return result;
        }
        public static IWfProcess MoveToDefaultActivityByExecutor(this IWfProcess process, bool persist = true)
        {
            WfTransferParams transferParams = WfTransferParams.FromNextDefaultActivity(process);

            WfMoveToExecutor executor = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, transferParams);

            IWfProcess result = process;

            if (persist)
            {
                executor.Execute();
                result = WfRuntime.GetProcessByProcessID(process.ID);
            }
            else
                executor.ExecuteNotPersist();

            return result;
        }
        /// <summary>
        /// 通过Executor流转到默认的下一个活动
        /// </summary>
        /// <param name="process"></param>
        /// <returns></returns>
        public static IWfActivity MoveToNextDefaultActivityWithExecutor(IWfProcess process)
        {
            IWfTransitionDescriptor transition = process.CurrentActivity.Descriptor.ToTransitions.GetAllCanTransitTransitions(true).FirstOrDefault();

            Assert.IsNotNull(transition,
                string.Format("活动{0}没有能够使用的出线", process.CurrentActivity.Descriptor.Key));

            WfTransferParams transferParams = new WfTransferParams(transition.ToActivity);

            transferParams.FromTransitionDescriptor = transition;

            WfMoveToExecutor executor = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, transferParams);

            executor.Execute();

            return process.CurrentActivity;
        }
		private static void MoveToExecutor(IWfProcess process)
		{
			IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity;
			WfTransferParams pa = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1);
			WfMoveToExecutor moveExec = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, pa);

			moveExec.Execute();
		}