D365插件:如何高效获取活动业务流程流的UniqueName?
优化业务流程流UniqueName获取方式
你可以通过扩展RetrieveProcessInstancesRequest的ColumnSet参数,在单次组织服务调用中同时获取流程实例及其关联workflow的uniquename,无需发起第二次Retrieve请求,具体实现如下:
修改后的代码示例
RetrieveProcessInstancesRequest processRequest = new RetrieveProcessInstancesRequest() { EntityId = targetRef.Id, EntityLogicalName = targetRef.LogicalName, // 指定要获取的字段,包含关联workflow的uniquename ColumnSet = new ColumnSet("processid", "processid.uniquename") }; RetrieveProcessInstancesResponse processResponse = (RetrieveProcessInstancesResponse)service.Execute(processRequest); Entity activeProcess = processResponse.Processes[0]; // 直接从关联的processid引用中提取uniquename string uniqueName = activeProcess.GetAttributeValue<EntityReference>("processid").GetAttributeValue<string>("uniquename");
原理说明
默认情况下,RetrieveProcessInstancesRequest仅返回流程实例的核心字段。通过在ColumnSet中使用关联属性路径processid.uniquename,组织服务会自动关联查询对应的workflow实体,并返回指定的uniquename属性,从而将两次服务调用合并为一次,提升执行效率。
内容的提问来源于stack exchange,提问作者Zach Mast
相关产品推荐
相关产品推荐

