浏览代码

bug #I6CJI9 修复循环组件中IF组件获取不了index的情况

everywhere.z 2 年之前
父节点
当前提交
fd307de555

+ 8 - 0
liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/LoopCondition.java

@@ -26,6 +26,10 @@ public abstract class LoopCondition extends Condition {
     protected void setLoopIndex(Executable executableItem, int index){
         if (executableItem instanceof Chain){
             ((Chain)executableItem).getConditionList().forEach(condition -> setLoopIndex(condition, index));
+        }else if(executableItem instanceof IfCondition){
+            ((Condition)executableItem).getExecutableList().forEach(executable -> setLoopIndex(executable, index));
+            setLoopIndex(((IfCondition)executableItem).getTrueCaseExecutableItem(), index);
+            setLoopIndex(((IfCondition)executableItem).getFalseCaseExecutableItem(), index);
         }else if(executableItem instanceof Condition){
             ((Condition)executableItem).getExecutableList().forEach(executable -> setLoopIndex(executable, index));
         }else if(executableItem instanceof Node){
@@ -36,6 +40,10 @@ public abstract class LoopCondition extends Condition {
     protected void setCurrLoopObject(Executable executableItem, Object obj){
         if (executableItem instanceof Chain){
             ((Chain)executableItem).getConditionList().forEach(condition -> setCurrLoopObject(condition, obj));
+        }else if(executableItem instanceof IfCondition){
+            ((Condition)executableItem).getExecutableList().forEach(executable -> setCurrLoopObject(executable, obj));
+            setCurrLoopObject(((IfCondition)executableItem).getTrueCaseExecutableItem(), obj);
+            setCurrLoopObject(((IfCondition)executableItem).getFalseCaseExecutableItem(), obj);
         }else if(executableItem instanceof Condition){
             ((Condition)executableItem).getExecutableList().forEach(executable -> setCurrLoopObject(executable, obj));
         }else if(executableItem instanceof Node){