流程解剖
流程是一份保存的文档。知道里面有什么,编辑器就变得可预测,也解释了为什么有的东西可复用有的不行,还告诉你把流程导出到另一台机器时真正带走的是什么。
目的
本页描述流程的各个部分及其关系。在你第一个非平凡流程之前读它,开始把工作拆成子流程时再读一遍。
组成部分
图上的一切都存在流程里。导出的流程全部带走。
节点
节点是一个带类型的步骤。每个节点有:
| 字段 | 含义 |
|---|---|
id | 稳定标识——永不改变,改名后仍在 |
type | 节点种类(action.click、detect.image……) |
name | 画布上看到的标签——自由文本,随便改 |
params | 节点设置,因类型而异 |
retryPolicy | 可选的按节点重试,或没有 |
outputMappings | 可选:把节点输出写入变量 |
ui | 画布位置、颜色、折叠状态 |
重要推论:id 是身份,name 是标签。 改名永不断开连接,两个节点可以同名。
节点不拥有自己的路由。节点报告自己从哪个端口离开;流程的连线决定去哪。所以你能重接整张图而不动任何节点的设置。
端口
端口是节点上的命名出口。多数节点类型是固定集合:
- 多数节点:
success、failure、timeout、cancelled、fatal - 简单 If:
true/false - Memory Match:
matched/notMatched - Captcha:
solved/unsolved/failure
有几种节点从自身设置计算端口:
| 节点 | 端口取决于 |
|---|---|
| If 的 Multiple Branches 模式 | 每分支一个 case1…caseN,外加 default |
| If 的 Text-match 模式 | match / noMatch |
| Find Image 的 Branch-by-template 模式 | 每个选中模板一个端口,外加 notFound |
| Branch(随机分支) | 由分支数得出 branch1…branchN |
调低数量时,尾部端口消失,编辑器替你剪掉孤儿连线。
必接端口与可选端口
有的端口必须接上流程才有效;有的可以有意留空。
- 必接——留空是校验错误。多数节点的
success。 - 可选(宽容)——留空是合法的"到此为止"。走到就平静结束。
Branch 是严格派:每个分支端口都必须连接,因为运行时可能选中任何一 个,空着的分支会随机把运行带进死胡同。
连线
连线把一个节点的端口接到另一个节点。连线携带:
| 字段 | 含义 |
|---|---|
fromNodeId + fromPort | 从哪离开 |
toNodeId | 去哪 |
priority | 多条连线共用一个端口时的顺序 |
condition | 可选守卫,解析时求值 |
同一端口可以出多条连线,按优先级依次尝试;见连线解析。
区域
**区域(region)**是命名矩形,按屏幕百分比存储,不是像素。
百分比存储正是流程在一种分辨率上搭好、换分辨率照样能跑的原因。盖住 1280×720 右上四分之一的区域,在 1920×1080 上盖的还是右上四分之一。
区域有 id(身份)和 name(标签)。节点绑定 id,改名不影响使用它的节点。
区域可存入 Region Library 跨流程复用。
素材——模板图像
**素材(asset)**是 Find Image 节点用来匹配的已截取模板图。每条记录:
- 图像文件与校验和,
- 像素尺寸,
- 截取时的分辨率,
- 一份质量评估——熵、边缘密度、主色占比,以及是否推荐。
质量评估就是应用能警告"模板太平淡或太杂乱、难以稳定匹配"的原因。
几乎纯色的模板熵低,会在屏幕上到处匹配。带大量背景的模板在背后任何东西变化时就失效。截取目标最有辨识度的部分,贴紧裁剪。
分组
分组是画在画布局部周围的命名框,可加注释,可折叠。
分组是纯创作家具。没有端口,没有设置,永不执行。成员资格是几何的——框住谁谁就是成员——把节点拖进拖出就是一次拖拽,没有节点保存会过期的父 id。
只有注释、没有成员的分组就是你的注释框。不用学第二种注释概念。