!305 enhancement #IAMBU8 ELBus 增加普通节点构建方法

Merge pull request !305 from luoyi/issues/IAMBU8
This commit is contained in:
铂赛东
2024-09-03 08:32:02 +00:00
committed by Gitee
3 changed files with 49 additions and 3 deletions

View File

@@ -0,0 +1,25 @@
package com.yomahub.liteflow.builder.el;
/**
* 普通节点表示
*
* @author luo yi
* @since 2.12.3
*/
public class CommonNodeELWrapper extends NodeELWrapper {
public CommonNodeELWrapper(String nodeId) {
super(nodeId);
}
@Override
protected String toEL(Integer depth, StringBuilder paramContext) {
CommonNodeELWrapper nodeElWrapper = (CommonNodeELWrapper) this.getFirstWrapper();
StringBuilder sb = new StringBuilder();
processWrapperTabs(sb, depth);
sb.append(nodeElWrapper.getNodeId());
processWrapperProperty(sb, paramContext);
return sb.toString();
}
}

View File

@@ -132,6 +132,16 @@ public class ELBus {
return new NodeELWrapper(nodeId);
}
/**
* 创建普通 node 单节点表达式
*
* @param nodeId 节点 id
* @return {@link CommonNodeELWrapper}
*/
public static CommonNodeELWrapper commonNode(String nodeId){
return new CommonNodeELWrapper(nodeId);
}
/**
* 创建 switch 选择表达式
*
@@ -364,9 +374,9 @@ public class ELBus {
public static void checkBooleanArgs(ELWrapper... elWrappers) {
for(ELWrapper elWrapper : elWrappers){
if(!(elWrapper instanceof AndELWrapper)
&& !(elWrapper instanceof OrELWrapper)
&& !(elWrapper instanceof NotELWrapper)
&& !(elWrapper instanceof NodeELWrapper)){
&& !(elWrapper instanceof OrELWrapper)
&& !(elWrapper instanceof NotELWrapper)
&& !(elWrapper instanceof NodeELWrapper)){
throw new RuntimeException("param is error");
}
}

View File

@@ -22,6 +22,17 @@ import java.util.Map;
@EnableAutoConfiguration
public class ThenELBuilderTest extends BaseTest {
@Test
public void testThen0(){
Map<String, Object> name2Value = new HashMap<String, Object>();
name2Value.put("name", "zhangsan");
name2Value.put("age", 18);
System.out.println(ELBus.then(ELBus.commonNode("a").data("nodeData", name2Value).tag("tagA").maxWaitSeconds(10).retry(2), ELBus.node("b")).toEL(true));
String expected = "nodeData = '{\"name\":\"zhangsan\",\"age\":18}';\nTHEN(\n\ta.tag(\"tagA\").data(nodeData).maxWaitSeconds(10).retry(2),\n\tnode(\"b\")\n);";
Assertions.assertEquals(expected,
ELBus.then(ELBus.commonNode("a").data("nodeData", name2Value).tag("tagA").maxWaitSeconds(10).retry(2), ELBus.node("b")).toEL(true));
}
// then组件测试
@Test
public void testThen1(){