-1

MSCRMとBizTalk2010統合のPOCを開始する予定です。

その前に、MSCRMとの統合にBizTalk2010を使用している団体はありますか?

4

1 に答える 1

2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ここで私の質問を参照してください。

お役に立てれば。

于 2011-07-26T06:47:53.837 に答える