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

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

    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
💒首页
  • v2.13.2(当前版本)
  • What's New

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

    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)
  • 🍤LiteFlow简介
  • 🍓项目特性
  • 🍟快速开始(Hello world)

  • 🍢配置项

  • 🗂规则文件

  • 🔗常规组件

  • 🧩EL规则的写法

  • 🌮数据上下文

  • 🛩执行器

  • 🍋脚本组件

  • 🍇声明式组件

  • 🎲用代码动态构造规则

    • 🍄说明
    • 🎯如何构造
      • 什么时候构造
      • 构造Node
      • 构建一个Chain
      • 销毁一个Chain
  • 🎨高级特性

  • ⛱测试用例以及示例

  • 🪂性能表现
  • v2.9.X文档
  • 🎲用代码动态构造规则
铂赛东
2022-07-02
目录

🎯如何构造

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

# 什么时候构造

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

# 构造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.createSwitchNode().setId("a")
                .setName("组件A")
                .setClazz("com.yomahub.liteflow.test.builder.cmp.ACmp")
                .build();

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

//构建一个脚本条件组件
LiteFlowNodeBuilder.createScriptSwitchNode().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的时候,如果没有则添加,如果有则修改。

LiteFlowChainELBuilder.createChain().setChainName("chain2").setEL(
  "THEN(a, b, WHEN(c, d))"
).build();

值得提一下的是,由于用构造模式是一个链路一个链路的添加,如果你用了子流程,如果chain1依赖chain2,那么chain2要先构建。否则会报错。

但是经过上面几章的学习,其实一个EL表达式完全可以表示一个复杂的流程,即便不能也可以用子变量来优化流程。

# 销毁一个Chain

LiteFlow中允许你手动运行以下代码来销毁一个流程:

FlowBus.removeChain("你的流程ID")
帮助我们改善此文档 (opens new window)
上次更新: 2023/03/17, 01:44:42
🍄说明
🍒前置和后置组件

← 🍄说明 🍒前置和后置组件→

Theme by Vdoing | Copyright © 2020-2025 铂赛东 | MIT License
沪ICP备18012955号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式