G4.06.2bring subtask results back into the main flow设计研究

子任务的结果需带回主流程

别名: 子任务回传结果 · return value to parent · 选择带回 · picker result

概念解释

人跳出主流程去选一个地址、一张发票、一个权限,做完的那份对象必须出现在原来要填的那一格上,而不是只存在于子任务自己的「已保存」里。把结果带回主流程是一次数据回流:子任务的产出是主任务的输入。人已经回到原位仍看到空槽,会以为没选上,或去子任务的列表里确认是不是另存了一份。

机制

子任务在人的模型里是一次带返回值的调用,不是一次独立提交。地址选择器的语义是「把这个地址交给正在填的订单」,不是「在地址簿里新增一条然后请你自己去订单里再选一次」。若子任务只写自己的存储、不把引用写回主表单的字段,两次提交的世界分裂:地址簿有了,订单没有。主流程校验会报「请填写地址」,人看不到自己刚做完的工作。

回流失败还有格式问题:子任务交出的是完整对象,主槽要的是 id 或格式化字符串;丢了映射,槽里出现 [object Object] 或空。取消必须带回「无变更」,不能把半成品写进主槽,也不能把主槽已有的值清掉。人用「槽里是不是那条」判断子任务成没成功,不看子任务内部的成功 toast。

怎么研究

主表单设一个空槽,子任务里选一条已知对象,完成后只允许看主表单。

  • 自变量:回流方式(写回字段 / 只在子任务保存 / 写回但格式不对)、取消是否动主槽。
  • 因变量:主槽是否出现正确对象、人是否再到子任务里核对、主表单能否凭该值通过校验。
  • 方法论注意点:成功 toast 会让被试报告「完成了」,即使槽是空的。因变量要看槽,不要看口头完成。对照里加一条「子任务里新建对象」:新建必须同时成为主槽的值,不能只出现在对象列表里。

边界

子任务的目的就是独立提交(去另一个模块建一个与当前表无关的项目),主流程不该被写入,这条不成立。只读预览类子任务没有可带回的结果。权限不足导致选中的对象无法被主流程引用时,应带回失败原因并保持空槽,不要写入一个主流程提交时会炸的 id。批量选择若主槽只能持有一个,回流要明确留哪一条,不能静默丢弃。

怎么落地

  • 把子任务做成带返回值的调用:完成时把对象 id 和展示文案发回主槽并触发该槽的校验;取消发回空操作。
  • 主槽立刻显示选中对象的可读名称,不要只改隐藏字段。
  • 子任务内部的「保存到地址簿」可以发生,但不得替代写回主槽。
  • 验证:空槽打开选择器,选一条,完成。槽上能读到那条的名字,主表单可以提交。取消后槽仍空。再测「在选择器里新建一条」:新对象必须出现在槽上,不能只出现在地址列表。

延伸

  • 同组G4.06.1 中途跳出执行子任务后需回到原位 · G4.06.3 多层嵌套任务需要明确的返回栈
  • 相邻H1.04 实时校验的时机 · E2.13 日期选择器 · G4.01 返回栈与返回语义
  • 站内检索picker result · return value · subtask output

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/G4.06.2