提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
原来不打算专门写这么细的一章,但是我自己实践过程中发现,框架还是有不少限制,但是没有在官方文档或者其他博客里提到,所以初次接入的人会特别郁闷,怎么调试都不好使。
话不多说,开始今天的章节吧。
提示:以下是本篇文章正文内容,下面案例可供参考
一、案例说明
我们今天做一个选择编排的简单案例。
实现的效果是:先执行a,然后根据a的结果来决定下一步是执行b还是c
二、实践过程
首先,因为是根据a的结果进行不同的选择,所以a应当是一个switch类型的节点
@LiteflowComponent("a")
public class ASwitchCmp extends NodeSwitchComponent {
@Override
public String processSwitch() throws Exception {
return "b";
}
}
其次,b和c没有选择逻辑,作为正常节点创建
@Component("b")
public class BNode extends NodeComponent {
@Override
public void process() {
System.out.println("b");
}
}
@Component("c")
public class CNode extends NodeComponent {
@Override
public void process() {
System.out.println("c");
}
}
xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<flow id="loanFlow">
<chain id="defaultLoanAuditChain">
SWITCH(a).to(b, c)
</chain>
</flow>
首先说一下,这种写法是可以通过的。
接下来,我们说一下其他的一些情况
场景1:NodeSwitchComponent类是NodeComponent类的子类,如果我们将b或者c定义为NodeSwitchComponent类的子类,那么程序就不会按照设想的去执行。
场景2:a节点返回的字符串,是下个节点的beanname,这个地方没有很明确的说明
场景3:如果要设计的严谨一些,那么一定会有一些非正常的情况,这些可以都放在一个节点里,作为default节点,要注意的是default节点,也是普通节点。这里解释一点:日志里提示的node的类型为COMMON,等价于该节点类继承NodeComponent类
最后分享一个接入过程的小妙招:从最最简单的语法,一步步来,慢慢添砖加瓦。
总结
每天进步一点点!