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); }