【发布时间】:2017-07-18 20:22:35
【问题描述】:
我需要收集有关每种记录类型可用的选项列表值的信息。我知道这可以使用 describeLayout 或 readMetadata API 来实现。但是,当我尝试为大型自定义对象收集此信息时,麻烦就来了。 SalesForce API 返回一个包含所有可用选项列表值的记录类型。
<recordTypeMappings>
<name>Record1</name>
<picklistsForRecordType>
<picklistName>Picklist1</picklistName>
<picklistValues>
...
</picklistValues>
</picklistsForRecordType>
<picklistsForRecordType>
<picklistName>Picklist2</picklistName>
<picklistValues>
...
</picklistValues>
</picklistsForRecordType>
</recordTypeMappings>
<recordTypeMappings>
<name>Record2</name>
<picklistsForRecordType>
<picklistName>Picklist1</picklistName>
<picklistValues>
...
</picklistValues>
</picklistsForRecordType>
<picklistsForRecordType>
<picklistName>Picklist2</picklistName>
<picklistValues>
...
</picklistValues>
</picklistsForRecordType>
</recordTypeMappings>
这意味着如果我有一个大对象(包括 200 个选项列表和 100 个记录类型),我将获得 200*100=20,000 个选项列表记录。它使 API 响应非常大,高达 80MB。而且这是非常低效的,如果选项列表值对于所有记录类型保持相同,它们仍将包含在 API 响应中的每个记录类型中。
我们的想法是获取唯一的选项列表值集,然后只包含记录 ID,因此每个记录类型都不会重复相同的选项列表。
<recordTypeMappings>
<name>Record1, Record2</name>
<picklistsForRecordType>
<picklistName>Picklist1</picklistName>
<picklistValues>
...Values which are the same for Record1 and Record2...
</picklistValues>
</picklistsForRecordType>
<picklistsForRecordType>
<picklistName>Picklist2</picklistName>
<picklistValues>
...Values which are the same for Record1 and Record2...
</picklistValues>
</picklistsForRecordType>
</recordTypeMappings>
这将减少响应大小。有没有办法在 Apex 中做到这一点?我在 API 中搜索并找不到任何合适的东西。 Apex 似乎是一个更好的解决方案,因为所有处理都将在 Salesforce 端进行。
感谢您的帮助。
【问题讨论】:
标签: salesforce apex