Skip to content
v1.0当前版本
文档版本当前使用指南

当前仅提供 1.0 使用指南

设计计算、校验、联动与自动动作 ​

本章目标:把适合自动完成的业务规则设计成可理解、可测试的动作,同时知道哪些决定不应被盲目自动化。

1. 自动化的目标不是“尽量不让人参与” ​

适合自动化的工作通常具备以下特点:

  • 规则清楚;
  • 输入可获得;
  • 结果可验证;
  • 重复频繁;
  • 人工处理容易遗漏或算错。

例如:

  • 数量 × 单价得到行金额;
  • 汇总所有行金额;
  • 选择物品后带出规格;
  • 提交前检查必填内容;
  • 审批通过后通知行政。

不适合直接自动化的工作:

  • 规则仍在争议中;
  • 需要综合经验判断;
  • 错误后果很高且没有人工复核;
  • 缺少可靠输入;
  • 异常占比很高。

2. 区分四种常见设计手段 ​

2.1 默认值 ​

新建时预先填入常见内容,例如申请日期默认当天。

2.2 计算 ​

根据当前数据持续得到一个结果,例如行金额和总金额。

2.3 校验 ​

判断当前输入是否允许保存或进入下一阶段,例如数量必须大于零。

2.4 动作 ​

在某个事件发生时执行一组操作,例如点击“选择物品”后带出规格和预计价格,再重新计算金额。

选择最简单、最贴合业务含义的方式。简单的金额计算不需要设计成复杂动作流;需要多步查询、判断和反馈时,才适合动作。

3. 用“事件—条件—动作—结果”描述自动化 ​

每条动作设计都写四部分:

部分采购案例
事件用户修改明细数量或预计单价
条件数量和单价都有有效数字
动作重新计算当前行金额,再汇总申请总额
结果页面显示新金额;流程判断使用最新总额

还要补充失败处理:

如果数量或单价无效,不计算新金额,并在对应位置提示原因。

4. 设计触发时机 ​

常见时机:

新建时 ​

适合默认值、初始化和首次带出。

字段变化时 ​

适合联动、即时计算和输入提示。

用户点击按钮时 ​

适合明确由用户发起、可能需要确认的操作。

保存前 ​

适合影响数据完整性的最终检查。

保存后 ​

适合依赖“已经保存成功”这一事实的后续处理。

进入查看或修改时 ​

适合根据当前状态准备展示,但不要无故修改业务内容。

触发时机决定用户体验和业务正确性。需要保存成功后才成立的事情,不能提前在保存前宣布完成。

5. 计算规则要写清精度和顺序 ​

采购金额示例:

  1. 行金额 = 数量 × 预计单价;
  2. 每行金额保留两位小数;
  3. 总金额 = 所有有效行金额之和;
  4. 删除明细行后重新汇总;
  5. 金额变化后,提交时按最新总金额选择审批路线;
  6. 总金额不允许人工修改。

必须确认:

  • 是先对每行取两位小数再汇总,还是汇总后统一取两位;
  • 空行是否参与;
  • 负数是否允许;
  • 修改审批中的金额是否需要重新提交。

这些看似细小,却会直接影响审批和统计。

6. 数据带出和查询要考虑“没有、一个、多个” ​

例如按物品名称查询规格和参考价格:

  • 没有匹配:提示用户没有找到,不要静默填空;
  • 正好一个:可以带出;
  • 多个匹配:让用户选择,不要随意取第一条;
  • 来源信息缺失:说明缺失项,并决定是否允许继续;
  • 来源后来变化:已保存申请是否保留当时值,需要业务确认。

任何“自动取数”都应设计这三种数量结果。

7. 自动动作必须可解释 ​

用户应该知道:

  • 为什么这个值发生变化;
  • 信息来自哪里;
  • 是否可以修改;
  • 何时会重新计算;
  • 操作失败后发生了什么。

例如物品价格自动带出后,可以清楚标识为参考价格;若允许人工调整,应说明调整原因是否必填。

黑盒式自动化会让用户不信任应用,并在外部重新计算。

8. 防止重复执行 ​

用户可能因为页面没有及时反馈而连续点击两次,或者在失败后重试。

业务设计应明确:

  • 重复点击“提交”不能创建两个审批;
  • 重复点击“生成编号”不能得到两个正式编号;
  • 同一通知是否允许重复发送;
  • 同一外部业务是否允许重复创建;
  • 重试时如何识别已经成功的结果。

可以用业务语言写成不变量:

同一项采购申请在一次提交过程中,只能形成一条有效审批路线。

9. 设计执行顺序 ​

采购提交前可能依次需要:

  1. 检查明细是否完整;
  2. 重新计算行金额;
  3. 汇总总金额;
  4. 检查高金额说明;
  5. 保存申请;
  6. 提交审批;
  7. 告知用户提交结果。

顺序错误可能导致:

  • 用旧金额选择流程;
  • 保存失败却已经发出通知;
  • 审批已经创建,申请内容却没有保存;
  • 用户看到成功,实际只完成了一半。

动作设计器的执行顺序和分支操作可参考动作系统概述、触发器与事件与执行顺序。

10. 设计失败和补救 ​

每个重要动作问:

  • 哪一步可能失败;
  • 失败后已经完成了什么;
  • 是否可以安全重试;
  • 用户看到什么;
  • 谁可以处理;
  • 是否需要记录供排查。

示例:

失败用户提示业务状态下一步
明细不完整指出具体行和字段保持草稿修改后重提
找不到审批人说明无法提交保持草稿联系应用管理员
通知发送失败不把审批说成失败已进入审批系统重试或人工查看待办
带出价格失败说明未找到价格表单仍可编辑人工填写或更换物品

不同失败不能都显示同一个“操作失败”。

11. 动作设计表 ​

编号名称事件条件动作成功结果失败处理规则来源
A-01计算行金额数量/单价变化两者有效数量×单价显示两位小数金额指出无效输入BR-01
A-02汇总总额行金额或行变化有有效明细汇总金额更新总额无明细时为空BR-02
A-03提交前检查点击提交当前为草稿/退回检查明细和说明允许继续提交聚合显示问题BR-03~05

12. 逐条测试动作 ​

每条动作至少测试:

  • 正常输入;
  • 空值;
  • 边界值;
  • 错误输入;
  • 多行变化;
  • 删除和重新添加;
  • 连续触发;
  • 重复点击;
  • 保存后重新打开;
  • 不同业务状态。

不要只看页面上的临时变化,还要确认保存和重新打开后的业务结果。

13. 常见错误 ​

  • 为了炫技把简单计算做成复杂动作;
  • 事件发生时机选择错误;
  • 自动带出只考虑“找到一条”;
  • 结果变化但用户不知道原因;
  • 多个动作修改同一字段,优先级不清;
  • 保存失败后仍然发送成功通知;
  • 重复点击产生重复业务结果;
  • 自动化了仍需人工判断的高风险决定。

14. 本章完成标准 ​

  • [ ] 每条自动化都有明确事件、条件、动作和结果;
  • [ ] 已区分默认、计算、校验和动作;
  • [ ] 计算精度、顺序和空值含义明确;
  • [ ] 查询带出考虑了零条、一条和多条结果;
  • [ ] 重复执行不会产生重复业务结果;
  • [ ] 重要失败有可理解的提示和补救方式;
  • [ ] 每条动作都能由业务场景验证。

下一步 ​

动作处理单张表单内部及其周边的自动工作;需要多人依次作出业务决定时,应设计流程。下一章学习设计真正可运行的审批流程。

使用者 · 应用开发者 · 实例管理者