前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >liteflow快速开始

liteflow快速开始

作者头像
阿超
发布2024-03-20 17:29:13
1261
发布2024-03-20 17:29:13
举报
文章被收录于专栏:快乐阿超快乐阿超

人类永远会选择他们理解的,摒弃不理解的。这个世界唯一剩下的动物,就是他们已经驯服的那些,匍匐在他们的脚边,或者那些非常警觉,一察觉到他们靠近就逃离的动物,没有介于二者之间的。——《西部世界》

今天上手用了下liteflow,感觉非常不错

首先引入

代码语言:javascript
复制
<dependency>
    <groupId>com.yomahub</groupId>
    <artifactId>liteflow-spring-boot-starter</artifactId>
    <version>2.11.4.2</version>
</dependency>

编写A组件

代码语言:javascript
复制


import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.core.NodeComponent;
import com.yomahub.liteflow.slot.DefaultContext;

@LiteflowComponent("a")
public class ACmp extends NodeComponent {

    @Override
    public void process() {
        //do your business
        System.out.println("ACmp");
        var requestData = this.getRequestData();
        System.out.println(requestData);
        DefaultContext firstContextBean = this.getFirstContextBean();
        var arg = firstContextBean.getData("arg");
        System.out.println(arg);
        firstContextBean.setData("arg", "v" + requestData);
    }

}

B组件

代码语言:javascript
复制



import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.core.NodeComponent;
import com.yomahub.liteflow.slot.DefaultContext;

@LiteflowComponent("b")
public class BCmp extends NodeComponent {

    @Override
    public void process() {
        //do your business
        System.out.println("BCmp");
        var requestData = this.getRequestData();
        System.out.println(requestData);
        DefaultContext firstContextBean = this.getFirstContextBean();
        var arg = firstContextBean.getData("arg");
        System.out.println(arg);
    }
}

C组件

代码语言:javascript
复制


import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.core.NodeComponent;

@LiteflowComponent("c")
public class CCmp extends NodeComponent {

    @Override
    public void process() {
        //do your business
        System.out.println("CCmp");
    }
}

然后是编排文件和配置文件

代码语言:javascript
复制
resources
    ├── config
    |     └── flow.el.xml
    └── application.yml

config/flow.el.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<flow>
    <chain name="chain1">
        THEN(a, b, c);
    </chain>
</flow>

application.yml

代码语言:javascript
复制
liteflow:
  rule-source: config/flow.el.xml

运行

代码语言:javascript
复制


import com.yomahub.liteflow.core.FlowExecutor;
import com.yomahub.liteflow.flow.LiteflowResponse;
import com.yomahub.liteflow.slot.DefaultContext;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import static org.assertj.core.api.Assertions.assertThat;

/**
 * LiteflowTest
 *
 * @author achao@apache.org
 */
@SpringBootTest
class LiteflowTest {

    @Resource
    private FlowExecutor flowExecutor;

    @Test
    void test() {
        LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
        DefaultContext firstContextBean = response.getFirstContextBean();
        var arg = firstContextBean.getData("arg");
        assertThat(arg).isEqualTo("varg");
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档