Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Dynamics 365 v9.0 新機能 仮想エンティティにCData API Serverを経由して、Azure SQL Databaseのテーブルを表示してみる

以前、Dynamics 365 の仮想エンティティの使い方を紹介しました。

bit.ly

仮想エンティティはODataが必須ですが、ODataのエンドポイントを構成するのはなかなかなコストがかかります。

そこで、Cdata Software で提供しているOData形式のWeb APIを簡単に構築できるAPI Serverを利用して、Azure SQLへさくっと連係させてみました。

www.cdata.com

以下のような感じです。

f:id:sugimomoto:20171210031319p:plain

API Server の構築方法は以下の記事をどうぞ。

kageura.hatenadiary.jp

kageura.hatenadiary.jp

ちなみに、この記事はCData Software User Group Advent Calendar 2017の10日目です。

qiita.com

構築手順

構成方法は、上記Blogのベースを踏まえていれば、結構簡単です。

最初にAzure SQL の連係対象テーブルを構成し

API Serverで連係対象テーブルをAPIとして設定

最後に、Dynamics 365仮想エンティティの設定を行う、という流れです。

連係用Azure SQL テーブルの準備

今回は製品情報を格納するProductテーブルを構成して、Dynamics 365と連係させてみました。

以下のような感じで、テーブルを事前に作成しておきます。

ポイントは、PrimaryKeyの設定で、ここにはGUIDを格納するフィールドとして利用します。

最終的に、このGUIDが利用されて、Dnamics 365からODataのレコード指定リクエストが飛びます。

f:id:sugimomoto:20171210031331p:plain

そして、以下のような感じでサンプルデータも突っ込んでおきました。

f:id:sugimomoto:20171210031336p:plain

API ServerでProductテーブルの公開

API Serverも、すでにインストールが完了していれば、特に難しいことはありません。

まず、接続からAzure SQLに対する接続構成を行います。

f:id:sugimomoto:20171210031342p:plain

SQL Serverを選択し

f:id:sugimomoto:20171210031348p:plain

接続設定を保存します。

f:id:sugimomoto:20171210031354p:plain

続いて、リソースから、[リソースの追加]をクリックし

f:id:sugimomoto:20171210031400p:plain

先程構成した、接続情報を選択

f:id:sugimomoto:20171210031412p:plain

先程作成したProductテーブルを選択します。

f:id:sugimomoto:20171210031421p:plain

あとは、基本的には初期設定で大丈夫ですが、

初期状態のリソース名が長いので、Productと変更しました。

これで保存します。

f:id:sugimomoto:20171210031431p:plain

あとは、ユーザーから、APIにアクセスするためのユーザー情報を構成しておきましょう。

後々Authトークンが必要になるので、ここで控えておきます。

f:id:sugimomoto:20171210031438p:plain

あとは、ヘルプから、接続用URLも控えておきましょう。

f:id:sugimomoto:20171210031445p:plain

仮想エンティティの設定

最後にDynamics 365 の仮想エンティティの設定を行っていきます。

まず、仮想エンティティのデータソース設定ですが、以下のように設定値を入力します。

ポイントは認証情報をHeaderに入力するところです。

URL:http://****.azurewebsites.net/api.rsc(末尾が.rscなので注意)

Request Parameters

Request Type:Header

Parameter Name:x-cdata-authtoken

Parameter Value:(※API ServerのユーザーAuthトークンを入力)

f:id:sugimomoto:20171210031459p:plain

データソース設定後、連係用の仮想エンティティを作成します。

ポイントは以前と同様に、仮想エンティティのチェックボックスを入れて、設定したデータ・ソースを選択するところと

ODataリクエストの対象ソースとして指定される、External NameとExternal Collection Nameです。

ちなみに、API Serverは複数形でリクエストを実施しないので、今回の場合はどちらもPdoructを入力して大丈夫です。

f:id:sugimomoto:20171210031506p:plain

あとは、フィールドを作成して、マッピングし、

フォームやビューに配置するだけです。

OdataのDateTimeはもちろん日付と時間ですが、Money型はAPI Serverの構成上、Decimalになるので、Dynamics 365上でもDecimalに指定しました。

f:id:sugimomoto:20171210031512p:plain

公開後、以下のように表示されます!!!

素晴らしい!!!

f:id:sugimomoto:20171210031520p:plain

フォームも大丈夫です。

f:id:sugimomoto:20171210031527p:plain

おわりに

ちなみにAPI ServerはSQL Serverのようなベーシックなデータベースだけでなく、KintoneやSharePointといったSaaSサービスをODataに変換し直すドライバーのような役割も持っています。

なので、次回は、KintoneかSharePointを仮想エンティティとして表示する連係をしてみたいと思います。