Solon v3.2.1

solon-flow

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

1、描述

(v3.0.7 后支持)基础扩展插件。为 Solon 提供通用的流编排能力。

  • 可用于计算(或任务)的编排场景
  • 可用于业务规则和决策处理型的编排场景
  • 可用于办公审批型(有状态、可中断,人员参与)的编排场景
  • 可用于长时间流程(结合自动前进,等待介入)的编排场景

主要概念:

  • 链、节点(可带任务)、连接(可带条件)
  • 链上下文、链驱动器、任务组件接口(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");
    }
}