发布日期: 2017年1月
适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online
Xrm.Page.data.process 命名空间可以提供窗体中与业务流程数据交互的事件、方法和对象。
有关与窗体中业务流程交互的方法,请参阅 Xrm.Page.ui.process(客户端引用)。
Xrm.Page.data.process 方法
- ActiveProcess 方法 
 使用 getActiveProcess 检索有关活动流程的信息,并使用 setActiveProcess 将不同的流程设置为活动流程。
- ProcessInstance 方法 
 使用 getProcessInstances 检索有关某条实体记录所有流程实例的信息,并使用 setActiveProcessInstance 将流程实例设置为活动实例。
- ActiveStage 方法 
 使用 getActiveStage 检索有关活动阶段的信息,并使用 setActiveStage 将完成的阶段设置为活动阶段。- 可以使用 setActiveStage 转到不同实体中的阶段。 
- getActivePath 
 使用此方法在带有方法的活动路径中警告当前阶段的集合,以与业务流程控件中显示的阶段进行交互。- 根据记录中的分支规则和当前数据,活动路径代表流程控件中当前呈现的阶段。 
- getEnabledProcesses 
 对于实体,使用此方法用户可以切换到异步检索已启用的业务流程。
- getSelectedStage 
 使用此方法可访问当前选择的阶段。
- 管理事件处理程序的方法 
 使用 addOnStageChange、removeOnStageChange、addOnStageSelected、removeOnStageSelected 、addOnProcessStatusChange 和 removeOnProcessStatusChange 方法添加或删除业务流程控件的事件处理程序。
- 导航方法 
 使用 moveNext 移至下一阶段,并使用 movePrevious 移至上一阶段。- 可以使用 movePrevious 转到不同实体中的上一个阶段。 
- 流程方法 
 使用流程方法访问流程的属性。
- 实例方法 
 使用流程实例方法访问当前流程实例的属性。
- 阶段方法 
 使用阶段方法访问业务流程中的阶段属性。
- 步骤方法 
 使用阶段方法访问业务流程中阶段内的步骤属性。
ActiveProcess 方法
使用 getActiveProcess 检索有关活动流程的信息,并使用 setActiveProcess 将不同的流程设置为活动流程。
getActiveProcess
返回表示活动流程的 Process 对象。
var activeProcess = Xrm.Page.data.process.getActiveProcess();
- 返回值 
 类型: 流程- 备注: 参阅流程方法 的方法访问返回流程的属性。 
setActiveProcess
将 Process 设置为活动流程。
如果存在流程的活动实例,将使用实例 ID 加载实体记录。 如果不存在当前流程的活动实例,将创建一个新流程实例,并使用实例 ID 加载实体记录。 如果存在当前流程的多个实例,将按照默认逻辑使用活动流程的第一个实例(这是每个用户最近使用的流程实例)加载记录。
Xrm.Page.data.process.setActiveProcess(processId, callbackFunction);
参数:
- processId 
 类型:String- 备注: 进行活动流程的流程 Id。 
- callbackFunction 
 类型:Function- 备注: 完成操作时调用的函数。 回调函数传递下列字符串值之一以指示操作是否成功。 - 值 - 说明 - 成功 - 操作成功。 - 无效 - processId 无效或流程未启用。 
ProcessInstance 方法
使用 getProcessInstances 检索有关某条实体记录所有流程实例的信息,并使用 setActiveProcessInstance 将流程实例设置为活动实例。
备注
适用于 Dynamics 365 的 2016 年 12 月更新(联机和本地) 中引入了这些方法。
getProcessInstances
返回调用用户可访问的实体记录的所有流程实例。
Xrm.Page.data.process.getProcessInstances(callbackFunction(object));
- 参数 
 类型:Function- 备注: 将为回调函数传递一个带以下属性且这些属性的相应值充当“键:值”对的对象。 - CreatedOn 
- ProcessDefinitionID 
- ProcessDefinitionName 
- ProcessInstanceID 
- ProcessInstanceName 
- StatusCodeName 
 - 根据用户的特权筛选流程实例。 
setActiveProcessInstance
将流程实例设置为活动实例。
Xrm.Page.data.process.setActiveProcessInstance(processInstanceId, callbackFunction);
参数:
- processInstanceId 
 类型:String- 备注: 要设置为活动实例的流程实例的 ID。 
- callbackFunction 
 类型:Function- 备注: 完成操作时调用的函数。 回调函数传递下列字符串值之一以指示操作是否成功。 - 值 - 说明 - 成功 - 操作成功。 - 无效 - processInstanceId 无效或流程未启用。 
