我们在CRM 2015中有一定的要求,我们需要限制非S / S管理员用户的业务流程中的向后移动。我迭代了Client API(包括升级1的脚本),但我没有找到任何API来实现使用任何公开的方法。所以,最后我通过劫持业务流程的向后移动并提示用户这是非S / S管理员用户的限制移动来为此编写自定义代码。但是,这是一个不受支持的更改,我发现只要DOM ID相同,这就不会成为问题了(因为我发现2013年,2015年和2015年BPF的Rollup1的DOM ID相同)。
function restrictBPFPreviousMove() {
var originalPreviousStageHandler = $("#stageBackActionContainer").data("events")["click"][0].handler;
$("#stageBackActionContainer").unbind("click");
$("#stageBackActionContainer").click(function (e) {
alert("Restricted Back Move!");
});
}
但是,我想知道这种方法是否有任何替代方案(支持)?
答案 0 :(得分:4)
CRM 2015 has events for stage selection and change that can be handled.
业务流程控制事件
Microsoft Dynamics CRM 2015和 Microsoft Dynamics CRM Online 2015 Update为用户提供了两个事件 与业务流程流控制的交互。 OnStageChange 在舞台更改时发生。更多信息:OnStageChange事件。 OnStageSelected在选择阶段时发生。更多信息: OnStageSelected事件。没有用于为这些注册脚本的UI 事件。在表单中注册的函数中使用以下方法 OnLoad事件,用于注册这些事件的函数。
Xrm.Page.data.process.addOnStageChange
Xrm.Page.data.process.addOnStageSelected
Xrm.Page.data.process.removeOnStageChange
Xrm.Page.data.process.removeOnStageSelected
您仍然需要手动检查用户的角色(检索systemuser
,检索role
,混合和匹配)
答案 1 :(得分:0)
首先使用guid
获取所有阶段Xrm.Page.data.process.getActiveProcess().getStages()
并将其存储为{p> 1
var
接下来,使用var stage1= "efe2a761-9f5c-492c-9843-54decc2ab76a";
var stage2= "dddddd34-9f5c-492c-9843-54decc2ab76a";
var stage3= "abcdef12-9f5c-492c-9843-54decc2ab76a";
添加一个Event Handler
来检查活动阶段Xrm.Page.data.process.addOnStageChange()
为
guid
然后您尝试使用以下任一方法移动舞台
var currentStageId = Xrm.Page.data.process.getActiveStage().getId();