编写业务流程脚本

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

Microsoft Dynamics 365(在线或本地) 可以使您能够使用客户端对象与您脚本中的业务流程进行交互。 扩展 Xrm.Page.data 命名空间,以根据 Xrm.Page.data.process 包含方法。 扩展 Xrm.Page.ui 命名空间,以根据 Xrm.Page.ui.process 包含方法。

在本主题中

业务流程结构。

采用自动化的操作

业务流程事件

业务流程结构。

业务流程包含一系列阶段,每个阶段包含大量步骤。 只有一阶段为活动阶段。 当完成每个阶段中的必要步骤时,流程可以移动到下一阶段,并变为活动阶段。 可以根据业务流程中的条件定义下一步为哪个阶段,如以下关系图所示。

业务流程对象

阶段可以与特定相关实体关联,因此业务流程可以跨多个实体。 流程业务保持相同,并会引导用户获得所需结论。

从适用于 Dynamics 365 的 2016 年 12 月更新(联机和本地) 开始,可将不同业务流程定义与不同角色关联,并且可以同时运行针对同一条实体记录的多个实例。 用户可以在并行业务流程实例之间切换,并在流程的当前阶段恢复工作。

详细信息:TechNet:业务流程

采用自动化的操作

通常,沿业务流程的进程取决于用户输入。 作为开发人员,您可以在窗体脚本以编程方式执行相同操作。

  • 当有多个流程可用于实体时,更改此流程。
    使用 Xrm.Page.data.process.getEnabledProcesses 检索用户可以为实体选择的启用流程相关信息。 然后使用 Xrm.Page.data.process.setActiveProcess 将启用的流程实例之一设置为活动实例,新建流程实例。

  • 更改实体记录的流程实例
    使用 getProcessInstances 检索有关某条实体记录所有流程实例的信息,并使用 setActiveProcessInstance 将流程实例设置为活动实例。

  • 当完成所有必要步骤时,移动到下一阶段以使其变为当前活动阶段。
    使用Xrm.Page.data.process.moveNext

  • 移至上一阶段并使其为当前活动阶段。
    使用Xrm.Page.data.process.movePrevious

  • 选择某个阶段,以显示该阶段中步骤的状态。
    使用 Xrm.Page.data.process.getActivePath 检索已完成阶段、当前活动阶段和当前活动阶段中有效阶段的相关信息。 检查阶段中包含的步骤,并比较相应的窗体属性值,以确定是否完成。

  • 完成一个步骤
    当在窗体中输入相应的数据后,完成步骤。 您可以通过使用步骤 getAttribute 方法来确定属性。 这将返回属性的逻辑名称。 使用 Xrm.Page.getAttributeXrm.Page.data.entity.attributes 集合检索属性,然后使用属性 6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_setValue 方法设置值。

  • 检测是否需要此步骤
    使用步骤 isRequired 方法确定是否为业务流程的必需步骤。

  • 展开或折叠业务流程控件
    使用Xrm.Page.ui.process.setDisplayState

  • 跳过有效的已完成阶段。
    使用 Xrm.Page.data.process.setActiveStage 设置当前实体的有效已完成阶段之一。

开发人员还可以执行一些用户无法执行的操作。

  • 隐藏流程控件
    使用 Xrm.Page.ui.process.setVisible,您可以控制是否显示业务流程控件。

  • 查询包括阶段的流程定义当前不可见
    使用 Xrm.Page.data.process.getActiveProcess 查询业务流程的定义,包括由于流程中的分支逻辑而可能不可见的阶段。

业务流程事件

您可以使用业务流程与窗体提供的所有事件交互,但是,以下新事件仅允许您针对业务流程控件执行基于事件的代码。

  • 当更改业务流程的活动阶段时 (d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageChange),或选定某个阶段时 (d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageSelected),您可以执行代码。

  • 可在业务流程实例的状态改变时执行代码 (d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnProcessStatusChange)。 业务流程实例可以为以下状态之一:ActiveFinishedAborted

两新事件均不提供用户界面来注册您的事件处理程序。 在窗体 OnLoad 事件中,您必须使用提供的方法添加或删除这些事件的处理程序。详细信息:f451f339-bcee-4260-9904-abc8c0efa153#BKMK_BPFControl

另请参阅

使用 Xrm.Page 对象模型
Xrm.Page.data.process(客户端引用)
示例:Xrm.Page.data.process.getEnabledProcesses
Sample: Xrm.Page.data.process.getActivePath
f451f339-bcee-4260-9904-abc8c0efa153#BKMK_BPFControl
TechNet:业务流程

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权