代码拉取完成,页面将自动刷新
测试分支 :
master
2.6.11
业务场景:
a.校验手机号 b.校验身份证 c.注册
1、一般情况下a/b有一个校验通过,则进行注册
2、某些业务情况下可以不访问a,即a中isAccess = false(只需要校验身份证即可注册)
3、期望访问路径 b===>c;但是却出现c===>b或者c
抽象规则配置如下 :
<flow>
<chain name="chain1">
<!--异步模式,其中a为isAccess = false-->
<when value="a,b" any="true"/>
<!--同步模式-->
<then value="c"/>
</chain>
</flow>
依赖
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-spring-boot-starter</artifactId>
<version>2.6.11</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
伪代码
@Component("a")
public class ACmp extends NodeComponent {
@Override
public void process() throws InterruptedException {
System.out.println("ACmp==========>");
// 为节点c,投掷我们的私有属性
this.sendPrivateDeliveryData("c","nb-->A");
System.out.println("ACmp==========>执行完毕");
//do your business
}
@Override
public boolean isAccess(){
// 某种情况下,不会访问A节点
return false;
}
}
@Component("b")
public class BCmp extends NodeComponent {
@Override
public void process(){
System.out.println("BCmp==========>");
// 为节点c,投掷我们的私有属性
this.sendPrivateDeliveryData("c","nb");
System.out.println("BCmp==========>执行完毕");
//do your business
}
@Override
public boolean isAccess(){
return true;
}
}
@Component("c")
public class CCmp extends NodeComponent {
@Override
public void process() {
System.out.println("CCmp==========>");
Object privateDeliveryData = this.getPrivateDeliveryData();
System.out.println("从节点b中拿到的私有属性为:"+privateDeliveryData);
System.out.println("CCmp==========>执行完毕");
//do your business
}
}
@RestController
public class HelloWorldController {
@Resource
private FlowExecutor flowExecutor;
public void testConfig() {
for (int i = 0; i < 100; i++) {
LiteflowResponse<MySlot> response = flowExecutor.execute2Resp("chain1", "链路参数", MySlot.class);
}
}
/**
* 你好,gay
*
* @return {@link Object}
*/
@GetMapping("/hello")
public Object hello() {
testConfig();
return "Hello World~";
}
}
错误的详细日志 :
期望结果
尝试解决思路
executeAsyncCondition方法中过滤isAccess=false的节点(可以解决问题,但是不知道与框架设计是否冲突——>所有的可执行节点,最终都会落到node上)
嗯,你描述的很详细
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
此问题在v2.7.0中解决
登录 后才可以发表评论