跳转至

按当前时间与条件执行

本教程创建一条“星期三或星期五执行共同动作,其他日期不执行”的蓝图路线。它同时演示如何让多个条件共享后续动作,以及如何避免重叠条件重复启动同一宏。

前置条件

  • 已创建一张可编辑的蓝图,并能从开始节点运行到结束节点。
  • 熟悉在画布上按 Shift+A 添加节点和连接端口。
  • 已准备一个安全的测试动作。初次练习可先用无外部副作用的节点代替真实宏。

开始与结束接口的完整规则见变量与蓝图接口

最终结构

开始 → 当前时间 → 顺序执行
          │          ├─ 输出 0 → 分支(周几 = 3)── true ─┐
          │          └─ 输出 1 → 分支(周几 = 5)── true ─┤
          │                                                 └→ 单次汇流 → 共同动作 → 延迟执行(1 秒)→ 结束执行
          ├─ 周几 → 数值对比 A(等于 3)→ 分支 A 的布尔值
          └─ 周几 → 数值对比 B(等于 5)→ 分支 B 的布尔值

“当前时间”负责在执行流到达时采样;“数值对比”只计算布尔结果,不会主动推动流程;“分支”选择路线;“单次汇流”只允许本次蓝图运行中最先到达的一个输入继续。

步骤一:读取执行时刻

  1. 在开始节点后添加 工具当前时间
  2. 把开始节点的执行输出连接到“当前时间”的执行输入。
  3. 添加 执行管理顺序执行,把“当前时间”的执行输出连接到它。

不要省略“当前时间”的执行线。该节点不是编辑时就固定结果的数据节点,每次执行到它时才会重新读取本机时间。

步骤二:建立星期三与星期五条件

  1. 添加两个 运算数值对比 节点,分别命名或排列为“星期三”和“星期五”。
  2. 把“当前时间”的“周几”整数输出分别连接到两个节点的左值。
  3. 将第一个比较方式设为“等于”,右值填 3
  4. 将第二个比较方式设为“等于”,右值填 5
  5. 添加两个 执行管理分支 节点。
  6. 把两个“数值对比”的“结果”分别连接到对应分支的“布尔值”。
  7. 把“顺序执行”的两个执行输出分别连接到两个分支的执行输入。

“当前时间”的周几编号为周一 1、周日 7。这里的 35 分别表示星期三和星期五。

步骤三:让共同动作只执行一次

  1. 添加 执行管理单次汇流,保留默认两个执行输入。
  2. 把两个分支的 true 输出分别连接到“单次汇流”的两个输入。
  3. 把“单次汇流”的“通过”输出连接到一个会立即产生可观察结果、但没有外部副作用的测试动作。
  4. 在测试动作后连接一个 1 秒的“延迟执行”,再连接到“结束执行”。
  5. 两个分支的 false 输出可以保持未连接;它们表示当天不走这项共同动作。

“单次汇流”不会等待所有输入,也不会逐个放行;一次蓝图运行中只放行最先到达的一路。

这里把延迟放在测试动作之后,是为了让“顺序执行”的第二条路线在蓝图结束前也有机会到达门禁。否则第一条即时路线可能先到达“结束执行”并终止整张蓝图,使测试结果无法证明第二条路线确实被“单次汇流”拦截。业务流程确认无误后,可以按真实动作的等待特性决定是否保留这段延迟。

验证结果

无需等待星期三或星期五,可以临时修改右值完成两组验证:

  1. 查看本机今天是周几,把其中一个右值临时改成对应编号。
  2. Debug 蓝图,确认测试动作执行一次,随后经过 1 秒延迟正常结束。
  3. 再把两个比较节点的右值都改成今天的编号。
  4. 再次 Debug:第一条路线执行测试动作并进入延迟时,第二条路线也会到达“单次汇流”,但测试动作仍只执行一次。
  5. 恢复右值为 35,把测试动作替换为真实共同动作,再保存蓝图。

每次重新运行蓝图时,“单次汇流”会自动恢复,因此下次符合条件时仍可执行。

失败处理

  • 两个日期都不执行:确认“当前时间”接有执行输入,并检查周几使用 1–7 而不是 0–6
  • 分支总走 false:检查数值对比的“结果”是否连接到对应分支的布尔值,左右值是否接反。
  • 共同动作执行了两次:确认两条 true 路线先进入同一个“单次汇流”,而不是分别直接连接共同动作。
  • 只连接数据线后没有任何动作:数值对比是纯数据节点;两个分支仍需要来自“顺序执行”的执行线。
  • 希望等所有条件都完成才执行:“单次汇流”不具备等待全部输入的功能,应重新设计为布尔组合或计数逻辑。

相关内容