protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
		{
			base.OnModifyWorkflow(dataContext);

			if (WfRuntime.ProcessContext != null)
				WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(this.TargetActivity.Process);
		}
Exemple #2
0
        private void executor_SaveApplicationData(WfExecutorDataContext dataContext)
        {
            //if (dataContext.OperationType == WfControlOperationType.Return)
            //    throw new ApplicationException("调试终止");

            if (WfClientContext.Current.OriginalActivity.Process.IsApprovalRootProcess)
            {
                AppCommonInfoAdapter.Instance.Update(ViewData.ToAppCommonInfo(ViewData.Data.Subject), "Creator", "DraftDepartmentName");
            }

            if (this.opinionListView.CurrentOpinion != null && dataContext.OperationType != WfControlOperationType.CancelProcess)
            {
                GenericOpinionAdapter.Instance.Update(opinionListView.CurrentOpinion);
            }

            MaterialAdapter.Instance.SaveDeltaMaterials(attachmentsControl.DeltaMaterials);

            //如果进入到了维护模式
            if (dataContext.CurrentProcess.Status == WfProcessStatus.Maintaining)
            {
                foreach (IWfBranchProcessTemplateDescriptor template in WfClientContext.Current.CurrentActivity.Descriptor.BranchProcessTemplates)
                {
                    DispatchStartBranchProcessTask.SendTask(WfClientContext.Current.CurrentActivity.ID, template, true);
                }
            }
        }
        void executor_SaveApplicationData(WfExecutorDataContext dataContext)
        {
            if (Scene.Current.SceneID == "First_Default")
            {
                var process    = dataContext.CurrentProcess;
                var properties = this.propertyForm.Properties;

                var imgProStr = properties.GetValue("Image", "");
                if (imgProStr != "")
                {
                    ImageProperty imgPro = JSONSerializerExecute.Deserialize <ImageProperty>(imgProStr);
                    if (imgPro.Changed)
                    {
                        ImagePropertyAdapter.Instance.UpdateWithContent(imgPro);
                        properties.SetValue("Image", JSONSerializerExecute.Serialize(imgPro));
                    }
                }

                var deltaData = MaterialControl.GetCommonDeltaMaterials();
                MaterialAdapter.Instance.SaveCommonDeltaMaterials(deltaData);

                //DynamicFormDataAdapter.Instance.Update(this.ViewData.Data);
                this.ViewData.Data.Properties          = properties;
                process.RootProcess.Context["appData"] = SerializationHelper.SerializeObjectToString(this.ViewData.Data, SerializationFormatterType.Binary);
            }
        }
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            int targetActivityIndex = FindTargetActivityIndex(this.OriginalActivity);

            (targetActivityIndex >= 0).FalseThrow<WfRuntimeException>("活动(ID={0}, Key={1})不能撤回", this.OriginalActivity.ID, this.OriginalActivity.Descriptor.Key);

            WfActivityCollection clonedElapsedActivities = new WfActivityCollection();

            IWfProcess process = this.OriginalActivity.Process;

            clonedElapsedActivities.CopyFrom(process.ElapsedActivities);

            dataContext["OriginalActivityID"] = process.CurrentActivity.ID;

            //将流程实例活动点的状态设置为未运行
            this.OriginalActivity.Process.Withdraw(clonedElapsedActivities[targetActivityIndex], this.CancelAllBranchProcesses);

            //删除掉动态添加的点
            for (int i = targetActivityIndex; i < clonedElapsedActivities.Count; i++)
            {
                IWfActivity act = clonedElapsedActivities[i];

                process.Activities.FindAll(a => a.CreatorInstanceID == act.ID).ForEach(a => a.Delete());
            }

            if (this.CancelProcess)
                process.CancelProcess(this.CancelAllBranchProcesses);
        }
		protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
		{
			(this.TargetActivityDescriptor.ActivityType == WfActivityType.NormalActivity).FalseThrow("只能删除正常的活动,不能删除起始或结束点");

			if (this.TargetActivityDescriptor.IsMainStreamActivity == false)
			{
				(this._TargetActivityDescriptor.Instance.Status == WfActivityStatus.NotRunning).FalseThrow("不能删除已经启动过的活动");

				if (this._SyncMainStreamObject)
				{
					IWfActivityDescriptor msActDesp = this._TargetActivityDescriptor.Instance.GetMainStreamActivityDescriptor();

					if (msActDesp != null)
						msActDesp.Remove();
				}

				this.TargetActivityDescriptor.Instance.Remove();
			}
			else
			{
				this.TargetActivityDescriptor.Remove();
			}

			WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(dataContext.CurrentProcess);
		}
		protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
		{
			if (this._FromActivityDescriptor != null)
				this._FromActivityDescriptor.ToTransitions.AddForwardTransition(this._NewActivityDescriptor);

			base.OnModifyWorkflow(dataContext);
		}
