protected override void AfterCreateProcessInstance(SysTaskProcess sysTaskProcess) { sysTaskProcess.Name = string.Format("作废ID为{0}的流程", this.ProcessID); int index = 0; sysTaskProcess.OwnerActivityID = this.OwnerSysActivityID; IWfProcess process = WfRuntime.GetProcessByProcessID(this.ProcessID); WfProcessCurrentInfoCollection branchProcessesStatus = WfRuntime.GetProcessStatusByOwnerActivityID(process.CurrentActivity.ID, string.Empty, false); if (branchProcessesStatus.Count > 0 && this.CancelAllBranchProcesses) { //作废子流程 sysTaskProcess.Activities.Add(sysTaskProcess.CreateDispatchCancelBranchesProcessActivity(process.CurrentActivity.ID, this.CancelAllBranchProcesses, index++)); } if (this.CancelSelf) { sysTaskProcess.Activities.Add(sysTaskProcess.CreateCancelProcessActivity(this.ProcessID, index++)); } sysTaskProcess.Activities.Add(sysTaskProcess.CreateExitMaintainingActivity(this.ProcessID, index++)); }
public int DispatchCancelBranchProcessesTasks(string ownerSysActivityID, string ownerActivityID, bool cancelAllBranchProcesses) { int result = 0; WfProcessCurrentInfoCollection branchProcessesStatus = WfRuntime.GetProcessStatusByOwnerActivityID(ownerActivityID, string.Empty, false); foreach (WfProcessCurrentInfo processInfo in branchProcessesStatus) { DispatchCancelProcessSysTaskProcessBuilder builder = new DispatchCancelProcessSysTaskProcessBuilder(ownerSysActivityID, processInfo.InstanceID, true, cancelAllBranchProcesses); SysTaskProcess sysTaskProcess = builder.Build(); SysTaskProcessRuntime.StartProcess(sysTaskProcess); result += sysTaskProcess.Activities.Count; } return(result); }