crm dynamics 365中的moveNext

时间:2017-05-21 14:13:58

标签: javascript dynamics-crm crm

我正在使用crm dynamics 365 on-permises

我有BPF(业务流程)

我希望使用javascript前进到最后一个阶段,但它只使用此代码移动一个阶段:

display: inline-block

3 个答案:

答案 0 :(得分:1)

moveNext()是异步的,因此您必须为其提供回调函数来评估其结果:

Xrm.Page.data.process.moveNext(callbackFunction);

来自Microsoft documentation

  

备注:操作完成时要调用的可选函数。此回调函数将传递以下字符串值之一,以指示操作是否成功。

     
      
  • 成功:操作成功。
  •   
  • crossEntity:下一阶段是针对不同的实体。
  •   
  • end:活动阶段是活动路径的最后一个阶段。
  •   
  • 无效:操作失败,因为所选阶段与活动阶段不同。
  •   
  • dirtyForm:如果未保存页面中的数据,将返回此值。
  •   

答案 1 :(得分:0)

我们可以通过以下两种方式实现这一目标:

1.如果您知道最后一个阶段,请在条件检查点的JS中使用以下方法设置它

Xrm.Page.data.process.setActiveStage(stageId, callbackFunction);

2.或者使用addOnStageSelected方法添加自己的处理程序&调用以下方法调用子程序直到达到所需的阶段

Xrm.Page.data.process.addOnStageSelected(handler);

答案 2 :(得分:0)

当用户在我的BPF中做出决定时,例如拒绝请求...他们从选项集中选择“拒绝”,然后我在BPF实体上使用OOTB工作流程来设置活动阶段。

然后,工作流程通过将刷新布尔值(两个选项字段)设置为true来启动“硬刷新”表单的脚本。

该脚本包含对以下内容的调用:

Xrm.Utility.openEntityForm(Xrm.Page.data.entity.getEntityName(), Xrm.Page.data.entity.getId()) 

,并在重新加载表单后为用户设置活动阶段。即使您使用JavaScript来设置活动阶段,也不会显示该动作,直到刷新表单。通过这种方式,您可以自动执行刷新过程,并立即获得用户和PM想要的满足。

我实际上在1500ms setTimeout()函数上调用了openEntityForm。希望对您有所帮助,将用户重定向到所需的BPF阶段对我的需求大有好处。