ActiveStage 方法
使用 getActiveStage 检索有关活动阶段的信息,并使用 setActiveStage 将不同阶段设置为活动阶段。
getActiveStage
返回表示活动阶段的 Stage 对象。
var activeStage = Xrm.Page.data.process.getActiveStage();
- 返回值 
 类型: 阶段- 备注: 参阅阶段方法 的方法访问返回阶段的属性。 
setActiveStage
将完成的阶段设置为活动阶段。
备注
在 Microsoft Dynamics CRM Online 2015 更新 1 之后,您可以使用此方法设置不同实体中的阶段。
使用此方法,仅可以设置该实体的完成阶段。
Xrm.Page.data.process.setActiveStage(stageId, callbackFunction);
参数:
- stageId 
 类型:String- 注解: 使阶段成为活动阶段的实体完成阶段的 ID 设置使用阶段。 
- callbackFunction 
 类型:Function- 备注: 完成操作时调用的可选函数。 - 若操作成功完成,回调函数传递“success”的字符串值。 - 若 stageId 表示的阶段不可用,则该阶段将不会变为活动状态并回调函数传递字符串值显示原因。 必须对下表中列出的值进行返回。 - 值 - 原因 - invalid - 此值返回有三个原因: - stageId 参数是不存在阶段的 ID 值。 
- 可用阶段不是所选阶段 
- 未保存记录。 
 - unreachable - 阶段位于不同的路径。 - dirtyForm - 如果页面中的数据未保存,将返回此值。 - 重要 - 只有当所选阶段和可用阶段相同时可用此方法。 在您的代码从d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageChange启动中,将选择当前阶段。 在您的代码从 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageSelected中启动时,应使用 Xrm.Page.data.process.getActiveStage 验证所选阶段也是可用阶段。 对于其他表单事件,不可能确定当前选择了哪个阶段。 为达最佳效果,此方法只用于在OnStageChange和 OnStageSelected事件启动的函数调用的代码。 
getActivePath
使用此方法在带有方法的活动路径中警告当前阶段的集合,以与业务流程控件中显示的阶段进行交互。
根据记录中的分支规则和当前数据,活动路径代表流程控件中当前呈现的阶段。
var stageCollection = Xrm.Page.data.process.getActivePath();
示例:
有关使用此方法的示例,请参阅 Sample: Xrm.Page.data.process.getActivePath。
- 返回值 
 类型: 集合- Remarks: 根据分支规则中满足的条件,集合所有已完成的阶段、当前活动阶段和将来阶段的可预测集。 这可能是与 Xrm.Page.data.process.getActiveProcess 一起返回的阶段子集,因为根据流程中出现的分支,这将仅包含表示当前阶段的有效转换。 
getEnabledProcesses
对于实体,使用此方法用户可以切换到异步检索已启用的业务流程。
Xrm.Page.data.process.getEnabledProcesses(callbackFunction(enabledProcesses));
- 参数 
 类型:Function- 备注: 回调函数必须接受包含某一对象(此对象词典属性中的属性名称为业务流程的 Id,且属性值为业务流程的名称)的参数。 - 根据用户的特权筛选已启用的流程。 已启用流程列表与用户手动更改流程时在 UI 中看到的列表相同。 - 示例: - 有关使用此方法的示例,请参阅 示例:Xrm.Page.data.process.getEnabledProcesses。 
getSelectedStage
使用此方法可以获取当前选择的阶段。
Xrm.Page.data.process.getSelectedStage()
- 返回值 
 类型: 阶段- 当前所选阶段。 
- 备注
 有关访问返回阶段属性的方法,请参阅 阶段方法。
管理事件处理程序的方法
使用这些方法添加或删除业务流程控件的事件处理程序。
addOnStageChange
使用此方法将函数添加为 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageChange 的事件处理程序,以便更改业务流程阶段时将被调用。
Xrm.Page.data.process.addOnStageChange(handler);
- 参数 
 类型: 函数引用- Remarks: 函数将添加到事件处理程序管道的底部。 执行上下文是传递到事件处理程序后自动设置的第一参数。 有关更多信息,请参阅 执行上下文(客户端引用)。 - 如果您稍后想删除事件处理程序,则应使用已命名函数的引用(而非匿名函数)。 
