执行顺序与同步异步
本章介绍动作流中多个节点的执行顺序、同步与异步的差异,以及批量触发的去重规则。
1. 执行顺序
同层级的节点按画布上的摆放顺序依次执行——先配置的先执行。
遇到分支时按条件走对应路径;遇到子流程或续接时先执行完该分支,再继续主流程。
顺序即画布上从触发根沿连线数下去的顺序:横向排列时从左到右,纵向排列时从上到下。切换方向不改变实际执行顺序。
确认先后关系时,沿画布连线数一遍即可,不需要额外记忆规则。
2. 同步动作
多数动作默认为同步:上一步未完成,下一步不会开始。
| 特性 | 说明 |
|---|---|
| 失败即中止同层 | 同步动作执行失败时,其后同层级的节点整体中止,不再继续,避免前面出错后面继续执行造成数据错乱 |
| 使用者感受 | 点击按钮后可能出现短暂的等待状态,该步真正完成后才看到下一步的效果 |
3. 异步动作
可在节点配置中把动作改为异步,节点上显示异步角标。
| 特性 | 说明 |
|---|---|
| 不等待 | 触发后流程立即继续,不等其完成 |
| 失败不中止 | 异步动作失败只被记录,不打断已在推进的其他节点 |
| 使用者感受 | 点击后界面几乎没有等待感,多个动作看似同时发生。异步动作自身的反馈(如提示)可能比同步的后续步骤更晚出现 |
并非所有动作都支持异步。 有些动作必须等待结果才有意义(例如打开联动表单让使用者选择一条记录,后续分支取决于其选择)。为不支持异步的动作勾选异步开关时,保存会被拦截并给出提示。
条件分支恒为同步。 无论前面的动作是同步还是异步,条件判断都会等待可判断的数据就绪后才继续,不会出现尚未判断完就走了某条分支的情况。
4. 批量触发的去重
某些操作会一次改动多个字段,例如通过下拉或级联控件选中一条记录后联动填入多个字段。
若这些字段各自绑定了"字段值变化"事件,系统不会视为多次独立触发:
| 规则 | 说明 |
|---|---|
| 合并为一次触发 | 这批字段的变化在操作结束的那一刻(如下拉收起时)统一算作一次变化,而非每改一个字段触发一次 |
| 同一条记录内按动作去重 | 这批变化中若多个字段指向同一条动作流,该流程只执行一次 |
明细表的多行是分别计算的。 若变化涉及明细表的多行(例如用填充柄一次改了多行),去重按行分别进行:同一行内重复的动作只执行一次,不同行之间不合并。改动了几行,流程大体上就按行各执行一次。
该机制由系统自动处理,不需要额外配置。
5. 何时使用异步
| 情形 | 建议 |
|---|---|
| 后续步骤不依赖该步结果,且该步较耗时(如打印、发送提示) | 可设为异步,减少等待 |
| 后续步骤需要用到该步的数据或结果(如先取数再用取到的值判断条件) | 必须保持同步,否则下一步可能取不到值 |
拿不准时保持默认的同步。确认流程功能正确后,再挑选不影响其他步骤的动作单独调为异步。
6. 常见问题
| 问题 | 说明 |
|---|---|
| 两个动作看似同时发生,顺序混乱 | 检查是否有一个被配置为异步。存在先后依赖的两步应都保持同步 |
| 改了多个字段但流程执行了多次 | 改动分布在明细表多行时属正常(按行分别触发)。若都在主表同一条记录上却执行多次,说明这些修改未落在同一次批量操作的边界内 |