LiteFlow LiteFlow
💒首页
  • v2.10.1(当前版本)
  • What's New

    • What' s New In LiteFlow v2.10.1?
  • 历史版本

    • v2.9.X
    • v2.8.X
    • v2.7.X
    • v2.6.X
  • 升级指南

    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
❓问答
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
加入群聊
用户
  • TLog-轻量级的分布式日志追踪神器 (opens new window)
  • ERD ONLINE-开箱即用的数据库建模、产品版本管理软件 (opens new window)
  • Forest-更轻量、更简单实用的HTTP客户端框架 (opens new window)
Gitee (opens new window)
Github (opens new window)
  • 简体中文 (opens new window)
  • English (opens new window)
💒首页
  • v2.10.1(当前版本)
  • What's New

    • What' s New In LiteFlow v2.10.1?
  • 历史版本

    • v2.9.X
    • v2.8.X
    • v2.7.X
    • v2.6.X
  • 升级指南

    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
❓问答
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
加入群聊
用户
  • TLog-轻量级的分布式日志追踪神器 (opens new window)
  • ERD ONLINE-开箱即用的数据库建模、产品版本管理软件 (opens new window)
  • Forest-更轻量、更简单实用的HTTP客户端框架 (opens new window)
Gitee (opens new window)
Github (opens new window)
  • 简体中文 (opens new window)
  • English (opens new window)
  • LiteFlow简介
  • 项目特性
  • 快速开始(Hello world)

    • Springboot场景安装运行

      • 依赖
      • 配置
      • 执行
    • Spring场景安装运行

      • 依赖
      • 配置
      • 执行
    • 其他场景安装运行

      • 说明
      • 依赖
      • 配置
      • 执行
  • 配置项

    • 说明
    • Springboot下的配置项
    • Spring下的配置项
    • 其他场景代码设置配置项
  • 规则文件

    • 规则文件格式
    • 本地规则文件配置
    • ZK规则文件配置
    • 自定义配置源
  • 用代码动态构造规则

    • 说明
    • 如何构造
      • 什么时候构造
      • 构造Node
      • 构建一个Chain
      • 销毁一个Chain
  • 使用详细指南

    • 开启和关闭
    • 规则文件路径
    • 同步异步编排
    • 执行器
    • 数据上下文
    • Response对象
    • 普通组件
    • 条件组件
    • 脚本组件
    • 声明式组件
    • 前置后置组件
    • 组件别名
    • 组件标签
    • 组件事件回调
    • 子流程
    • 隐式子流程
    • 私有投递
    • 组件重试
    • 平滑热刷新
    • 组件切面
    • 步骤信息
    • 打印信息详解
    • 不同格式规则加载
    • When异步线程池
    • 自定义组件执行器
    • 简单监控
  • 示例工程

    • 测试用例
    • DEMO案例
  • 性能表现
  • v2.7.X文档
  • 用代码动态构造规则
铂赛东
2022-06-01
目录

如何构造

要说明的是,构造模式和规则配置模式,其实并不是只能二选一。他们既可以单独使用,也可以结合起来使用,并不冲突。事实上,即便是规则配置模式,底层也使用了构造模式。所以,您随意就是。

# 什么时候构造

建议在项目启动时构造,以下只需要构造一次。千万不要每次执行的时候都去构造!!!

# 构造Node

提示

你可以像以下那样构造一个普通的Node,当然在spring/springboot环境,大多数情况你无需去构建一个Node,因为只要你的组件上标有@Component/@LiteflowComponent,并且被scan到的话,组件会自动注册。

我这里只是告诉您,可以这样去通过代码去构造,如果你的组件是动态代理类而不是一个静态存在的java类,或是脚本节点,这样的构建就显得很有意义了。

关于脚本节点的概念,可以查看脚本组件

//构建一个普通组件
LiteFlowNodeBuilder.createCommonNode().setId("a")
                .setName("组件A")
                .setClazz("com.yomahub.liteflow.test.builder.cmp.ACmp")
                .build();

//构建一个普通条件组件
LiteFlowNodeBuilder.createCommonCondNode().setId("a")
                .setName("组件A")
                .setClazz("com.yomahub.liteflow.test.builder.cmp.ACmp")
                .build();

//构建一个脚本组件
LiteFlowNodeBuilder.createScriptNode().setId("a")
                .setName("组件A")
                .setScript("你的脚本")
                .build();

//构建一个脚本条件组件
LiteFlowNodeBuilder.createScriptCondNode().setId("a")
                .setName("组件A")
                .setScript("你的脚本")
                .build();

//构建一个脚本组件,从file载入脚本
LiteFlowNodeBuilder.createScriptNode().setId("a")
                .setName("组件A")
                .setFile("xml-script-file/s1.groovy")
                .build();

提示

这里的节点类,不需要你去声明@LiteflowComponent或者@Component,如果项目是spring体系的话,LiteFlow框架会自动的把节点类注入到spring上下文中。

所以你仍旧可以在这个类里使用@Autowired和@Resource等等之类的spring任何注解。

# 构建一个Chain

你可以像以下那样构造一个chain,由于和规则定义的没冲突。你也可以和规则文件结合起来用。当build的时候,如果没有则添加,如果有则修改。

LiteFlowChainBuilder.createChain().setChainName("chain2").setCondition(
  LiteFlowConditionBuilder.createThenCondition().setValue("c,d").build()
).build();

LiteFlowChainBuilder.createChain().setChainName("chain1").setCondition(
  LiteFlowConditionBuilder.createThenCondition().setValue("a,b").build()
).setCondition(
  LiteFlowConditionBuilder.createWhenCondition().setValue("e(f|g|chain2)").build()
).build();

值得提一下的是,由于用构造模式是一个链路一个链路的添加,如果你的链路之间有依赖关系,比如上面的代码,chain1依赖chain2,那么chain2要先构建。否则会报错。

如果使用规则文件,那顺序无所谓,因为规则文件是统一解析好的。用构造模式,如果有依赖,顺序问题要注意下。

# 销毁一个Chain

LiteFlow从2.6.13开始支持了流程的销毁,你可以手动运行以下代码来销毁一个流程:

FlowBus.removeChain("你的流程ID")
帮助我们改善此文档 (opens new window)
上次更新: 2022/10/07, 00:22:18
说明
开启和关闭

← 说明 开启和关闭→

Theme by Vdoing | Copyright © 2020-2023 铂赛东 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式