Ejemplo n.º 1
0
 protected virtual void OnBeforeExecute(WfExecutorDataContext dataContext)
 {
     if (BeforeExecute != null)
     {
         BeforeExecute(dataContext);
     }
 }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
 protected override void OnPrepareUserOperationLogDescription(WfExecutorDataContext dataContext, UserOperationLog log)
 {
     if (PrepareUserOperationLogDescriptionByTransferParams(dataContext, this.TransferParams, log) == false)
     {
         base.OnPrepareUserOperationLogDescription(dataContext, log);
     }
 }
Ejemplo n.º 4
0
        protected override void OnError(Exception ex, WfExecutorDataContext dataContext, ref bool autoThrow)
        {
            WfPerformanceCounters.GlobalInstance.FailWFCount.Increment();
            WfPerformanceCounters.AppInstance.FailWFCount.Increment();

            base.OnError(ex, dataContext, ref autoThrow);
        }
Ejemplo n.º 5
0
        internal static bool PrepareUserOperationLogDescriptionByTransferParams(WfExecutorDataContext dataContext, WfTransferParams transferParams, UserOperationLog log)
        {
            bool dealed = false;

            if (log.RealUser != null && log.OperationDescription.IsNullOrEmpty())
            {
                string transitionName = string.Empty;

                if (transferParams.FromTransitionDescriptor != null)
                {
                    transitionName = transferParams.FromTransitionDescriptor.Name;

                    if (transitionName.IsNullOrEmpty())
                    {
                        transitionName = transferParams.FromTransitionDescriptor.Description;
                    }
                }

                if (transitionName.IsNotEmpty())
                {
                    log.OperationDescription = string.Format("{0}:{1}->{2}, '{3}' {4:yyyy-MM-dd HH:mm:ss}",
                                                             log.OperationName, log.RealUser.DisplayName,
                                                             Translator.Translate(Define.DefaultCulture, transitionName),
                                                             log.Subject, DateTime.Now);

                    dealed = true;
                }
            }

            return(dealed);
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        protected override void OnAfterSaveApplicationData(WfExecutorDataContext dataContext)
        {
            WfPerformanceCounters.GlobalInstance.SuccessWFCount.Increment();
            WfPerformanceCounters.AppInstance.SuccessWFCount.Increment();

            base.OnAfterSaveApplicationData(dataContext);
        }
Ejemplo n.º 8
0
        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 OnPrepareUserOperationLog(WfExecutorDataContext dataContext)
        {
            if (OperatorActivity != null)
            {
                UserOperationLog log = UserOperationLog.FromActivity(OperatorActivity);

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

                dataContext.OperationLogs.Add(log);
            }

            FirePrepareUserOperationLog(dataContext, dataContext.OperationLogs);

            foreach (UserOperationLog log in dataContext.OperationLogs)
            {
                if (log.RealUser != null && string.IsNullOrEmpty(log.OperationDescription))
                {
                    string originalUserName = UsersToString(this.OriginalAssignees);

                    log.OperationDescription = string.Format("{0}:{1}->{2}>>'{3}' {4:yyyy-MM-dd HH:mm:ss}",
                                                             log.OperationName, log.RealUser.DisplayName, originalUserName, this.TargetAssigneesToString(), SNTPClient.AdjustedTime);
                }
            }
        }
Ejemplo n.º 10
0
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            IWfProcess process = WfRuntime.StartWorkflow(StartupParams);

            if (this.OperatorActivity == null)
            {
                this.OperatorActivity = process.CurrentActivity;
            }

            if (this.AutoMoveTo)
            {
                if (this.TransferParams == null)
                {
                    this.TransferParams = WfTransferParams.FromNextDefaultActivity(process);
                }

                //如果流转参数中没有下一步的人员,则从下一步活动的候选人中复制
                if (this.TransferParams.Assignees.Count == 0)
                {
                    IWfActivity nextActivity = process.Activities.FindActivityByDescriptorKey(this.TransferParams.NextActivityDescriptor.Key);

                    if (nextActivity != null)
                    {
                        this.TransferParams.Assignees.CopyFrom(nextActivity.Candidates);
                    }
                }

                this.TransferParams.FillActivityAndTransitionInfoFromContext(process);

                WfMoveToExecutor.DoMoveToOperation(process, this.TransferParams);
            }

            WfRuntime.ProcessContext.ResetContextByProcess(process);
        }
