liteFlow开发应用搭建

架构设计

轻量级流程编排框架liteFlow_zhousenshan的博客-CSDN博客_流程编排框架

一、 springboot搭建

引入依赖

        <dependency>
            <groupId>com.yomahub</groupId>
            <artifactId>liteflow-spring-boot-starter</artifactId>
            <version>2.8.4</version>
        </dependency>

路径规则配置

liteflow:
  rule-source: config/flow.el.xml

组件配置 

 Liteflow希望用户把复杂逻辑拆分成一个个可复用的组件,定义组件需要继承NodeComponent类,然后实现process 方法就行

同时组件除了必须要实现的process 方法,还有几个可选实现:

isAccess:表示是否进入该节点,可以用于业务参数的预先判断

isContinueOnError:表示出错是否继续往下执行下一个组件,默认为false

isEnd:表示是否立即结束整个流程 ,默认为false,也可以在业务日志里根据业务判断来调用this.setIsEnd(true)来结束整个流程。

你只需定义你的业务组件,之后,在启动时,Liteflow会自动扫描到你定义的所有组件,并进行加载。

@LiteflowComponent(id = "cc", name = "xx")
public class cc extends NodeComponent {
    @Override
    public void process() {
        //实现业务逻辑

    }

    @Override
    public boolean isAccess() {
      
        //这里做你的参数检查,如果没获取到必须的业务参数,就不会进入该组件
       //模拟检查结果为true
        return true;
    }

    @Override
    public boolean isContinueOnError() {
        //报错后继续执行其他节点
        return true;
    }

    @Override
    public boolean isEnd() {
        return super.isEnd();//默认为false
    }

}

编辑规则文件

 在Liteflow中,定义了then和when两种线程执行方式。

then代表串行,上面的示例中,bb必须要等cc执行完才能执行。


<flow>
    <chain name="test">
        THEN(cc,bb);
    </chain>

</flow>

 when代表并行,示例中,cc,dd同时执行。


<flow>
    <chain name="test">
        WHEN(cc,bb);
    </chain>

</flow>

Liteflow允许你编辑嵌套的流程: 

这两条链路是串起来执行的,在xml里,可以写你的组件id,也可以写流程id。

​

<flow>
    <chain name="test">
        WHEN(cc,test1);
    </chain>

    <chain name="test1">
        WHEN(bb);
    </chain>

</flow>

​

流程启动 

@Component
public class TestFlow{

    @Resource
    private FlowExecutor flowExecutor;

    @Override
    public void run(String... args) throws Exception {

        //参数为流程ID,无初始流程入参,返回类型为默认上下文泛型的Response
        //public LiteflowResponse<DefaultContext> execute2Resp(String chainId)
        //第一个参数为流程ID,第二个参数为流程入参。其中流程入参可以在组件中通过this.getRequestData()来        获得。
        //public LiteflowResponse<DefaultContext> execute2Resp(String chainId, Object param);
        //第一个参数为流程ID,第二个参数为流程入参,第三个参数为自定义的上下文Bean类型
        //public <T> LiteflowResponse<T> execute2Resp(String chainId, Object param, Class<T>  contextBeanClazz)
        
        Slot slot = flowExecutor.execute2Resp("test");
        System.out.println(slot);
    }
}

总结

1.引入依赖
2.配置配置文件路径
3.配置组件节点 继承 NodeComponent
4.配置节点执行顺序 配置 flow.el.xml
5.启动流程 
 @Resource
    private FlowExecutor flowExecutor;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值