예제 #1
0
        void IProcessService.CancelAllAbout(Process process, ActivityInstanceBase activityInstance)
        {
            //取消所有调度请求
            this._schedulerService.CancelAll(process, activityInstance.ID, activityInstance.ActivityName);
            //若是人工节点则取消所有人工任务
            if (activityInstance is HumanActivityInstance)
            {
                _workItemRepository.CancelAll(process, activityInstance.ID);
            }
            //若是子流程节点则撤销对应的子流程实例
            Process subProcess;
            var     sub = activityInstance as SubProcessActivityInstance;

            if (sub != null &&
                sub.SubProcessId.HasValue &&
                (subProcess = _repository.FindBy(sub.SubProcessId.Value)) != null)
            {
                this.CancelAllAbout(process, subProcess);
            }

            this._log.InfoFormat("取消流程实例“{0}”#{1}的节点“{2}”#{3}相关的运行时信息"
                                 , process.Title
                                 , process.ID
                                 , activityInstance.ActivityName
                                 , activityInstance.ID);
        }