我开发了一个托管软件包,该软件包应该在启用或不启用共享活动的情况下工作。这就是我首先要弄清楚这个功能是否在组织中启用的原因:
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的代码? 非常感谢 亚历
答案 0 :(得分:0)
答案是:动态Apex:
if (isSharedActivitiesEnabled) {
newEventRelation.put('IsWhat', false);
newEventRelation.put('IsParent', true);
newEventRelation.put('IsInvitee', false);
} else {
newEventRelation.put('Status', attendeeStatus);
}
诀窍。