MSCRMとBizTalk2010統合のPOCを開始する予定です。
その前に、MSCRMとの統合にBizTalk2010を使用している団体はありますか?
MSCRMとBizTalk2010統合のPOCを開始する予定です。
その前に、MSCRMとの統合にBizTalk2010を使用している団体はありますか?
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 統合とは思えません。そのため、おそらく専用のカスタム バインディングを構築することによって、別の方法を見つけることに取り組んでいますが、これまでのところ成功していません。
ここで私の質問を参照してください。
お役に立てれば。