Dynamics CRM 2011 SDK 5.0.13: メタデータのクエリ その 1


みなさん、こんにちは。

今回から開発者向けの情報として、2012年 12月サービスアップデート
および Update Rollup 12 で提供されるメタデータのクエリに関して、
数回にわたり紹介します。

実際のサンプルコードや利用方法を紹介する前に、今日は SDK チーム
の Jim からのメッセージをお届けします。※一部割愛していますので、
詳細に興味がある方は原文をどうぞ。

情報元 : New Technical Article: Query Metadata Using JavaScript

 

============================================================

現在 Jscript で開発していて、メタデータの操作が必要な方は、是非一度
以下の記事を覧ください (英語)。この記事では新しく提供されたメタデータ
を紹介しています。

Query Metadata Using JavaScript
http://msdn.microsoft.com/en-us/library/jj919080.aspx

これまでも SDK ではメタデータ操作のサンプルを提供してきました。しかし
新しいライブラリは以下の点において今までのものとは異なります。

・ 新しい Microsoft.Xrm.Sdk.Metadata.Query では、必要最小限のメタデータ
のみを取得できるより柔軟な操作をサポートします。また変更があった
ものだけを取得することもできます。詳細はこちらの記事をご覧ください。
・ 新しいライブラリではオブジェクト指向プログラミングのテクニックを利用
できるため、より容易にコーディングが可能です。

SDK チームの一員として SDK に多くのサンプルを提供してきましたが、その他
にも、new Metadata Browser Form Query String Parameter tool を開発
してきました。しかし以前のメタデータ API はパフォーマンス観点から最適化
されておらず、不要なデータまで取得する場合ががありました。しかし今回の
Microsoft.Xrm.Sdk.Metadata.Query では QueryExpression に似た手法でクエリ
を記述することができ、効率的にデータを取得できます。

しかしこの柔軟性が新たな課題も生みます。以前のメタデータ API も、例えば
エンティティ名や属性名といったパラメーターが存在し、コーディングも単純な
ものでした。一方で新しいメタデータ API は複雑な XML で構成されています。

Query Metadata Using JavaScript の記事ではその比較をしながら、どのように
提供されたライブラリが利用可能かを解説しています。既に QueryExpression
と同様の手法でクエリができる方法も開発済みですが、現在テスト段階です。
こちらのコードは現在 SDK の一環として提供する予定はなく、またサンプルと
いうほど単純なものではありません。SDK には含まれませんが、質問等は
Query Metadata Using JavaScript 記事の最下部にあるコメントで受け付けます
ので、質問があればコメントをしてください。ただし提供するドキュメントで十分
な内容になるよう努めたいと思います。

============================================================

次回は C# を利用したサンプルを紹介します。

– Dynamics CRM サポート 中村 憲一郎

Comments (7)

  1. KishowFujiwara より:

    初歩的な質問で恐縮ですが、meta-metaデータを取得する方法はありますか?

  2. kenakamu より:

    コメントをいただき、ありがとうございます。

    meta-meta データと仰っているのは 2 つの組織間のメタデータの差分的なイメージでしょうか。もし GUI でメタデータを確認したいということでしたら、メタデータブラウザというものがございます。

    以下の記事は Microsoft Dynamics CRM 2011 のものですが、手順は Microsoft Dynamics CRM 2013 でもあまり変わりません。

    blogs.msdn.com/…/dynamics-crm-2011-metadata-browser.aspx

    ご質問と意図と異なるようでしたら、お手数ですが改めてコメントをいただけますでしょうか。

    – 中村 憲一郎

  3. KishowFujiwara より:

    言葉が足りなくて申し訳ございません。metadataのメタデータです。親概念エンティティにComponentがあって、サブタイプにentity,Form,View,Fieldがあって、entityは複数formを持てるので、1:Nのリレーションになる、と言った、製品仕様に近いものです。マニュアル見ればわかりますが、概念モデル化されているとありがたいです。

  4. kenakamu より:

    返信をいただき、ありがとうございました。

    エンティティ間の相関図はございますが、ご要望の内容は残念ながらございませんでした。

    ソリューションの画面から見ていただくのが一番簡単かと思います。

    ちなみにエンティティ間の相関については以下のリンクより取得可能です。

    http://www.microsoft.com/…/details.aspx

    – 中村 憲一郎

  5. KishowFujiwara より:

    ご返信ありがとうございます。リンクありがとうございます。おっしゃるようにソリューションの画面から見るのが簡単ですね。ただ、リレーションはメタ・メタデータがあればよい設計情報になると思いました。動かしながら自分で作ってみます。ご提供いただいたエンティティのメタメタデータは大変役に立ちます。

    年取ってくると、実機でやってみる気力が衰えてくるもので、どうしても概念が欲しくなります。

    Dynamicsは大変素晴らしいソリューションですね。

  6. kenakamu より:

    ご返信いただき、ありがとうございます。

    ご指摘の通り、メタ・メタデータがあることでソリューションレベルの概要を容易に把握することができると私も考えます。なにか良い方法がないか試行錯誤してみたいと思います。

    実機を容易して試していくとは時間もかかりますし大変ではありますが、オンライン環境の提供やツール類、より分かりやすい UI や情報公開によってそれらの負荷が少しでも軽減できるよう努めてまいります。

    また弊社ソリューションを褒めていただき、非常にうれしく思います。拡張性の高さを備えたフレームワークであることは、私も開発観点から非常に優れた製品であると考えております。アプリケーション面でも今後も随時改良を重ねてまいりますので、率直なご意見を頂戴できればこれ幸いです。

    – 中村 憲一郎

  7. KishowFujiwara 藤原紀章 より:

    メタ・メタデータは素直に画面項目から論理ER図とデータ定義書を作れば概要レベルは容易にできると思いますよ。

    メタ・メタデータと業務のメタデータと実機を用意すれば、すごい生産性で開発できると思います。

    また、メタメタデータに対して、それぞれの定義と設定をどの工程で実施するか、定義と設定の手順を決めるだけで作業標準が出来ますし、実際に設定された設定パラメータをメタデータとして差分を取っていけば、進捗管理も定量的に自動的に、把握可能にすることもできるような気がします。

    今回はじめて拝見しましたが、かなりの衝撃でした。