按当前时间与条件执行¶
本教程创建一条“星期三或星期五执行共同动作,其他日期不执行”的蓝图路线。它同时演示如何让多个条件共享后续动作,以及如何避免重叠条件重复启动同一宏。
前置条件¶
- 已创建一张可编辑的蓝图,并能从开始节点运行到结束节点。
- 熟悉在画布上按
Shift+A添加节点和连接端口。 - 已准备一个安全的测试动作。初次练习可先用无外部副作用的节点代替真实宏。
开始与结束接口的完整规则见变量与蓝图接口。
最终结构¶
开始 → 当前时间 → 顺序执行
│ ├─ 输出 0 → 分支(周几 = 3)── true ─┐
│ └─ 输出 1 → 分支(周几 = 5)── true ─┤
│ └→ 单次汇流 → 共同动作 → 延迟执行(1 秒)→ 结束执行
├─ 周几 → 数值对比 A(等于 3)→ 分支 A 的布尔值
└─ 周几 → 数值对比 B(等于 5)→ 分支 B 的布尔值
“当前时间”负责在执行流到达时采样;“数值对比”只计算布尔结果,不会主动推动流程;“分支”选择路线;“单次汇流”只允许本次蓝图运行中最先到达的一个输入继续。
步骤一:读取执行时刻¶
- 在开始节点后添加
工具→当前时间。 - 把开始节点的执行输出连接到“当前时间”的执行输入。
- 添加
执行管理→顺序执行,把“当前时间”的执行输出连接到它。
不要省略“当前时间”的执行线。该节点不是编辑时就固定结果的数据节点,每次执行到它时才会重新读取本机时间。
步骤二:建立星期三与星期五条件¶
- 添加两个
运算→数值对比节点,分别命名或排列为“星期三”和“星期五”。 - 把“当前时间”的“周几”整数输出分别连接到两个节点的左值。
- 将第一个比较方式设为“等于”,右值填
3。 - 将第二个比较方式设为“等于”,右值填
5。 - 添加两个
执行管理→分支节点。 - 把两个“数值对比”的“结果”分别连接到对应分支的“布尔值”。
- 把“顺序执行”的两个执行输出分别连接到两个分支的执行输入。
“当前时间”的周几编号为周一 1、周日 7。这里的 3 和 5 分别表示星期三和星期五。
步骤三:让共同动作只执行一次¶
- 添加
执行管理→单次汇流,保留默认两个执行输入。 - 把两个分支的
true输出分别连接到“单次汇流”的两个输入。 - 把“单次汇流”的“通过”输出连接到一个会立即产生可观察结果、但没有外部副作用的测试动作。
- 在测试动作后连接一个
1秒的“延迟执行”,再连接到“结束执行”。 - 两个分支的
false输出可以保持未连接;它们表示当天不走这项共同动作。
“单次汇流”不会等待所有输入,也不会逐个放行;一次蓝图运行中只放行最先到达的一路。
这里把延迟放在测试动作之后,是为了让“顺序执行”的第二条路线在蓝图结束前也有机会到达门禁。否则第一条即时路线可能先到达“结束执行”并终止整张蓝图,使测试结果无法证明第二条路线确实被“单次汇流”拦截。业务流程确认无误后,可以按真实动作的等待特性决定是否保留这段延迟。
验证结果¶
无需等待星期三或星期五,可以临时修改右值完成两组验证:
- 查看本机今天是周几,把其中一个右值临时改成对应编号。
- Debug 蓝图,确认测试动作执行一次,随后经过
1秒延迟正常结束。 - 再把两个比较节点的右值都改成今天的编号。
- 再次 Debug:第一条路线执行测试动作并进入延迟时,第二条路线也会到达“单次汇流”,但测试动作仍只执行一次。
- 恢复右值为
3和5,把测试动作替换为真实共同动作,再保存蓝图。
每次重新运行蓝图时,“单次汇流”会自动恢复,因此下次符合条件时仍可执行。
失败处理¶
- 两个日期都不执行:确认“当前时间”接有执行输入,并检查周几使用
1–7而不是0–6。 - 分支总走 false:检查数值对比的“结果”是否连接到对应分支的布尔值,左右值是否接反。
- 共同动作执行了两次:确认两条
true路线先进入同一个“单次汇流”,而不是分别直接连接共同动作。 - 只连接数据线后没有任何动作:数值对比是纯数据节点;两个分支仍需要来自“顺序执行”的执行线。
- 希望等所有条件都完成才执行:“单次汇流”不具备等待全部输入的功能,应重新设计为布尔组合或计数逻辑。