Salesforce,使用SOQL从ProcessInstance对象访问TargetObject字段

时间:2016-11-09 13:51:13

标签: apex soql

我的控制器中有以下内容用于由PageBlockTable使用的visualforce页面。

我可以访问p.ProcessInstance.TargetObject的其他标准字段,例如p.ProcessInstance.TargetObject.Name和.Id等...

但是如何访问与记录相关的TargetObject的自定义字段?或者这不可能吗?如果它不可能,那么我假设我可以在单独的查询中完成它,但我无法弄清楚如何。

谢谢

List<ProcessInstanceWorkitem> results = [Select p.ProcessInstance.Status, p.ProcessInstance.TargetObject.Name, p.ProcessInstance.TargetObject.Id, p.Actor.Name, p.CreatedBy.Name, p.CreatedDate FROM ProcessInstanceWorkitem p];

1 个答案:

答案 0 :(得分:3)

您必须在TargetObject上执行额外的SOQL查询,因为ProcessInstance是多态的。例如。

List<ProcessInstanceWorkitem> results = [Select p.ProcessInstance.Status,     p.ProcessInstance.TargetObject.Name, p.ProcessInstance.TargetObject.Id, p.Actor.Name, p.CreatedBy.Name, p.CreatedDate FROM ProcessInstanceWorkitem p];

List<Id> targetObjectIds = new List<Id>();
for(SObject result : results)
{
  targetObjectIds.add(result.p.ProcessInstance.TargetObject.Id);
 }
List<SObject> targetObjectFields = [SELECT Id, Field names FROM SObject WHERE Id IN:targetObjectIds];

编辑: 请将SObject更改为您当前使用的对象。