0

我开发了一个托管包,它应该在启用或不启用共享活动的组织上工作。这就是为什么我首先要弄清楚组织中是否启用了此功能:

Boolean isSharedActivitiesEnabled = true; 
Map<String, Schema.SObjectField> M = Schema.SObjectType.EventRelation.fields.getMap(); 
if (M.containsKey('IsParent')) { 
    System.debug('============== shared activities are enabled.'); 
} else { 
    isSharedActivitiesEnabled = false; 
    System.debug('============== shared activities are NOT enabled.'); 
} 

然后我根据以下内容填充可用的字段

EventRelation newEventRelation = new EventRelation( 
    EventId = newEventId, 
    RelationId = contact.Id 
); 
if (isSharedActivitiesEnabled) { 
    newEventRelation.IsWhat = false; 
    newEventRelation.IsParent = true; 
    newEventRelation.IsInvitee = false; 
} else { 
    newEventRelation.Status = attendeeStatus; 
} 

在早期版本中,我没有填充 IsWhat、IsParent 和 IsInvitee 字段,并且受管软件包可以安装在任何组织中。但由于我正在填充字段 IsWhat 和 IsParent 和 IsInvitee,因此此托管软件包只能安装在启用共享活动的组织中。

那么如何开发适用于这两种类型的组织的代码呢?非常感谢亚历克斯

4

1 回答 1

0

答案是:动态 Apex:

if (isSharedActivitiesEnabled) {
  newEventRelation.put('IsWhat', false);
  newEventRelation.put('IsParent', true);
  newEventRelation.put('IsInvitee', false);
} else {
  newEventRelation.put('Status', attendeeStatus);
}                   

成功了。

于 2013-09-28T00:29:24.710 回答