removeOnStageChange
使用此方法删除作为 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageChange 的事件处理程序的函数。
Xrm.Page.data.process.removeOnStageChange(handler);
- 参数 
 类型: 函数引用- Remarks: 如果使用 addOnStageChange 方法设置匿名函数,则使用此方法将无法删除该函数。 
addOnStageSelected
使用此方法将函数添加为 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageSelected 的事件处理程序,以便选定业务流程阶段时将被调用。
Xrm.Page.data.process.addOnStageSelected(handler);
- 参数 
 类型: 函数引用- Remarks: 函数将添加到事件处理程序管道的底部。 执行上下文是传递到事件处理程序后自动设置的第一参数。 有关更多信息,请参阅 执行上下文(客户端引用)。 - 如果您稍后想删除事件处理程序,则应使用已命名函数的引用(而非匿名函数)。 
removeOnStageSelected
使用此方法删除作为 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageSelected 的事件处理程序的函数。
Xrm.Page.data.process.removeOnStageSelected(function reference);
- 参数 
 类型: 函数引用- Remarks: 如果使用 addOnStageSelected 方法设置匿名函数,则使用此方法将无法删除该函数。 
addOnProcessStatusChange
使用此方法将函数添加为 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnProcessStatusChange 事件的事件处理程序,以便更改业务流程状态时将被调用。
Xrm.Page.data.process.addOnProcessStatusChange(handler);
- 参数 
 类型: 函数引用- Remarks: 函数将添加到事件处理程序管道的底部。 执行上下文是传递到事件处理程序后自动设置的第一参数。 有关更多信息,请参阅 执行上下文(客户端引用)。 - 如果您稍后想删除事件处理程序,则应使用已命名函数的引用(而非匿名函数)。 - 适用于 Dynamics 365 的 2016 年 12 月更新(联机和本地) 中引入了此方法。 
removeOnProcessStatusChange
使用此方法删除作为 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnProcessStatusChange 事件的事件处理程序的函数。
Xrm.Page.data.process.removeOnProcessStatusChange(handler);
- 参数 
 类型: 函数引用- Remarks: 如果使用 addOnProcessStatusChange 方法设置匿名函数,则使用此方法将无法删除该函数。 - 适用于 Dynamics 365 的 2016 年 12 月更新(联机和本地) 中引入了此方法。 
导航方法
使用 moveNext 移至下一阶段,并使用 movePrevious 移至上一阶段。 这两种方法均将导致 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageChange 发生。
moveNext
进展到下一阶段。
Xrm.Page.data.process.moveNext(callbackFunction);
- 参数 
 类型: 函数- 备注: 完成操作时调用的可选函数。 回调函数传递下列字符串值之一以指示操作是否成功。 - 值 - 说明 - 成功 - 操作成功。 - crossEntity - 下一阶段用于其他实体。 - 结束 - 可用阶段是可用路径的最后阶段。 - 无效 - 由于所选阶段与可用阶段不同,因此操作失败。 - dirtyForm - 如果页面中的数据未保存,将返回此值。 
重要
只有当所选阶段和可用阶段相同时可用此方法。 在您的代码从d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageChange启动中,将选择当前阶段。 在您的代码从 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageSelected中启动时,应使用 Xrm.Page.data.process.getActiveStage 验证所选阶段也是可用阶段。 对于其他表单事件,不可能确定当前选择了哪个阶段。 为达最佳效果,此方法只用于在OnStageChange和 OnStageSelected事件启动的函数调用的代码。
movePrevious
移到上一阶段。 可以使用 movePrevious 转到不同实体中的上一个阶段。
Xrm.Page.data.process.movePrevious(callbackFunction);
- 参数 
 类型: 函数- 备注: 完成操作时调用的可选函数。 回调函数传递下列字符串值之一以指示操作是否成功。 - 值 - 说明 - 成功 - 操作成功。 - crossEntity - 前一阶段用于其他实体。 - 开始 - 可用阶段是可用路径的第一阶段。 - 无效 - 由于所选阶段与可用阶段不同,因此操作失败。 - dirtyForm - 如果页面中的数据未保存,将返回此值。 
重要
只有当所选阶段和可用阶段相同时可用此方法。 在您的代码从d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageChange启动中,将选择当前阶段。 在您的代码从 d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageSelected中启动时,应使用 Xrm.Page.data.process.getActiveStage 验证所选阶段也是可用阶段。 对于其他表单事件,不可能确定当前选择了哪个阶段。 为达最佳效果,此方法只用于在OnStageChange和 OnStageSelected事件启动的函数调用的代码。
备注
可以使用此方法返回到不同实体的阶段。
流程方法
流程包含业务流程的数据。 使用此方法访问流程的属性。
getId
返回流程的唯一标识符
var processId = procObj.getId();
- 返回值 
 类型:String- 备注: 表示 GUID 值字符串表示形式的值。 
