Solon v3.7.3

flow - 图硬编码的接口参考

</> markdown
2025年12月21日 下午11:41:43

图接口分为:图(用于运行,不可修改) 和 图定义(用于定义和修改,然后创建新图)。示例:

//创建图
Graph graph = Graph.create("demo1", spec -> {
    //开始定义
    spec.addStart("start").linkAdd("n1");
    spec.addActivity("n1").task(new Draft()).linkAdd("n2");
    spec.addActivity("n2").task(new Review()).linkAdd("n3");
    spec.addActivity("n3").task(new Confirm()).linkAdd("end");
    spec.addEnd("end");
});

//复制,并修改为新图
Graph graphNew = Graph.copy(graph, spec -> {
    //修改定义
    spec.removeNode("n3"); //移除节点n3
    spec.getNode("n2").linkRemove("n3").linkAdd("end"); //移除 n2->n3 的连接,并添加 n2->end 连接
});

//执行
flowEngine.eval(graphNew);

1、Graph (图)主要方法

方法描述备注
+ create(id, (GraphSpec spec)->{}) : Graph创建图
+ create(id, title, (GraphSpec spec)->{}) : Graph创建图
+ copy(graph, (GraphSpec spec)->{}) : Graph复制图,并修改定义
+ fromUri(url) : Graph通过配置文件加载图
+ fromText(text) : Graph通过配置文本加载图
toYaml() : String转为 yaml
toJson() : String转为 json
toMap : Map<String, Object>转为 map(方便其它序列化方式)
getId() : String获取id
getTitle() : String获取显示标题
getDriver() : String获取驱动配置
getMetas() : Map<String, Object>获取所有元数据只读
getMeta(key) : Object获取元数据
getMetaAs(key) : T获取元数据(泛型)
getMetaOrDefault(key, def) : T获取元数据或默认(泛型)
getLinks() : List<Link>获取所有连接只读
getStart() : Node获取开始节点
getNodes() : Map<String, Node>获取所有节点只读
getNode(id) : Node获取节点
getNodeOrThrow(id) : Node获取节点或异常

2、GraphSpec (图定义接口)主要方法

可以通过 Graph.create("g1", spec->{ }) 产生。也可以通过 new GraphSpec("g1") 生产。

方法描述备注
+ GraphSpec(id) : GraphSpec构造图定义
+ GraphSpec(id, title) : GraphSpec构造图定义
+ GraphSpec(id, title, driver) : GraphSpec构造图定义
+ fromUri(text) : GraphSpec通过配置文件加载图定义
+ fromText(text) : GraphSpec通过配置文本加载图定义
then((GraphSpec spec)->{}) : Graph然后(修改定义)
create() : Graph生成图
toYaml() : String转为 yaml
toJson() : String转为 json
toMap : Map<String, Object>转为 map(方便其它序列化方式)
getId() : String获取id
getTitle() : String获取显示标题
getDriver() : String获取驱动配置
getMetas() : Map<String, Object>获取所有元数据只读
getMeta(key) : Object获取元数据
getMetaAs(key) : T获取元数据(泛型)
getMetaOrDefault(key, def) : T获取元数据或默认(泛型)
getNodes() : Map<String, NodeSpec>获取所有节点定义只读
getNode(id) : NodeSpec获取节点定义
removeNode(id) : NodeSpec移除节点定义
addNode(nodeSpec) : NodeSpec添加节点定义
addStart(id) : NodeSpec添加开始节点定义
addEnd(id) : NodeSpec添加结束节点定义
addActivity(id) : NodeSpec添加活动节点定义
addInclusive(id) : NodeSpec添加包容节点定义
addExclusive(id) : NodeSpec添加排他节点定义
addParallel(id) : NodeSpec添加并行节点定义
addLoop(id) : NodeSpec添加循环节点定义