Solon v3.1.2

solon-flow [预览]

</> markdown
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-flow</artifactId>
</dependency>

1、描述

(v3.0.7 后支持)基础扩展插件。为 Solon Flow 提供通用的流处理能力。支持元信息扩展配置,支持开放式的驱动定制(像 JDBC 有 MySQL 或 PostgreSQL 等不同驱动一样)。可用于业务规则、决策处理、计算编排、流程审批等场景。

主要概念:

  • 链、节点(可带任务)、连接(可带条件)
  • 链上下文、链驱动器、任务组件接口(TaskComponent)、条件组件接口(ConditionComponent)
  • 流引擎

概念关系描述(就像用工具画图):

  • 一个链(Chain),会有多个节点(Node)组成(可称为编排)。
  • 一个节点(Node),会有多个连接(Link,也叫“流出连接”)连向别的节点。
    • 连接向其它节点,称为:流出连接。
    • 被其它节点连接,称为:流入连接。
  • 一个链“必须有且只有”一个 start 类型的节点,且从 start 节点开始,顺着连接(Link)流出。
  • 链的流转过程,可以有上下文参数(FlowContext),可以被中断(可支持有状态的审批模式)

通俗些,就是通过 “点”(节点) + “线”(连接)来描述一个流程图结构。

2、学习与教程

此插件也可用于非 solon 生态。具体开发学习,可参考:《教程 / Solon Flow 开发》

3、应用简单示例

配置参考

# demo1.chain.yml(完整模式)
id: "c1"
layout: 
  - { id: "n1", type: "start", link: "n2"}
  - { id: "n2", type: "activity", link: "n3", task: "System.out.println(\"hello world!\");"}
  - { id: "n3", type: "end"}


# demo2.chain.yml(简化模式)
id: "c2"
layout: 
  - { type: "start"}
  - { task: "System.out.println(\"hello world!\");"}
  - { type: "end"}

代码应用

@Configuration
public class App {
    @Inject 
    FlowEngine flowEngine;

    @Bean
    public void test() throws Throwable {
        flowEngine.eval("c1");
    }
}