如何在Dynamic 365 Online中触发OnStageChange事件时判断用户是否正在转向业务流程的下一个或上一个阶段?
我正在编写一个JS脚本来拦截并执行一些额外的验证,当用户移动到动态365在线的业务流程的下一个阶段。如何在Dynamic 365 Online中触发OnStageChange事件时判断用户是否正在转向业务流程的下一个或上一个阶段?
我将我的功能绑定到Dynamic 365的OnStageChange事件,但该事件不仅在用户移动到下一个阶段时触发,而且还在他移回到前一个阶段时触发。
是否有任何方式来判断用户是否正在转移到下一个或前一个阶段?
您需要将OnStageChange
的代码更新为getEventArgs
,这将允许您查看getDirection
是“下一个”还是“上一个”。
没有看到您的代码,我无法提供具体的实施建议,但是这会回答您的问题。
下面是如何处理`OnStageChange”事件的联系做进一步的了解:
https://msdn.microsoft.com/en-us/library/gg334481.aspx#BKMK_OnStageChange
非常感谢。我没有检查该文档,我不相信我错过了关于getEventArgs的部分。 – tsukumogami
@tsukumogami如果这是正确的答案,请标记它,以便将来有此问题的人能够找到解决方案。你不是第一个遇到这个问题的人,也不会是最后一个!很高兴我能帮上忙! – OneNeptune
感谢@OneNeptune,我设法解决我的问题如下。
const NEXT_STAGE_OPTION = "Next"
function onAccountFormLoad (context) {
context.getFormContext().data.process.addOnStageChange(checkMoveStage);
}
function checkMoveStage(context) {
var targetStageName = context.getFormContext().data.process.getActiveStage().getName();
var direction = context.getEventArgs().getDirection();
console.log("Move to " + direction + " stage:" + targetStageName);
if (direction === NEXT_STAGE_OPTION) {
// Perform necessary validation when moving to next stage.
}
}
函数onFormLoad被添加到窗体的onLoad事件中,并且选中“传递执行上下文作为第一个参数”选项。
你能告诉我们你的代码吗? – OneNeptune