From fc1014f25a97b7966aa16faf735ca2a616b0f536 Mon Sep 17 00:00:00 2001 From: Ray Lee Date: Tue, 9 Apr 2019 17:17:11 +0800 Subject: [PATCH] IDEMPIERE-3942 #2 Transition need to match with Activity --- .../src/org/compiere/wf/MWFProcess.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/wf/MWFProcess.java b/org.adempiere.base/src/org/compiere/wf/MWFProcess.java index b343120d18..9ae9528c5d 100644 --- a/org.adempiere.base/src/org/compiere/wf/MWFProcess.java +++ b/org.adempiere.base/src/org/compiere/wf/MWFProcess.java @@ -348,14 +348,6 @@ public class MWFProcess extends X_AD_WF_Process if (transitions == null || transitions.length == 0) return false; // done - // We need to wait for last activity - if (MWFNode.JOINELEMENT_AND.equals(last.getNode().getJoinElement())) - { - // get previous nodes - // check if all have closed activities - // return false for all but the last - } - // eliminate from active processed last.setProcessed(true); last.saveEx(); @@ -400,11 +392,16 @@ public class MWFProcess extends X_AD_WF_Process private boolean isJoinElementANDProcessed(MWFActivity activity) { - Query queryNodeNextTest = new Query(Env.getCtx(), MWFNodeNext.Table_Name, "AD_WF_Next_ID = ?", get_TrxName()); - queryNodeNextTest.setParameters(activity.getAD_WF_Node_ID()); - List NodeNexts = queryNodeNextTest.list(); - for (MWFNodeNext nodeNext : NodeNexts) { - + Query queryNodeNext = new Query(Env.getCtx(), MWFNodeNext.Table_Name, "AD_WF_Next_ID = ?", get_TrxName()); + queryNodeNext.setParameters(activity.getAD_WF_Node_ID()); + List nodeNexts = queryNodeNext.list(); + /** + * IDEMPIERE-3942 #2 Transition need to match with Activity + */ + int totalParent = 0; + int totalActivities = 0; + for (MWFNodeNext nodeNext : nodeNexts) { + totalParent++; Query queryMWFActivity = new Query(Env.getCtx(), MWFActivity.Table_Name, "AD_WF_Process_ID = ? AND AD_WF_Node_ID = ? ", get_TrxName()); @@ -413,11 +410,14 @@ public class MWFProcess extends X_AD_WF_Process queryMWFActivity.setParameters(params); List parentActivitys = queryMWFActivity.list(); for (MWFActivity parentActivity : parentActivitys) { + totalActivities++; if(!parentActivity.isProcessed()) return false; } } + if(totalParent < totalActivities) + return false; return true; }