2012-01-30 9 views
0

頂点に管理対象パッケージのプレフィックス名を取得する方法はありますか?get apex package prefix name?

私はSOSLクエリを持っていますが、アプリケーションは開発者組織と管理対象パッケージにあります。パッケージ名を取得する方法があれば、ハードコーディングする必要はないのですばらしいでしょう。

ありがとうございました。

+0

コードはパッケージの一部ですか?その場合は、接頭辞を使用する必要はありません。さもなければ、それがオブジェクトのためであるなら、確かにあなたはインストールされているそのパッケージに依存しているので、名前をハードコーディングすることは問題ではないでしょうか? –

答えて

1

AFAIKを実行する唯一の方法は、Metadata APIを使用することです。 describeMetadata()を呼び出して、describeMetadataResultで返されたorganizationNamespace(String)値を評価できます。

内のApex から、あなたが何かあれば、少なくともあなたを決定するために、動的なSOQL/DMLとあまりエレガントなのtry/catchのアプローチを行うことができ容疑者が実際に存在しています。これは、メタデータAPIのように実際にそこにある名前空間接頭辞が何であるかを教えてくれません。

名前のあいまいさが問題になる可能性はありますが、接頭辞は不要ですが正解です。たとえば、カスタムオブジェクトExpense__cがあり、ACCT__Expense__cを含むアカウンティングパッケージがインストールされている場合は、自分自身ではなくマネージパッケージオブジェクトにアクセスする場合は、ACCT__の接頭辞を明示的に含める必要があります。

1

渡された名前空間が、インストールされているパッケージ(または開発中の管理対象パッケージ)の有効な名前空間でない場合、UserInfo.isCurrentUserLicensed( 'nsPrefix')はTypeExceptionをスローします。私はこれがメタデータAPIなしで得られる最も近いものだと思います。