Salesforce.com 用の Novell Identity Manager ドライバを開発しており、Salesforce.com プラットフォームをよりよく理解しようとしています。
私は今まで本当に良い成功を収めてきました。SFDC からほとんど任意のオブジェクト クラスを読み取り、それらの eDirectory オブジェクトを作成できます。これはすべて完了し、うまく機能しています。(パブリッシャー チャネル)。クエリ イベントをマッピングすると、ほとんどすべてがパブリッシャー チャネルで機能し始めました。
現在、eDirectory で変更が発生したときにイベントを SFDC (加入者チャネル) に送り返す作業を行っています。
私は SOAP API で upsert() 関数を使用しています。Novell Identity Manager を使用すると、基本的に SOAP ドキュメントを作成し、作成した結果を確認できます。(XSLT で実行するか、さまざまな許可されたトークンを使用して、DirXML スクリプトでドキュメントを作成できます。私はこれまでのところうまく機能している DirXML スクリプトを使用しています。)
そのコメントの結論は、SOAP ドキュメントを作成して、それを見て、正しく理解していることを確認できるということです。これは通常、サンプル コードが通常提供する Java/C++ アプローチとは異なります。この方法ではるかに視覚的に。
upsert() について、私が完全には理解していないことがいくつかあります。そのようなイベントが発生した場合、値を空白にする方法を知っています。ノード内に、次の<urn:sObjects>
ようなノードを追加します (名前空間が既に宣言されていると仮定します)。
<urn1:fieldsToNull>FieldName</urn1:fieldsToNull>
値 (AttrValue) を属性 (FieldName) に追加する方法を知っています。次のようなノードを追加します。
<FieldName>AttrValue</FieldName>
これはすべて機能し、非常に簡単です。
私が持っている質問は、SFDC の値を多値にできるかということです。eDirectory では、変更される複数の値を持つ属性は、次の 2 つの方法で発生する可能性があります。
- すべての値を削除して、新しいセットを再度追加できます。
- 削除された単一の値は、その種のイベント (remove-value) として送信されるか、1 回の操作で多くの値が削除されます。
SFDC を見ると、単一のエントリ : または ; に格納されているように見えるマルチピックリスト属性しか表示されません。区切られています。SFDC で異なる方法で管理される別の種類の多値属性はありますか? もしそうなら、SOAP API を介してどのように操作するのでしょうか?
これらの複数選択リストを単一の文字列にマップするか、文字列の複数値属性にマップするかを決定する必要があります。最初の方法の方が簡単で、2 番目の方法の方が便利です...うーん...選択肢...
参考文献:
- ドキュメントがどのように見えるべきかを理解するために、サンプル SOAP メッセージのページを使用してきました。
- Apex Explorerは、データベースを参照してクエリをテストするためのキック ツールです。DBVisualizerが JDBC 接続データベースに対して行うのと同じように。これがなかったらもっと大変だったでしょう!
- SoapUiも必要で、素敵なツールです!