Ejemplo n.º 11
0
 protected virtual void OnError(System.Exception ex, WfExecutorDataContext dataContext, ref bool autoThrow)
 {
     if (Error != null)
     {
         Error(ex, dataContext, ref autoThrow);
     }
 }
Ejemplo n.º 12
0
 protected virtual void OnAfterMoveTo(WfExecutorDataContext dataContext, WfMoveToEventArgs eventArgs)
 {
     if (AfterMoveTo != null)
     {
         AfterMoveTo(dataContext, eventArgs);
     }
 }
Ejemplo n.º 13
0
 protected virtual void OnAfterSaveApplicationData(WfExecutorDataContext dataContext)
 {
     if (AfterSaveApplicationData != null)
     {
         AfterSaveApplicationData(dataContext);
     }
 }
Ejemplo n.º 14
0
 protected virtual void FirePrepareUserOperationLog(WfExecutorDataContext dataContext, UserOperationLogCollection logs)
 {
     if (PrepareUserOperationLog != null)
     {
         PrepareUserOperationLog(dataContext, logs);
     }
 }
Ejemplo n.º 15
0
 protected virtual void OnAfterModifyWorkflow(WfExecutorDataContext dataContext)
 {
     if (AfterModifyWorkflow != null)
     {
         AfterModifyWorkflow(dataContext);
     }
 }
Ejemplo n.º 16
0
 protected virtual void OnPrepareApplicationData(WfExecutorDataContext dataContext)
 {
     if (PrepareApplicationData != null)
     {
         PrepareApplicationData(dataContext);
     }
 }
Ejemplo n.º 17
0
        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);
            }
        }
Ejemplo n.º 18
0
 protected virtual void OnBeforeMoveTo(WfExecutorDataContext dataContext, WfMoveToEventArgs eventArgs)
 {
     if (BeforeMoveTo != null)
     {
         BeforeMoveTo(dataContext, eventArgs);
     }
 }
Ejemplo n.º 19
0
 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, SNTPClient.AdjustedTime);
     }
 }
Ejemplo n.º 20
0
        /// <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);
        }
Ejemplo n.º 21
0
        protected virtual void OnPrepareNotifyTasks(WfExecutorDataContext dataContext)
        {
            UserTaskCollection tasks = dataContext.NotifyTasks;

            if (PrepareNotifyTasks != null)
            {
                PrepareNotifyTasks(dataContext, tasks);
            }
        }
Ejemplo n.º 22
0
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            if (this.SyncMainStreamObject && this.Process.MainStream != null)
            {
                SyncMainStreamObjectProperties();
            }

            WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(this.Process);
        }
Ejemplo n.º 23
0
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            if (this._FromActivityDescriptor != null)
            {
                this._FromActivityDescriptor.ToTransitions.AddForwardTransition(this._NewActivityDescriptor);
            }

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

            if (WfRuntime.ProcessContext != null)
            {
                WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(this.TargetActivity.Process);
            }
        }
Ejemplo n.º 25
0
        public void ExecuteActionByName(string actionName, WfExecutorDataContext dataContext)
        {
            actionName.CheckStringIsNullOrEmpty("actionName");

            WfExecutorAction action = this[actionName];

            (action != null).FalseThrow("不能找到名称为{0}的操作", actionName);

            action.Action(dataContext);
        }
Ejemplo n.º 26
0
        protected override void OnSaveApplicationData(WfExecutorDataContext dataContext)
        {
            if (SaveUserTasks)
            {
                UserTaskAdapter.Instance.DeleteUserTasks(WfRuntime.ProcessContext.DeletedUserTasks);
                UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.MoveToUserTasks);
                UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.NotifyUserTasks);
            }

            base.OnSaveApplicationData(dataContext);
        }
Ejemplo n.º 27
0
        protected override void OnModifyWorkflow(WfExecutorDataContext dataContext)
        {
            this.TargetActivity.Delete();

            IWfActivityDescriptor msActDesp = this.TargetActivity.GetMainStreamActivityDescriptor();

            if (msActDesp != null)
            {
                msActDesp.Delete();
            }
        }
Ejemplo n.º 28
0
        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);
        }
Ejemplo n.º 29
0
        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;
            }
        }
Ejemplo n.º 30
0
        protected override void OnSaveApplicationData(WfExecutorDataContext dataContext)
        {
            base.OnSaveApplicationData(dataContext);

            if (this.Locks != null)
            {
                foreach (Lock wfLock in this.Locks)
                {
                    LockAdapter.Unlock(wfLock);
                }
            }
        }