未验证 提交 0237654e 编写于 作者: W Wenjun Ruan 提交者: GitHub

Fix find last process instance in dependent task is not correct (#11424) (#12009)

(cherry picked from commit a2b52193)
上级 a615e6ee
......@@ -185,23 +185,45 @@ public class DependentExecute {
*/
private ProcessInstance findLastProcessInterval(Long definitionCode, DateInterval dateInterval) {
ProcessInstance runningProcess = processService.findLastRunningProcess(definitionCode, dateInterval.getStartTime(), dateInterval.getEndTime());
if (runningProcess != null) {
return runningProcess;
}
ProcessInstance lastSchedulerProcess = processService.findLastSchedulerProcessInterval(definitionCode, dateInterval);
/**
* Find the last manual/schedule processInstance.
* Return the nonnull one first.
* Return the finished one first.
* Return the start later one first.
* Return the manual one first.
*/
ProcessInstance lastSchedulerProcess =
processService.findLastSchedulerProcessInterval(definitionCode, dateInterval);
ProcessInstance lastManualProcess = processService.findLastManualProcessInterval(definitionCode, dateInterval);
if (lastManualProcess == null && lastSchedulerProcess == null) {
return null;
}
if (lastManualProcess == null) {
return lastSchedulerProcess;
}
if (lastSchedulerProcess == null) {
return lastManualProcess;
}
return (lastManualProcess.getEndTime().after(lastSchedulerProcess.getEndTime())) ? lastManualProcess : lastSchedulerProcess;
if (lastManualProcess.getEndTime() == null && lastSchedulerProcess.getEndTime() == null) {
return lastManualProcess.getStartTime().after(lastSchedulerProcess.getStartTime()) ? lastManualProcess
: lastSchedulerProcess;
}
if (lastSchedulerProcess.getEndTime() == null) {
return lastManualProcess;
}
if (lastManualProcess.getEndTime() == null) {
return lastSchedulerProcess;
}
return (lastManualProcess.getEndTime().after(lastSchedulerProcess.getEndTime())) ? lastManualProcess
: lastSchedulerProcess;
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册