Exemple #7
0
        private void executor_PrepareApplicationData(WfExecutorDataContext dataContext)
        {
            bindingControl.CollectData();
            this.ViewData.Data.Loaded = true;

            WfClientContext.Current.CurrentActivity.Process.ApprovalRootProcess.Context["appData"] =
                SerializationHelper.SerializeObjectToString(this.ViewData, SerializationFormatterType.Binary);
        }
		protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
		{
			if (WfRuntime.ProcessContext != null)
				WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(TargetActivity.Process);

			if (TargetActivity != null && this._AutoCommit)
				TargetActivity.Process.Committed = true;
		}
		/// <summary>
		/// 重载准备待办的方法,调整所有待办中,涉及到的Activity的Assignee的Url
		/// </summary>
		/// <param name="dataContext"></param>
		/// <param name="tasks"></param>
		protected override void OnPrepareMoveToTasks(WfExecutorDataContext dataContext)
		{
			this.TargetActivity.Process.Committed = true;

			base.OnPrepareMoveToTasks(dataContext);

			SyncUrlsInAssigneesFromTasks(dataContext.MoveToTasks);
		}
		private void StartWorkflowExecutor_PrepareApplicationData(WfExecutorDataContext dataContext)
		{
			if (this.IsCloned)
				((WfProcess)WfClientContext.Current.OriginalActivity.Process).LoadingType = DataLoadingType.Cloned;

			//dataContext.CurrentProcess.Committed = false;
			OnProcessReady(WfClientContext.Current.OriginalActivity.Process);
			OnPrepareCommandState(WfClientContext.Current.OriginalActivity.Process);
		}
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            this.TargetActivity.Delete();

            IWfActivityDescriptor msActDesp = this.TargetActivity.GetMainStreamActivityDescriptor();

            if (msActDesp != null)
                msActDesp.Delete();
        }
        private void StartWorkflowExecutor_PrepareApplicationData(WfExecutorDataContext dataContext)
        {
            if (this.IsCloned)
            {
                ((WfProcess)WfClientContext.Current.OriginalActivity.Process).LoadingType = DataLoadingType.Cloned;
            }

            //dataContext.CurrentProcess.Committed = false;
            OnProcessReady(WfClientContext.Current.OriginalActivity.Process);
            OnPrepareCommandState(WfClientContext.Current.OriginalActivity.Process);
        }
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            this.TargetActivity.Process.Committed = true;

            WfBranchProcessTransferParams bptp = new WfBranchProcessTransferParams(
                WfTemplateBuilder.CreateDefaultCirculationTemplate("Circulate", this.Circulators));

            WfRuntime.ProcessContext.AfterStartupBranchProcess += new WfAfterStartupBranchProcessHandler(WfActivityRelativeExecutorBase.AfterStartupBranchProcess);

            this.TargetActivity.StartupBranchProcesses(bptp);
        }
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            this.ReplaceAssignees(this.TargetActivity.Assignees);
            this.ReplaceAssignees(this.TargetActivity.Candidates);
            this.ReplaceResources(this.TargetActivity.Assignees);

            WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(this.TargetActivity.Process);

            if (this.TargetActivity.Status == WfActivityStatus.Running)
                this.PrepareUserTasksAndAcl();
        }
        private void executor_AfterModifyWorkflow(WfExecutorDataContext dataContext)
        {
            if (this.OriginalActivity == null)
            {
                OriginalActivity = dataContext.CurrentProcess.CurrentActivity;
            }

            if (this._OriginalCurrentActivity == null)
            {
                this._OriginalCurrentActivity = dataContext.CurrentProcess.CurrentActivity;
            }
        }
        private void executor_PrepareNotifyTasks(WfExecutorDataContext dataContext, UserTaskCollection tasks)
        {
            GenericOpinion opnion = (GenericOpinion)dataContext["AbortOpinion"];

            tasks.ForEach(t =>
            {
                if (t.Body.IsNullOrEmpty())
                {
                    t.Body = opnion.Content;
                }
            });
        }
		protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
		{
			this.CancelProcess.CancelProcess(this.CancelAllBranchProcesses);

			IWfProcess process = dataContext.CurrentProcess;

			while ((process.Status == WfProcessStatus.Completed || process.Status == WfProcessStatus.Aborted) &&
				process.EntryInfo != null)
			{
				process.EntryInfo.OwnerActivity.Process.ProcessPendingActivity();
				process = process.EntryInfo.OwnerActivity.Process;
			}
		}
		protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
		{
			if (this._SyncMainStreamObject)
			{
				IWfTransitionDescriptor msTransition = FindMainStreamTransition(this._TargetTransitionDescriptor);

				if (msTransition != null)
					msTransition.FromActivity.ToTransitions.Remove(msTransition);
			}

			this._TargetTransitionDescriptor.FromActivity.ToTransitions.Remove(this._TargetTransitionDescriptor);

			WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(dataContext.CurrentProcess);
		}
