Example #1
0
        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++));
        }
Example #2
0
        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);
        }