如何在Dynamic 365 Online中触发OnStageChange事件时判断用户是否正在转向业务流程的下一个或上一个阶段?

问题描述:

我正在编写一个JS脚本来拦截并执行一些额外的验证,当用户移动到动态365在线的业务流程的下一个阶段。如何在Dynamic 365 Online中触发OnStageChange事件时判断用户是否正在转向业务流程的下一个或上一个阶段?

我将我的功能绑定到Dynamic 365的OnStageChange事件,但该事件不仅在用户移动到下一个阶段时触发,而且还在他移回到前一个阶段时触发。

是否有任何方式来判断用户是否正在转移到下一个或前一个阶段?

+0

你能告诉我们你的代码吗? – OneNeptune

您需要将OnStageChange的代码更新为getEventArgs,这将允许您查看getDirection是“下一个”还是“上一个”。

没有看到您的代码,我无法提供具体的实施建议,但是这会回答您的问题。

下面是如何处理`OnStageChange”事件的联系做进一步的了解:

https://msdn.microsoft.com/en-us/library/gg334481.aspx#BKMK_OnStageChange

+0

非常感谢。我没有检查该文档,我不相信我错过了关于getEventArgs的部分。 – tsukumogami

+0

@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事件中,并且选中“传递执行上下文作为第一个参数”选项。