getName
返回流程的名称
var processName = procObj.getName();
- 返回值
 类型:String
getStages
返回流程中阶段的集合
var stageCollection = procObj.getStages();
- 返回值 
 类型: 集合- 有关访问返回阶段属性的方法,请参阅 阶段方法。 
isRendered
如果呈现流程,则返回 true,反之,则返回 false
var processRendered = procObj.isRendered();
- 返回值 
 类型:Boolean- 备注: 如果已升级所用窗体的 Microsoft Dynamics 365 早期版本,但尚未升级到使用新窗体,则无法呈现业务流程控件。详细信息:TechNet:更新您的表单为 Microsoft Dynamics CRM 2013 或 Microsoft Dynamics CRM Online 秋天 '13 
实例方法
流程实例中包含业务流程一个实例的数据。 使用此方法访问流程实例的属性。
备注
适用于 Dynamics 365 的 2016 年 12 月更新(联机和本地) 中引入了这些实例方法。
getInstanceId
返回流程实例的唯一标识符。
Xrm.Page.data.process.getInstanceId();
- 返回值 
 类型:String- 备注: 表示 GUID 值字符串表示形式的值。 
getInstanceName
返回流程实例的名称。
Xrm.Page.data.process.getInstanceName();
- 返回值
 类型:String
getStatus
返回流程实例的当前状态。
Xrm.Page.data.process.getStatus();
- 返回值 
 类型:String- 备注: 此方法将返回以下值之一:active、aborted 或 finished。 
setStatus
设置活动流程实例的当前状态。
Xrm.Page.data.process.setStatus(status, callbackFunction);
参数:
- status 
 类型:String- 备注: 值可以是 active、aborted 或 finished。 
- callbackFunction 
 类型:Function- 备注: 完成操作时调用的可选函数。 将为此回调函数传递字符串值形式的新状态。 
阶段方法
阶段包含业务流程中阶段的数据。 使用此方法访问阶段的属性。
getCategory
使用 getValue 方法返回对象,将返回业务流程类别的整数值。
var stageCategoryNumber = stageObj.getCategory().getValue();
- 返回值 
 类型:Number- 备注: 有关可能值的列表,请参阅afe17a4a-fdca-44b4-8c14-a19ba327662e#BKMK_StageCategory。 
getEntityName
返回与阶段关联的实体的逻辑名称。
var stageEntityName = stageObj.getEntityName();
- 返回值
 类型:String
getId
返回阶段的唯一标识符
var stageId = stageObj.getId();
- 返回值
 类型:String
getName
返回阶段的名称
var stageName = stageObj.getName();
- 返回值
 类型:String
getStatus
返回阶段的状态
var stageStatus = stageObj.getStatus();
- 返回值 
 类型:String- 备注: 此方法将返回 active 或 inactive。 
getSteps
返回阶段中步骤的集合。
var stepsCollection = stageObj.getSteps();
- 返回值 
 类型:Array- 有关访问步骤属性值的方法,请参阅 步骤方法。 
步骤方法
阶段包含业务流程中阶段内步骤的数据。 使用此方法访问步骤的属性。
getAttribute
返回与步骤关联的属性的逻辑名称。
var stepAttributeName = stepObj.getAttribute();
- 返回值 
 类型:String- 备注: 某些步骤不包含属性值。 
getName
返回步骤的名称。
var stepName = stepObj.getName();
- 返回值
 类型:String
isRequired
返回业务流程中是否需要此步骤。
var stepIsRequired = stepObj.isRequired();
- 返回值 
 类型:Boolean- 备注: 如果步骤被标记为业务流程编辑器需要,则返回 true;否则,返回 false。 此值与您在Xrm.Page.data.entity 属性 6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_RequiredLevel 方法中可以更改的值之间不存在连接。 
另请参阅
编写业务流程脚本
Xrm.Page.ui.process(客户端引用)
客户端编程引用
脚本即时引用的表单
为 Microsoft Dynamics 365 窗体编写代码
使用 Xrm.Page 对象模型
示例:Xrm.Page.data.process.getEnabledProcesses
Sample: Xrm.Page.data.process.getActivePath
Microsoft Dynamics 365
© 2017 Microsoft。 保留所有权利。 版权