问题描述
- 任务 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
被呈现 -
Object
和ObjectID
参数告诉qbo3
在与当前任务相同的父对象上呈现任务 - 使用花括号
{}
告诉setReferrer
用当前任务中的匹配值替换表达式(例如,Task A
和Task B
应该具有相同的 {{1} } 和Object
- 因为此数据被传递到
ObjectID
,所以大括号必须加倍:XSLT
以便{{}}
不会试图解释它们 - 因为此数据正在传递到
XSLT
,所以XSLT
必须符合&
;因此使用XML
- 因为此数据被传递到