环境变量作为 Salesforce 中的自定义元数据类型

Environment variable as custom metadata type in Salesforce

我试图在 Salesforce 代码库中表示环境变量并遇到了自定义元数据类型。因此,根据我所在的沙箱,我想改变我从顶点 class 命中的外部服务的基础 URL。我想避免在 class 中对任何内容进行硬编码,因此试图找出像解决方案这样的环境变量。

您如何将 URL 表示为自定义元数据类型?另外,如何在 class 中访问它?当 qa 沙箱从 prod 刷新时会发生什么?他们的自定义元数据类型记录会被覆盖吗?

您如何调用该外部服务?如果它确实是一个基数 url,您最好为它使用“named credential”。它会为你提取基础url,如果你必须出示任何...

,则包括身份验证或证书

否则 - 自定义元数据可能不是一个好的选择。它们是一种字典对象,您可以添加更多(但不能从顶点添加)但是如果您使用 Git/Ant/SFDX CLI 而不是变更集来部署东西,它会变得有点痛苦,您需要为沙箱提供不同的自定义元数据值与产品。有点违背目的。

您最好改用自定义设置(层次结构默认启用,您必须在设置中勾选列表。如果您需要 key-value 种对,列表很有用,类似于自定义元数据):https://salesforce.stackexchange.com/questions/74049/what-is-the-difference-between-custom-settings-and-custom-metadata-types

您也可以使用 Apex 修改它们。这意味着在理想世界中你可以有一个 "postcopy" class running as soon as sandbox is refreshed that overwrites the custom setting with the non-prod value. For named credential I don't think you can pull it off, you'd need a mini deployment that changes it or manual step (have you seen https://salesforce.stackexchange.com/q/955/799 ?)