Dynamics CRM 2011 で JScript を利用する

みなさん、こんにちは。

今回は開発者の方向けに、SDK より JScript の情報をご案内します。
まだ日本語版の SDK にはない情報ですので、是非ご覧ください。
要所をかいつまんで紹介しているため、詳細は原文をご参照ください。

情報元 : https://msdn.microsoft.com/en-us/library/hh771584.aspx

概要

Microsoft Dynamics CRM 2011 および Microsoft Dynamics CRM オンラインでは、
JScript をサポートしています。このトピックでは JScritp を利用する開発者向けの
情報とリンクを提供します。

JScript が利用できる場所

JScript は以下の場所で利用が可能です。

フォームスクリプト

JScript の利用場所として最も一般的なものは、エンティティのフォーム上で動作する
フォームスクリプトです。OnLoad や OnChange 等、各種イベントに対してスクリプト
を動かすことが可能です。

詳細は以下のリンクを参照してください。
Microsoft Dynamics CRM フォームのコードを記述する

リボンコマンド

リボンコントロールクリック時の動作として、スクリプトを実行することが可能です。

詳細は以下のリンクを参照してください。
Microsoft Dynamics CRM のリボンのカスタマイズ

Web リソース

Web リソースには様々なタイプがあり、JScript Web リソースにはスクリプトを
直接保存することができます。また HTML Web リソースから JScritp Web
リソースを呼び出したり、HTML Web リソース内に直接スクリプトを埋め込む
ことも可能です。

詳細は以下のリンクを参照してください。
Microsoft Dynamics CRM の Web リソース

JScript を利用したデータアクセス

JScript から利用できる Web サービスは 2 種類存在します。
※これらの Web サービスは外部からのアクセスをサポートしません。

Web リソース用 REST エンドポイント

REST エンドポイントは Uniform Resource Identifier (URI) を利用した
HTTP リクエストを利用した呼び出しが可能です。現時点では、レコードの
作成、読み取り、変更、削除操作のみをサポートしています。

サンプルは以下のリンクを参照してください。
サンプル: REST エンドポイントと JavaScript を使用した作成、取得、更新、および削除

REST エンドポイントを利用する利点は、OData プロトコルをサポートしている
点です。OData を利用して柔軟なクエリが実行できます。データを取得する
際には JavaScript Object Notation (JSON) フォーマットが利用できます。
これにより取得結果の扱いが容易になります。

ただし 組織 Web サービスの Execute メソッドを実行することはできない
ため、その場合は Web リソース用の組織 Web サービスを利用します。

REST エンドポイントの詳細は、以下のリンクを参照してください。
Web リソースの REST エンドポイントの使用

Web リソース用 SOAP エンドポイント

SOAP エンドポイントを利用すれば、Execute メソッドを利用可能です。
併せて、Create、Retrieve、RetrieveMultiple、Update、Delete 等共通
メソッドも利用可能になります。しかし REST エンドポイントと比較すると、
難易度が高くなります。

SOAP エンドポイントを利用する場合、XML 形式のリクエストを HTTP リクエスト
の一部として送信し、 XML 形式の応答をハンドルする必要があります。C#
サンプルとして提供される SoapLogger と呼ばれるツールを利用し、任意の
操作を行った際の XML 形式のデータをキャプチャできます。

また Microsoft CRM MVP である Jamie Miley 氏が作成した SOAP リクエスト
の作成ツールが、Codeplex からダウンロード可能です。

CRM 2011 Jscript Soap Request Formatter
https://crm2011soap.codeplex.com/

また SDK のサンプルではメタデータ取得の方法を提供しています。
サンプル: JScript を使用したエンティティ メタデータの取得

SOAP エンドポイントの詳細は、以下のリンクを参照してください。
Web リソースの SOAP エンドポイントの使用

JScript のベストプラクティス

以下に JScript のベストプラクティスを紹介します。

DOM は利用しない

スクリプト開発者は、Document Object Model (DOM) を利用した開発を
今までに行ったことがあると思いますが、Microsoft Dynamics CRM では
サポートされません。ただし HTML Web リソース内で、独自の要素に
対する操作は自由に行って構いません。

Microsoft Dynamics CRM のエンティティやフォーム上の要素にアクセス
するために、Xrm.Page オブジェクトモデルが提供されています。フォーム
で利用するスクリプトでは、Xrm.Page オブジェクトを利用してください。

詳細は以下のリンクを参照してください。
Xrm.Page オブジェクト モデルの使用

関数名はユニーク名を利用する

開発者が 1 人だけで、ソリューションも 1 つの場合には問題になりませんが、
Microsoft Dynamics CRM 2011 および Microsoft Dynamics CRM オンライン
では複数のソリューションをサポートしているため、JScript の関数名が重複
する恐れがあります。同じ名前の関数が同一フォーム上に存在する場合は
後から登録された関数が上書きされるため、かならず関数名がユニークに
なるよう心がけてください。

詳細は以下のリンクを参照してください。
Microsoft Dynamics CRM の JScript ライブラリ

データアクセスは非同期を利用する

REST や SOAP エンドポイントを利用してデータを取得する場合には、常に
非同期実行に構成された XMLHttpRequest を利用してください。これは
ブラウザがシングルスレッドで動作するため、データ取得に時間がかかると
UI の応答がなくなるためです。

JScript のデバッグ

多くの開発者が、Internet Explorer 8 以降で提供される開発者ツールを利用
して、スクリプトのデバッグを行います。詳細は以下のリンクを参照してください。
開発者ツールを使用したスクリプトのデバッグ

また Visual Studio を利用してデバッグすることも可能です。
詳細は以下のリンクを参照してください (英語)
How to Debug JScript in Microsoft Dynamics CRM 2011.

まとめ

こちらで紹介した情報のほとんどは、今までブログでも紹介してきましたが、
まとまったページがあると便利ですね。JScript の開発者の方は、色々な
ところでスクリプトを利用してみてください。

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