qbo3 任务向导

问题描述

我们有一个 QBO 工作流程,包括以下步骤:

  • 任务 A
  • 等一天
  • 任务 B

在大多数情况下,用户会:

  • 从他们的工作清单开始
  • 导航到任务 A
  • 完成后返回到他们的工作清单
  • 第二天,任务 B 应该出现在他们的工作清单上

在少数情况下,由任务 A 中存在的字段决定,流程应该是:

  • 从他们的工作清单开始
  • 导航到任务 A
  • 完成后:
    • 如果 Foo = 'Bar',则移至相同父记录的任务 B,
    • 否则返回到他们的工作清单

如何在 qbo3 工作流程中实现这一目标?

解决方法

按照设计,任务将在保存(或取消)时将用户返回到引用页面。

要呈现不同的页面,请使用 javascript 将引用页面设置为不同的值。

来自任务 GUI 设计器:

  • 点击 Foo 字段
  • 在 Javascript > onblur 字段中,输入类似于以下内容的代码(不需要回车;此处仅用于可读性):
if (this.value == 'Bar') 
  qbo3.getObject(this).setReferrer('api/importform/summary?Object={{Object}}
&ObjectID={{ObjectID}}
&Method=RenderEdit
&Template=Task B',this);
  • 点击Save

关于上面的 javascript 代码段的一些注意事项/问题:

  • qbo3.getObject(this).setReferrer(...) 更改 document.referrer
  • 的值
  • 传递的 URL 是一个相对 URL,并导致 Task 被呈现
  • ObjectObjectID 参数告诉 qbo3 在与当前任务相同的父对象上呈现任务
  • 使用花括号 {} 告诉 setReferrer 用当前任务中的匹配值替换表达式(例如,Task ATask B 应该具有相同的 {{1} } 和 Object
    • 因为此数据被传递到 ObjectID,所以大括号必须加倍:XSLT 以便 {{}} 不会试图解释它们
    • 因为此数据正在传递到 XSLT,所以 XSLT 必须符合 &;因此使用 XML