Exemple #19
0
        private static void PrepareStartupOpinions(WfExecutorDataContext dataContext, IUser user, string content)
        {
            GenericOpinion opinion = new GenericOpinion();

            opinion.ID          = Guid.NewGuid().ToString();
            opinion.ProcessID   = dataContext.CurrentProcess.ID;
            opinion.ActivityID  = dataContext.CurrentProcess.Activities[0].ID;
            opinion.ResourceID  = dataContext.CurrentProcess.ResourceID;
            opinion.Content     = content;
            opinion.IssuePerson = user;
            opinion.OpinionType = "提交";

            GenericOpinionAdapter.Instance.Update(opinion);
        }
		protected override void OnPrepareNotifyTasks(WfExecutorDataContext dataContext)
		{
			UserTaskCollection notifyTasks = (UserTaskCollection)TargetActivity.Context["NotifyTasks"];

			if (notifyTasks != null)
			{
				UserTaskCollection filteredTasks = FilterCurrentUserTasks(notifyTasks);

				WfRuntime.ProcessContext.DeletedUserTasks.CopyFrom(filteredTasks);
				WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(filteredTasks);
				WfRuntime.ProcessContext.NormalizeTaskTitles();

				base.OnPrepareNotifyTasks(dataContext);
			}
			else
				base.OnPrepareNotifyTasks(dataContext);
		}
		protected override void OnPrepareUserOperationLogDescription(WfExecutorDataContext dataContext, UserOperationLog log)
		{
			log.Subject = Translator.Translate(Define.DefaultCulture, "启动分支流程");

			StringBuilder strB = new StringBuilder();

			foreach (IWfProcess process in this.StartedProcesses)
			{
				if (strB.Length > 0)
					strB.Append(",");

				strB.Append(process.ID);
			}

			log.OperationDescription = Translator.Translate(
				Define.DefaultCulture, 
				"根据模板{0},启动了{1}条流程,ID为:{2}",
				this.BranchTransferParams.Template.Key,
				this.StartedProcesses.Count,
				strB.ToString());
		}
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            IWfActivity instActivity = PrepareInstanceActivity();

            WfActivityDescriptor instActDesp = (WfActivityDescriptor)instActivity.Descriptor;

            AdjustActivityDescriptorProperties(instActDesp, this.CreateParams);

            IWfActivityDescriptor msTargetActDesp = this.TargetActivity.GetMainStreamActivityDescriptor();

            if (msTargetActDesp != null)
            {
                //同步增加主线活动
                IWfActivityDescriptor newMSActDesp = PrepareActivityDescriptor(msTargetActDesp);

                ((WfActivityBase)instActivity).MainStreamActivityKey = newMSActDesp.Key;
                AdjustActivityDescriptorProperties((WfActivityDescriptor)newMSActDesp, this.CreateParams);
            }

            instActivity.GenerateCandidatesFromResources();
			WfRuntime.DecorateProcess(instActivity.Process);
        }
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            this.TargetActivity.Process.Committed = true;

            IWfProcess process = this.TargetActivity.Process;

            IWfActivity activity = process.ElapsedActivities.FindActivityByDescriptorKey(TargetActivity.Descriptor.Key);
            activity.NullCheck("targetActivity");

            WfRuntime.ProcessContext.BeginChangeActivityChangingContext();
            try
            {
                WfRuntime.ProcessContext.ActivityChangingContext.CreatorInstanceID = process.CurrentActivity.ID;
                process.CurrentActivity.CopyMainStreamActivities(process.CurrentActivity, 
                    TargetActivity,
                    process.CurrentActivity.Descriptor.GetAssociatedActivity().Instance,
                    null,
                    WfControlOperationType.Return);

                if (process.CurrentActivity.Descriptor.ToTransitions.Count == 0)
                    throw new ApplicationException(string.Format("退回时,不能找到当前活动({0})的出线", process.CurrentActivity.Descriptor.Key));

                IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity;
                WfTransferParams tp = new WfTransferParams(nextActivityDesp);
                IWfActivity act = process.Activities.FindActivityByDescriptorKey(nextActivityDesp.Key);

                if (act.Assignees.Count > 0)
                    tp.Assignees.CopyFrom(act.Assignees);
                else
                    tp.Assignees.CopyFrom(activity.Assignees);

                process.MoveTo(tp);
            }
            finally
            {
                WfRuntime.ProcessContext.RestoreChangeActivityChangingContext();
            }
        }
		protected override void OnPrepareMoveToTasks(WfExecutorDataContext dataContext)
		{
			if (SaveUserTasks)
			{
				var userTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => builder.AppendItem("ACTIVITY_ID",
								this.TargetActivity.ID));

				if (userTasks == null || userTasks.Count == 0)
					userTasks = (UserTaskCollection)TargetActivity.Context["UserTasks"];

				if (userTasks != null)
				{
					UserTaskCollection filteredTasks = FilterCurrentUserTasks(userTasks);

					WfRuntime.ProcessContext.DeletedUserTasks.CopyFrom(filteredTasks);
					WfRuntime.ProcessContext.MoveToUserTasks.CopyFrom(filteredTasks);
					WfRuntime.ProcessContext.MoveToUserTasks.DistinctByActivityUserAndStatus();

					base.OnPrepareMoveToTasks(dataContext);
				}
				else
					base.OnPrepareMoveToTasks(dataContext);
			}
		}
 protected virtual void OnBeforeMoveTo(WfExecutorDataContext dataContext, WfMoveToEventArgs eventArgs)
 {
     if (BeforeMoveTo != null)
         BeforeMoveTo(dataContext, eventArgs);
 }
 protected virtual void OnError(System.Exception ex, WfExecutorDataContext dataContext, ref bool autoThrow)
 {
     if (Error != null)
         Error(ex, dataContext, ref autoThrow);
 }
 protected virtual void OnAfterSaveApplicationData(WfExecutorDataContext dataContext)
 {
     if (AfterSaveApplicationData != null)
         AfterSaveApplicationData(dataContext);
 }
 private void executor_AfterModifyWorkflow(WfExecutorDataContext dataContext)
 {
     WfClientContext.Current.OriginalActivity = dataContext.CurrentProcess.CurrentActivity;
 }
		protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
		{
			this.StartedProcesses = ((WfActivityBase)this.OwnerActivity).InternalStartupBranchProcesses(this.BranchTransferParams, false);
		}
        private void CallModifyWorkflow(WfExecutorDataContext dataContext)
        {
            WfRuntime.ProcessContext.BeforeMoveTo += new WfMoveToHandler(ProcessContext_BeforeMoveTo);
            WfRuntime.ProcessContext.AfterMoveTo += new WfMoveToHandler(ProcessContext_AfterMoveTo);

            try
            {
                OnModifyWorkflow(dataContext);
            }
            finally
            {
                WfRuntime.ProcessContext.BeforeMoveTo -= new WfMoveToHandler(ProcessContext_BeforeMoveTo);
                WfRuntime.ProcessContext.AfterMoveTo -= new WfMoveToHandler(ProcessContext_AfterMoveTo);
            }
        }
        protected virtual void OnPrepareNotifyTasks(WfExecutorDataContext dataContext)
        {
            UserTaskCollection tasks = dataContext.NotifyTasks;

            if (PrepareNotifyTasks != null)
                PrepareNotifyTasks(dataContext, tasks);
        }
 private void executor_PrepareApplicationData(WfExecutorDataContext dataContext)
 {
     dataContext["AbortOpinion"] = CreateAbortOpinion();
 }
