如何在Salesforce中检测环境?

Cra*_*ris 17 sandbox salesforce apex-code

我正在使用Web服务将我们的后端系统与Salesforce集成.我在不同的URL上运行生产和舞台环境.我需要能够使Web服务调用的端点不同,具体取决于代码是在生产环境还是沙箱Salesforce实例中运行.

我如何检测环境.

目前我正在考虑查找用户以查看用户名是否以'devsandbox'结尾,因为我无法识别我可以查询以获取环境的系统对象.

进一步澄清:

我需要确定的位置在我在Salesforce中选择按钮时调用的Apex代码中.我的自定义控制器需要知道它是否在生产或沙箱Salesforce环境中运行.

小智 15

对于你们通过搜索结果找到这个,有一个重要的更新.正如Daniel Hoechst在另一篇文章中指出的那样,SF现在直接提供沙箱与生产信息:

在2014年夏天,(版本31.0),组织对象上有一个新字段.

从组织限制1中选择Id,IsSandbox

从新建和更改对象下的发行说明:

The Organization object has the following new read-only fields.

InstanceName
IsSandbox
Run Code Online (Sandbox Code Playgroud)


Cra*_*ris 12

根据响应,Salesforce似乎没有可以告诉我Apex代码是在生产环境还是沙箱环境中运行的系统对象.

我将基于以下假设继续进行:

  • 我可以读取当前环境的组织ID
  • 我的生产系统的组织ID将始终保持不变.
  • 沙箱的组织ID将始终与生产不同(因为它们是唯一的)

可以找到当前的组织ID System.getOrganizationId()

我的解决方案是让我的代码将当前的组织ID与表示生产的常量值进行比较.

  • 据您所知,这些都是有效的假设吗? (2认同)