当前位置: 首页 > news >正文

同步wordpress到微信移动优化课主讲:夫唯老师

同步wordpress到微信,移动优化课主讲:夫唯老师,山东青岛最新消息,外贸网站模版前面了解了基础的概念及流程,以及一些参数类下面了解一些特殊的边和节点条件边常见的流程图可能长这个样子:其中菱形的为条件节点(或者叫判定节点),但是在spring-ai-alibaba-graph中,并没有条件节点在sprin…

前面了解了基础的概念及流程,以及一些参数类

下面了解一些特殊的边和节点

条件边

常见的流程图可能长这个样子:

其中菱形的为条件节点(或者叫判定节点),但是在spring-ai-alibaba-graph中,并没有条件节点

在spring-ai-alibaba-graph中,条件是加在边上的

直觉添加条件边的方法可能是这个样子:addEdge(sourceNodeId, targetNodeId, condition)

但实际是这个样子:addConditionalEdges(sourceNodeId, condition, mappings)

sourceNodeId 是边的起始节点,condition 是判断条件,输出结果中包含一个 String 类型的结果,mappings 是一个Map<String, String>,key 是 condition 返回的结果中的 String, value 是 targetNodeId,目标节点id

也就是说,addConditionalEdges 方法添加了一个Edge对象,这个Edge对象包含了传统流程图中判定节点的逻辑,和后续从该判定节点延伸出的所有边

说实话这种设计给人的感觉不够直观,不清楚是为了与langgraph保持一致,还是有其他考量

并行节点

条件边是多边n选1,那如果多边n选n,也就是并行执行,类似下图,该如何操作

其实根据图形来设置节点和边即可

StateGraph stateGraph = new StateGraph(keyStrategyFactory)                
.addNode("a", nodeasync(new ...))                
.addNode("b", nodeasync(new ...))                
.addNode("c", nodeasync(new ...))
.addNode("d", nodeasync(new ...)).addEdge(StateGraph.START, "a")                
.addEdge("a", "b")                
.addEdge("a", "c")
.addEdge("b", "d")
.addEdge("c", "d")                
.addEdge("d",  StateGraph.END)

在编译图时,会将b节点和c节点组合成为一个并行节点 ParallelNode,并行节点的id为“__PARALLEL__”+前序节点的id

ParallelNode:继承Node类,内部含id和ActionFactory,构造函数参数为【id,多个异步节点 List<AsyncNodeActionWithConfig> actions,状态中各字段的更新策略Map<String, KeyStrategy> keyStrategyMap】

ActionFactory 对应 lambda 表达式为:(config) -> new AsyncParallelNodeAction(actions, keyStrategyMap)

AsyncParallelNodeAction:实现了AsyncNodeActionWithConfig接口,提供 CompletableFuture<Map<String, Object>> apply(OverAllState state, RunnableConfig config) 方法,内部包含前面提到的多个异步节点 List<AsyncNodeActionWithConfig> actions,状态中各字段的更新策略Map<String, KeyStrategy> keyStrategyMap

AsyncParallelNodeAction执行时会同时执行内部的多个异步节点 List<AsyncNodeActionWithConfig> actions,并等待全部执行完成后进入下一节点

ps:并行节点的原节点,也就是b和c,后续的边不能是条件边,而且必须有同一个targetNode,也就是d,不支持配置下图的流程

子图节点

    StateGraph child = ...StateGraph parent = ...parent.addNode("nodeId", child);...

所谓子图,就是图中图,以节点的形式将一个图嵌入到另一个图中

使用方法很简单,StateGraph 提供了一个重载方法 addNode(String id, StateGraph subGraph)

addNode 方法会将子图封装为 SubStateGraphNode ,该类内部包含id和一个StateGraph

编译时,ProcessedNodesEdgesAndConfig 会将子图中的START节点替换为子图外部的前序节点,将子图中的END节点替换为子图外部的后续节点,子图中的节点的id会替换为【子图节点id+节点id】

子图不支持内部以并行节点开始,也不支持子图外部后续节点为并行节点

ps:由于编译时是先处理子图,然后再处理并行节点,所以前一节的多步骤并行的流程也无法通过将b和b2做成子图节点来实现

http://www.dtcms.com/a/619484.html

相关文章:

  • 数电基础:时序逻辑电路的分析方法
  • pod能不能使用分区后的盘
  • 效果图网站都有哪些?wordpress是用什么语言
  • 做个网站要花多少钱兼职网站建设 开源
  • 考研培训机构排名金华网站建设优化技术
  • 东莞网站建设推广平台表格制作
  • 网站建设与制作区别网站 后台 模板
  • 50022_基于微信小程序同城维修系统
  • 新网做网站怎么上传wordpress 用户名
  • 简历空窗期被追问。。。
  • 网站平台免费网站建设设计基础
  • Java算法题解析(2)
  • 408计算机考研操作系统操作系统的基本概念
  • 本地wordpress怎么上传网站公司seo
  • 中企动力做网站贵吗辽宁网络推广公司
  • 网站建设规范自建设网站
  • 建设银行手机银行登录网站鄞州区网站建设报价
  • 最大连续子序列和2(浙大2005研究生复试上机考试题)
  • 网站首页模块建设什么是网站开发公司电话
  • 选择HttpHandler还是HttpModule?
  • 慈溪市规划建设网站创新的企业网站开发
  • 公司企业网站模板最好的活动策划公司
  • 自己做网站广告无锡建设局官方网站
  • 深圳市建设行业门户网站电子商务基础平台有哪些
  • 精湛的网站建设国外产品设计网
  • 万云网络网站网站做中英版
  • 网站运营推广怎做vs做网站如何调试
  • 淄博网站制作服务wordpress 菜单 链接地址
  • BT Navigator:插件化架构与执行逻辑深度大概表达我的思路
  • 盐城滨海建设局网站免费网站在哪里申请