包含共享活动功能的托管包无法安装

时间:2013-09-18 05:09:04

标签: salesforce apex-code

我开发了一个托管软件包,该软件包应该在启用或不启用共享活动的情况下工作。这就是我首先要弄清楚这个功能是否在组织中启用的原因:

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字段,因此该托管包只能安装在启用了共享活动的orgs中。

那么如何开发适用于两种类型org的代码? 非常感谢 亚历

1 个答案:

答案 0 :(得分:0)

答案是:动态Apex:

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

诀窍。