2012-01-30 74 views
0

有没有办法在apex中获取托管包的前缀名称?获取顶点包前缀名称?

我有一个SOSL查询,但该应用程序位于开发人员组织和托管软件包中,如果我有办法获取软件包名称,这将非常棒,因为我不必对其进行硬编码。

谢谢。

+0

是你的代码包的一部分?如果是这样,你不需要使用前缀。否则,如果它是一个对象,那么你肯定依赖于那个正在安装的包,因此,对这个名称进行硬编码不会是一个问题? – 2012-01-30 04:35:39

回答

1

执行此操作的唯一方法AFAIK是使用元数据API。您可以致电describeMetadata(),然后评估describeMetadataResult中返回的organizationNamespace(String)值。

的Apex中,你可以做动态SOQL/DML一个不太雅致的try/catch方法,至少要确定是否是你嫌疑是有实际存在。虽然这不会告诉你实际上有什么名称空间前缀,就像元数据API一样。

莱西是正确的,你不需要前缀,但名称歧义可能成为一个问题。因此,例如,如果您有一个自定义对象Expense__c,并且安装了一个包含ACCT__Expense__c的会计软件包,那么如果打算访问托管软件包对象而不是您自己,那么您一定要明确包含ACCT__前缀。

1

如果传入的名称空间不是已安装软件包(或正在开发的托管软件包)的有效名称空间,则UserInfo.isCurrentUserLicensed('nsPrefix')将引发TypeException。我认为这是最接近没有元数据API的情况下得到的。