Răsfoiți Sursa

bug #IBVGGT 13版本groovy脚本中使用_meta.cmp.setIsEnd(true)结束流程不生效

everywhere.z 1 lună în urmă
părinte
comite
3083e89cd7

+ 6 - 0
liteflow-core/src/main/java/com/yomahub/liteflow/core/ScriptCommonComponent.java

@@ -1,5 +1,6 @@
 package com.yomahub.liteflow.core;
 
+import com.yomahub.liteflow.enums.ScriptTypeEnum;
 import com.yomahub.liteflow.log.LFLog;
 import com.yomahub.liteflow.log.LFLoggerManager;
 import com.yomahub.liteflow.script.ScriptExecuteWrap;
@@ -45,6 +46,11 @@ public class ScriptCommonComponent extends NodeComponent implements ScriptCompon
 
 	@Override
 	public boolean isEnd() {
+		//因为如果在scriptExecutor去执行cmp的super.isEnd()方法,会引起无限循环导致栈溢出
+		//这里没有更好的办法,只有硬代码判断下了
+		if (!this.getRefNode().getLanguage().equals(ScriptTypeEnum.JAVA.getDisplayName())){
+			return super.isEnd();
+		}
 		ScriptExecuteWrap wrap = this.buildWrap(this);
 		return scriptExecutor.executeIsEnd(wrap);
 	}