質問

MS CRM と BizTalk 2010 の統合のための POC を開始する予定です。

その前に知りたかったのですが、MS CRM との統合に BizTalk 2010 を使用している団体はありますか?

役に立ちましたか?

解決

BizTalk 2010 を使用して Microsoft Dynamics CRM 2011 組織サービスを呼び出しています。

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

1 つ目の方法は、SDK に同梱されている BizTalk スキーマを、外部の C# ベースのクラス ライブラリ ヘルパーとともに使用することです。このシナリオはインターネット上でかなり詳しく報道されています。このシナリオでは、BizTalk が CRM 事前バインド クラス (アカウントなど) を呼び出すことができないことに注意してください。汎用の CrmEntity オブジェクトの使用のみが許可されるため、マッピングの処理が面倒になります。

LiveID フェデレーションの特異性に対処するには、外部ヘルパーが必要です。

この最初の方法には、単純であるという利点があります。ただし、BizTalk からネイティブ CRM タイプを使用することはできません。

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

生成された初期バインド クラスはシリアル化できないため、WCF インターフェイス (およびサービス) の一部にすることはできません。これは、すべてのプロパティを装飾することで解決できます。 データ契約属性. 。また、読み取り専用プロパティには追加の空のセット {} を追加する必要があります。生成されたクラスには、このような (単純な) 変更が多数必要になることに注意してください。幸いなことに、生成されたファイルの構文には一貫性があり、いくつかの単純な正規表現で十分です。

BizTalk 側では、BizTalk スキーマを生成するために WCF ファサード メタデータを使用します。残念ながら、最終的には数メガバイトの巨大なファイルと相互依存スキーマが作成されます。

したがって、まず循環依存関係を解消する必要があります。私の場合、「コントラクト」スキーマと「メタデータ」スキーマの両方で使用される共有複合型を保持するために、追加のスキーマを追加する必要がありました。

次に、生成された巨大なスキーマをマップ内で簡単に使用することはできません。最初にマップ (またはスキーマのみ) を開くのには時間がかかります。次に、コンパイラが停止し、Visual Studio がクラッシュします。

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

ただし、私がお勧めするのは、マッピングの一部であるノードと構造のみを含める、生成されたスキーマの簡易バージョンを使用することです。ほとんどのノードはオプションであるため、WCF ファサードへの結果の XML 要求は最終的に同じになります。

この 2 番目の方法の利点は、BizTalk のネイティブ CRM タイプを処理できることです。しかし、実装は最初は複雑に聞こえるかもしれません。適切に自動化すれば、CRM 側の変更に直面しても、実際には非常にうまく機能します。

ただし、どの方法も「ネイティブ」な BizTalk 統合とは思えません。そのため、私はおそらく専用のカスタム バインディングを構築するなど、別の方法を見つけることに取り組んでいますが、今のところ成功していません。

見る 私の質問はここにあります.

お役に立てれば。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top