Exemple #33
0
 void executor_BeforeExecute(WfExecutorDataContext dataContext)
 {
     WfRuntime.ProcessContext.PrepareBranchProcessParams += new WfPrepareBranchProcessParamsHandler(ProcessContext_PrepareBranchProcessParams);
 }
        private void executor_SaveApplicationData(WfExecutorDataContext dataContext)
        {
            GenericOpinion opnion = (GenericOpinion)dataContext["AbortOpinion"];

            GenericOpinionAdapter.Instance.Update(opnion);
        }
 void executor_PrepareApplicationData(WfExecutorDataContext dataContext)
 {
     //bindingControl.CollectData(true);
 }
 void executor_AfterSaveApplicationData(WfExecutorDataContext dataContext)
 {
 }
 protected virtual void OnAfterMoveTo(WfExecutorDataContext dataContext, WfMoveToEventArgs eventArgs)
 {
     if (AfterMoveTo != null)
         AfterMoveTo(dataContext, eventArgs);
 }
        private void OnSaveUserOperationLog(WfExecutorDataContext dataContext)
        {
            UserOperationTasksLogCollection userTasks = null;

            if (dataContext.ContainsKey("USER_OPERATION_TASKSLOGS") == true)
            {
                userTasks = dataContext["USER_OPERATION_TASKSLOGS"] as UserOperationTasksLogCollection;
            }

            foreach (UserOperationLog userLog in dataContext.OperationLogs)
            {
                int identityID = UserOperationLogAdapter.Instance.InsertData(userLog);
                if (userTasks != null)
                {
                    foreach (UserOperationTasksLog item in userTasks)
                    {
                        item.ID = identityID;
                    }
                }
            }

            if (userTasks != null)
                UserOperationTasksLogAdapter.Instance.AddOperationTasksLogs(userTasks);
        }
 protected virtual void OnPrepareUserOperationLogDescription(WfExecutorDataContext dataContext, UserOperationLog log)
 {
     if (log.RealUser != null && log.OperationDescription.IsNullOrEmpty())
     {
         log.OperationDescription = string.Format("{0}:{1}->'{2}' {3:yyyy-MM-dd HH:mm:ss}",
                     log.OperationName, log.RealUser.DisplayName, log.Subject, DateTime.Now);
     }
 }
        private void ExecuteAction(string operationName, WfExecutorDataContext dataContext)
        {
            operationName.CheckStringIsNullOrEmpty("operationName");

            WfExecutorLogContextInfo.Writer.WriteLine("\t\t{0}开始:{1:yyyy-MM-dd HH:mm:ss.fff}",
                    operationName, DateTime.Now);

            Stopwatch sw = new Stopwatch();

            sw.Start();
            try
            {
                this._Actions.ExecuteActionByName(operationName, dataContext);
            }
            finally
            {
                sw.Stop();
                WfExecutorLogContextInfo.Writer.WriteLine("\t\t{0}结束:{1:yyyy-MM-dd HH:mm:ss.fff};经过时间:{2:#,##0}毫秒",
                    operationName, DateTime.Now, sw.ElapsedMilliseconds);

                ProcessProgress.Current.Increment();
                ProcessProgress.Current.Response();
            }
        }
        protected virtual void OnPrepareUserOperationLog(WfExecutorDataContext dataContext)
        {
            UserOperationLogCollection logs = dataContext.OperationLogs;

            if (OperatorActivity != null)
            {
                UserOperationLog log = UserOperationLog.FromActivity(OperatorActivity);

                log.OperationType = DataObjects.OperationType.Update;
                log.OperationName = EnumItemDescriptionAttribute.GetDescription(this.OperationType);

                logs.Add(log);
            }

            FirePrepareUserOperationLog(dataContext, logs);

            foreach (UserOperationLog log in logs)
            {
                OnPrepareUserOperationLogDescription(dataContext, log);
            }

            List<string> accomplishedUserTaskIDs = new List<string>();
            foreach (UserTask item in WfRuntime.ProcessContext.AccomplishedUserTasks)
            {
                accomplishedUserTaskIDs.Add(item.TaskID);
            }

            UserOperationTasksLogCollection userOperationlogs = new UserOperationTasksLogCollection();
            foreach (UserTask userTaskItem in WfRuntime.ProcessContext.MoveToUserTasks)
            {
                if (accomplishedUserTaskIDs.Exists(taskID => string.Equals(taskID, userTaskItem.TaskID)) == false)
                    userOperationlogs.Add(UserOperationTasksLog.FromUserTask(userTaskItem));
            }

            if (userOperationlogs.Count > 0)
                dataContext.Add("USER_OPERATION_TASKSLOGS", userOperationlogs);
            else
                dataContext.Remove("USER_OPERATION_TASKSLOGS");
        }
 protected virtual void FirePrepareUserOperationLog(WfExecutorDataContext dataContext, UserOperationLogCollection logs)
 {
     if (PrepareUserOperationLog != null)
         PrepareUserOperationLog(dataContext, logs);
 }
 protected virtual void OnPersistWorkflow(WfExecutorDataContext dataContext)
 {
     WfRuntime.PersistWorkflows();
 }
        //protected override void OnPreRender(EventArgs e)
        //{

        //    base.OnPreRender(e);
        //    this.Form.Controls.Add(new ClientGrid() { ID = "1111" });
        //}

        void executor_PrepareMoveToTasks(WfExecutorDataContext dataContext, UserTaskCollection tasks)
        {
        }
 void executor_BeforeExecute(WfExecutorDataContext dataContext)
 {
 }