flow - 图硬编码的接口参考
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 | 添加循环节点定义 |