跳转到内容

控制

有五个节点负责驾驭场景的执行流程。

提醒一下:任何节点都还带有隐含端口 inerrordone —— 参见端口与连线

声明场景的参数

输入
输出value —— 一个单一对象 { name: value, … }
配置name(参数名)、valueType(它的类型和默认值)

这些值在启动时提供,可以用命令行的 --param name=value 传入, 也可以在执行到该节点却没有可用值时交互式地询问

输入“baseUrl”(字符串) ──► 请求的 env 端口

向场景的调用方暴露一个结果。

输入value
输出无 —— 这是一个终点:既没有 error,也没有 done
配置name

运行场景动作调用的场景,会把它的每一个输出提供在调用方的 output:<name> 端口上。

两路分支。

输入leftright
输出thenelse
配置operatorltlteeqgtegtnecontains —— 另外还有作为字面值的 leftright

小技巧:如果两个操作数既没有接线也没有填写,该节点就只判断 in 上收到的信号是否为真。 这就是不带显式条件的“只要走到了这里”。

N 路分支。

输入on
输出每个已声明的分支一个 case-<id> 端口,另加 default
配置cases:一组 { id, value }

只要出口多于两个,它就比一连串 If 更可取:每个分支都是一根独立的线,视觉上一目了然。

出错后重来的边界。

输入maxAttemptsdelay
输出attempt(每一次尝试)、exhausted(尝试次数用尽)
配置见下文
字段默认值作用
maxAttempts3最大尝试次数
backofffixedfixedlinearexponential
delay + delayUnit基础延迟(mssmin
factor2指数模式下的增长因子
maxDelay + maxDelayUnit延迟上限
retryOnErrortrue出错时重试
retryOnFailurefalse业务失败时重试
retryOnStatus一组 HTTP 状态码,例如 [429, 503]

接在 attempt 上的子图构成被重试的范围。成功时,出口是 done这个节点没有 error 端口:因为它本身就是边界。

Retry(3 次,指数退避,[429,503])
├─ attempt ──► HTTP 请求 ──► Assert
└─ exhausted ──► Throw“服务不可用”