1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【パブリッシャー】Sharperlightクエリーを利用したKENDO DataSourceの作成

Last updated at Posted at 2023-06-01

Sharperlightで作成したクエリをSharperlight RESTfulサービス APIエンドポイントとして使用してデータセットを取得し、KENDO DataSourceオブジェクトを作成する方法を紹介してみたいと思います。

通常、Sharperlightは、社内ネットワークやクラウド上にあるアプリケーションサーバーにインストールされます。そして業務に必要なデータが保管されているデータベースとの接続を保持しています。

Sharperlightパブリッシャーで作成された公開クエリは、単にWEBレポートとしてサービス経由で公開されるだけではなく、JSON形式等のデータセットを供給するといった機能も持ちあわせています。

今回は、そのSharperlight RESTfulサービスを利用してJSON形式でデータを取得し、KENDO DataSourceオブジェクトを作成する方法を紹介します。KENDO DataSourceオブジェクトは、KENDO JavaScript Frameworkが提供する様々なコントールにデータを供給するオブジェクトとして使用されます。

公開クエリ

Sharperlightパブリッシャーを使用して公開クエリの作成を行います。このクエリによって必要なデータセットが返却されます。

パブリッシャーをSharperlightアプリケーションメニューより起動します。
新規ボタンで公開クエリの作成を開始します。
コードグループおよびタイトルを記入します。
ここで記入したコードグループは、後に指定するエンドポイントURLアドレスの一部として使用されます。
image.png

クエリの作成

クエリを編集ボタンでクエリの設計を行います。

フィルター

クエリビルダが起動したら、フィルターの設定から行います。
製品:どのデータソースを使用するかを設定します。ここではSAP Business Oneを選択します。
Company: デモ会社 OEC Computers Australiaを選択。
テーブル:A/R Sales Invoice
テーブルの値を選択すると直ぐに必須フィルターが表示されます。背景色が赤色のものです。
また、選択可能フィールド一覧も表示されます。
必須フィルターのCanceled?Nを指定し、その他の必須フィルターは<ALL>とします。
選択リストからDocument Dateフィールドをドラッグ&ドロップで、フィルターに設定します。

また、Document DateフィルターとCustomer Codeフィルターの名前をそれぞれDocumentDateCustomerCodeとします。
image.png

出力アイテム

選択リストから以下のフィールドをドラッグ&ドロップ、あるいはダブルクリックで出力アイテムとして出力領域に設定します。出力アイテムの名前は、参照コードとして後に使用されます。
image.png

では、プレビューボタンでクエリを試行してみます。
クエリが正常に動作し、データが戻ってきました。
image.png

クエリをOKボタンで保存します。
クエリの作成が済んだので、公開クエリもOKボタンで保存します。

クエリエンドポイントURL

クエリエンドポイントURLの形式は以下のようになります。
{Sharperlight サービスURL}/DataSource/?query={グループ}.{コード}&dfmt=jsonarray&dcat=UseNames

http(s)://xxxxx/mdService1Rest/DataSource/?query=QiitaSample._ds_SAPSalesInvoices&dfmt=jsonarray&dcat=UseNames

KENDO DataSource

下記のコードでSharperlight公開クエリを使用したKENDO DataSourceを作成することができます。
url属性に公開クエリのエンドポイントURLを指定します。最後尾にある&usid={_System.Rest.Usid}は、Sharperlightのコントロールタグで、実行時にセッション番号に置き換えられます。(このコードが Sharperlight で公開されたクエリに埋め込まれている場合に限る)

schema -> model -> fields属性では、公開クエリの出力フィールドをその名前で指定します。

function _Datasource_Create(){
    try {
        var ds = new kendo.data.DataSource({
            transport: {
                read: {
                    datatype: "jsonp",
                    url: "http://xxxxx/mdService1Rest/DataSource/?query=QiitaSample._ds_SAPSalesInvoices&dfmt=jsonarray&dcat=UseNames&usid={_System.Rest.Usid}"
                }
            },
            schema: {
                model: {
                    fields: {
                        DocNum: { type: "number" },
                        DocDat: { type: "datetime" },
                        CusCod: { type: "string" },
                        CusNam: { type: "string" }
                    }
                }
            }
        });
        return ds;
    }catch(err){
        console.log("Error in _Datasource_Create(): " + err.message);
        return null;
    }
};

エンドポイントURLのオプションパラメータとして、公開クエリのフィルターに値を設定することも可能です。
&flt{フィルター名}=xxx&flt{フィルター名}_2=yyyといった感じです。
e.g. &fltDocumentDate=2023/01/01&fltDocumentDate_2=2023/05/31
これは、下図のこの場所にそれぞれ渡されます。
image.png

URL全体としてはこんな感じになります。

http://xxxxx/mdService1Rest/DataSource/?query=QiitaSample._ds_SAPSalesInvoices&fltDocumentDate=2023/01/01&fltDocumentDate_2=2023/05/31&dfmt=jsonarray&dcat=UseNames&usid={_System.Rest.Usid}

Webアプリケーション等の開発のお役に立てれば幸いです。
P.S. Sharperlightには、KENDO JavaScript Frameworkライブラリが梱包されています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?