enhancement #I5ZLH6 支持zk分离chain以及脚本的存储结构

This commit is contained in:
everywhere.z
2022-11-05 12:01:28 +08:00
parent 3ec3cfd346
commit 741f18dca0
5 changed files with 52 additions and 28 deletions

View File

@@ -26,6 +26,12 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-groovy</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>

View File

@@ -3,6 +3,7 @@ package com.yomahub.liteflow.test.zookeeper;
import cn.hutool.core.io.resource.ResourceUtil;
import com.yomahub.liteflow.core.FlowExecutor;
import com.yomahub.liteflow.flow.LiteflowResponse;
import com.yomahub.liteflow.slot.DefaultContext;
import com.yomahub.liteflow.test.BaseTest;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.exception.ZkMarshallingError;
@@ -34,7 +35,9 @@ import java.nio.charset.StandardCharsets;
@ComponentScan({"com.yomahub.liteflow.test.zookeeper.cmp"})
public class ZkClusterWithXmlELSpringbootTest extends BaseTest {
private static final String ZK_NODE_PATH = "/lite-flow/flow";
private static final String ZK_CHAIN_PATH = "/liteflow/chain";
private static final String ZK_SCRIPT_PATH = "/liteflow/script";
private static TestingCluster zkCluster;
@@ -50,7 +53,6 @@ public class ZkClusterWithXmlELSpringbootTest extends BaseTest {
zkCluster.start();
String connectStr = zkCluster.getConnectString();
String data = ResourceUtil.readUtf8Str("zookeeper/flow.xml");
ZkClient zkClient = new ZkClient(connectStr);
zkClient.setZkSerializer(new ZkSerializer() {
@Override
@@ -63,14 +65,22 @@ public class ZkClusterWithXmlELSpringbootTest extends BaseTest {
return new String(bytes, StandardCharsets.UTF_8);
}
});
zkClient.createPersistent(ZK_NODE_PATH, true);
zkClient.writeData(ZK_NODE_PATH, data);
String chain1Path = ZK_CHAIN_PATH+"/chain1";
zkClient.createPersistent(chain1Path, true);
zkClient.writeData(chain1Path, "THEN(a, b, c, s1);");
String script1Path = ZK_SCRIPT_PATH+"/s1:script:脚本s1";
zkClient.createPersistent(script1Path, true);
zkClient.writeData(script1Path, "defaultContext.setData(\"test\",\"hello\");");
}
@Test
public void testZkNodeWithXml() {
LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
DefaultContext context = response.getFirstContextBean();
Assert.assertTrue(response.isSuccess());
Assert.assertEquals("hello", context.getData("test"));
}
@AfterClass

View File

@@ -35,8 +35,10 @@ import java.util.concurrent.CountDownLatch;
@EnableAutoConfiguration
@ComponentScan({"com.yomahub.liteflow.test.zookeeper.cmp"})
public class ZkNodeWithXmlELSpringbootTest extends BaseTest {
private static final String ZK_NODE_PATH = "/lite-flow/flow";
private static final String ZK_CHAIN_PATH = "/liteflow/chain";
private static final String ZK_SCRIPT_PATH = "/liteflow/script";
private static TestingServer zkServer;
@@ -46,27 +48,25 @@ public class ZkNodeWithXmlELSpringbootTest extends BaseTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
zkServer = new TestingServer(21810);
CountDownLatch latch = new CountDownLatch(1);
new Thread(() -> {
String data = ResourceUtil.readUtf8Str("zookeeper/flow.xml");
ZkClient zkClient = new ZkClient("127.0.0.1:21810");
zkClient.setZkSerializer(new ZkSerializer() {
@Override
public byte[] serialize(final Object o) throws ZkMarshallingError {
return o.toString().getBytes(Charset.forName("UTF-8"));
}
ZkClient zkClient = new ZkClient("127.0.0.1:21810");
zkClient.setZkSerializer(new ZkSerializer() {
@Override
public byte[] serialize(final Object o) throws ZkMarshallingError {
return o.toString().getBytes(Charset.forName("UTF-8"));
}
@Override
public Object deserialize(final byte[] bytes) throws ZkMarshallingError {
return new String(bytes, Charset.forName("UTF-8"));
}
});
zkClient.createPersistent(ZK_NODE_PATH, true);
zkClient.writeData(ZK_NODE_PATH, data);
zkClient.close();
latch.countDown();
}).start();
latch.await();
@Override
public Object deserialize(final byte[] bytes) throws ZkMarshallingError {
return new String(bytes, Charset.forName("UTF-8"));
}
});
String chain1Path = ZK_CHAIN_PATH+"/chain1";
zkClient.createPersistent(chain1Path, true);
zkClient.writeData(chain1Path, "THEN(a, b, c, s1);");
String script1Path = ZK_SCRIPT_PATH+"/s1:script:脚本s1";
zkClient.createPersistent(script1Path, true);
zkClient.writeData(script1Path, "defaultContext.setData(\"test\",\"hello\");");
}
@Test

View File

@@ -1 +1,5 @@
liteflow.rule-source-ext-data={"connectStr":"127.0.0.1:21810,127.0.0.1:21811,127.0.0.1:21812"}
liteflow.rule-source-ext-data={\
"connectStr":"127.0.0.1:21810,127.0.0.1:21811,127.0.0.1:21812",\
"chainPath": "/liteflow/chain",\
"scriptPath": "/liteflow/script"\
}

View File

@@ -1 +1,5 @@
liteflow.rule-source-ext-data={"connectStr":"127.0.0.1:21810"}
liteflow.rule-source-ext-data={\
"connectStr":"127.0.0.1:21810",\
"chainPath": "/liteflow/chain",\
"scriptPath": "/liteflow/script"\
}