protected override void OnModifyWorkflow(WfExecutorDataContext dataContext) { base.OnModifyWorkflow(dataContext); if (WfRuntime.ProcessContext != null) WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(this.TargetActivity.Process); }
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); }
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); }
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(); }
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) { }