我一直在尝试使用CRM SDK检索特定工作流程流程的“必需组件”列表。我可以检索所需的工作流实体,但据我所知,该对象中没有引用所需的组件。
使用与RetrieveRequiredComponentsRequest
相同的id会运行,但会返回EntityCollection
,结果为0条记录。这完全不正确,因为实际上有必要的组件。
Guid workflowId = WORKFLOW_GUID;
RetrieveRequiredComponentsRequest request = new RetrieveRequiredComponentsRequest();
request.ObjectId = workflowId; // confirmed correct id as the correct entity can be retrieved
RetrieveRequiredComponentsResponse response = (RetrieveRequiredComponentsResponse)service.Execute(request);
EntityCollection results = (EntityCollection)response.Results["EntityCollection"]; // the only key in Results was "EntityCollection"
foreach (var item in results.Entities) // okay, then what are their names?
{
Console.WriteLine("LogicalName: {0}", item.LogicalName); // prints nothing at all! wat?
}
Console.WriteLine("Results count: {0}", results.Entities.Count); // is 0...
我很困惑,因为我知道我有工作流程的ID,因为我可以使用service.Retrieve
正确地获取它。 RetrieveRequiredComponents[Request|Response]
不是否正确用于获取工作流程过程依赖项?它当然适用于其他CRM对象。
编辑(由于上述代码错误的部分原因):RetrieveRequiredComponents
查找解决方案组件,例如实体,选项集和网络资源,而不是单个属性解决方案组件,如实体的字段。这就解释了为什么我没有得到我想要的结果,但它没有解释为什么请求根本没有结果。我希望能回来几个实体。