2011-07-25 19 views

答えて

2

BizTalk 2010を使用して、Microsoft Dynamics CRM 2011 Organizationサービスに電話をかけています。

これを行うには基本的に2つの方法がありますが、私は他のものを見つけることを約束しています。

最初の方法は、SDKと共に出荷されるBizTalkスキーマと、外部のC#ベースのクラスライブラリヘルパを使用することです。このシナリオは、インターネット上でカバーされているとかなり分かります。このシナリオでは、BizTalkがCRM初期バインドクラス(Accountなど)を呼び出すことはできないことに注意してください。これは、マッピングを扱いにくいエクスペリエンスにする一般的なCrmEntityオブジェクトの使用のみを許可します。

外部ヘルパーは、LiveIDフェデレーションの固有性を処理するために必要です。

この第1の方法は、単純であるという利点を有する。しかし、BizTalkのネイティブCRMタイプは使用できません。

第2の方法は、少なくとも部分的に上記の問題を何らかの形で解決することです。まず、ネイティブの初期バインドCRMオブジェクト(Accountなど)を公開し、LiveIDフェデレーションを処理するWCFファサードを構築します。

生成されると、初期バインドされたクラスはシリアル化可能ではないため、WCFインターフェイス(およびサービス)に含めることはできません。これは、すべてのプロパティをDataContractAttributeで飾ることで解決できます。また、読み取り専用のプロパティには、余分な空のセット{}が追加されている必要があります。生成されたクラスには、そうした(単純な)変更が膨大な数であることに注意してください。幸いにも、生成されたファイルとして、構文は一貫しており、いくつかの簡単なRegExが行います。

BizTalk側では、BizTalkスキーマを生成するためにWCFファサードメタデータを使用します。残念ながら、あなたは巨大な複数メガバイトのファイルとクロス依存スキーマで終わるでしょう。

まず、循環依存関係を解除する必要があります。私の場合、「契約」と「メタデータ」の両方のschémasで使用されていた共有の複合型を保持するために、追加のスキーマを追加する必要がありました。

次に、マップで巨大に生成されたスキーマを簡単に使用することはできません。最初に地図を開く(またはスキーマのみ)には年月がかかるでしょう。第2に、コンパイラが突き詰まり、Visual Studioがクラッシュします。

これを解決するには、マップの.btm XMLファイルのGenerateDefaultFixedNodes属性を手動で変更する必要があります。

ただし、マッピングの一部であるノードと構造体だけを含む、生成されたスキーマの簡略化されたバージョンを使用することをお勧めします。ほとんどのノードはオプションなので、結果としてWCFファサードへのXMLリクエストは同じになります。

この2番目の方法の利点は、BizTalkのネイティブCRMタイプを処理できることです。しかし、実装は最初は複雑に思えるかもしれません。適切な自動化では、CRM側の変更にもかかわらず、実際にはうまくいきます。

しかし、いずれの方法も「ネイティブ」BizTalk統合としては感じません。だからこそ私は別の方法を見つけることに取り組んでいます。おそらく専用のカスタムバインディングを構築することによって、これまで成功していませんでした。

my question hereを参照してください。

これが役に立ちます。

+0

ブリリアント。私は同じ行に沿って作業してきましたが、あなたが言及したいずれのオプションの代替案も見つけられませんでした。 – RobS

関連する問題