protected virtual void OnBeforeExecute(WfExecutorDataContext dataContext) { if (BeforeExecute != null) { BeforeExecute(dataContext); } }
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 override void OnPrepareUserOperationLogDescription(WfExecutorDataContext dataContext, UserOperationLog log) { if (PrepareUserOperationLogDescriptionByTransferParams(dataContext, this.TransferParams, log) == false) { base.OnPrepareUserOperationLogDescription(dataContext, log); } }
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); }
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); }
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 override void OnAfterSaveApplicationData(WfExecutorDataContext dataContext) { WfPerformanceCounters.GlobalInstance.SuccessWFCount.Increment(); WfPerformanceCounters.AppInstance.SuccessWFCount.Increment(); base.OnAfterSaveApplicationData(dataContext); }
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); } } }
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); }
protected virtual void OnError(System.Exception ex, WfExecutorDataContext dataContext, ref bool autoThrow) { if (Error != null) { Error(ex, dataContext, ref autoThrow); } }
protected virtual void OnAfterMoveTo(WfExecutorDataContext dataContext, WfMoveToEventArgs eventArgs) { if (AfterMoveTo != null) { AfterMoveTo(dataContext, eventArgs); } }
protected virtual void OnAfterSaveApplicationData(WfExecutorDataContext dataContext) { if (AfterSaveApplicationData != null) { AfterSaveApplicationData(dataContext); } }
protected virtual void FirePrepareUserOperationLog(WfExecutorDataContext dataContext, UserOperationLogCollection logs) { if (PrepareUserOperationLog != null) { PrepareUserOperationLog(dataContext, logs); } }
protected virtual void OnAfterModifyWorkflow(WfExecutorDataContext dataContext) { if (AfterModifyWorkflow != null) { AfterModifyWorkflow(dataContext); } }
protected virtual void OnPrepareApplicationData(WfExecutorDataContext dataContext) { if (PrepareApplicationData != null) { PrepareApplicationData(dataContext); } }
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 virtual void OnBeforeMoveTo(WfExecutorDataContext dataContext, WfMoveToEventArgs eventArgs) { if (BeforeMoveTo != null) { BeforeMoveTo(dataContext, eventArgs); } }
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); } }
/// <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); }
protected virtual void OnPrepareNotifyTasks(WfExecutorDataContext dataContext) { UserTaskCollection tasks = dataContext.NotifyTasks; if (PrepareNotifyTasks != null) { PrepareNotifyTasks(dataContext, tasks); } }
protected override void OnModifyWorkflow(WfExecutorDataContext dataContext) { if (this.SyncMainStreamObject && this.Process.MainStream != null) { SyncMainStreamObjectProperties(); } WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(this.Process); }
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); } }
public void ExecuteActionByName(string actionName, WfExecutorDataContext dataContext) { actionName.CheckStringIsNullOrEmpty("actionName"); WfExecutorAction action = this[actionName]; (action != null).FalseThrow("不能找到名称为{0}的操作", actionName); action.Action(dataContext); }
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); }
protected override void OnModifyWorkflow(WfExecutorDataContext dataContext) { this.TargetActivity.Delete(); IWfActivityDescriptor msActDesp = this.TargetActivity.GetMainStreamActivityDescriptor(); if (msActDesp != null) { msActDesp.Delete(); } }
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) { if (WfRuntime.ProcessContext != null) { WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(TargetActivity.Process); } if (TargetActivity != null && this._AutoCommit) { TargetActivity.Process.Committed = true; } }
protected override void OnSaveApplicationData(WfExecutorDataContext dataContext) { base.OnSaveApplicationData(dataContext); if (this.Locks != null) { foreach (Lock wfLock in this.Locks) { LockAdapter.Unlock(wfLock); } } }