ブログBLOG

Nintex Forms で他のデータソースを使用する

2016年10月21日(金)

皆様こんにちは、インフォシェアの小高です。

Nintexの連載記事Season2です。
Nintex Formsは、昨年Enterprise Editionがリリースされ、その中の機能の一つにフォームから他データソース(データベース等)を参照する機能が追加されました。

ただ良く考えると、このデータ連携って、他にも色々あるような。。。
ですので、この記事では、Nintex Formsを用いた、他データソースの扱いを整理できればと思います。結構色々あるんですよね。

連載記事(Season2)の目次はこちらから。
ちなみに連載記事(Season1)の目次はこちらからになります。

では、行ってみましょう!

———————

当たり前ですが、Nintex FormsはSharePointのリストフォームをデザイン可能にする製品です。

ですので、「うち、色々マスタデータがあるので、フォームに表示したいんだけど」という、あるあるのお話には、まずSharePointで考えていくこと(Webですよ、データベースは直接見えませんよ)ということが大前提になってきます。

■SharePointリスト

マスタデータをSharepointリストで実装する方法です。
この場合、マスタデータを利用するSharePointリストには、参照型の列を作成します。

当然ですが、この参照型のリストはNintex Formsでも普通に使用できます。

こうやってマスタとなるリストを用意して、、、

image

ShaerPointのリスト側で使用します。

image

あとは、そのままNintex Formsを発行すると下図のように参照列をドロップダウンで表示することが可能です。

image

オプションボタン、チェックボックス、リストなんかの見た目に変更することもできますね。

imageimageimage

■外部データ列の使用

SharePointの機能である、外部データ列を用いる方法です。SQL ServerやWebサービスの値を使用する場合に考慮に入れる形になるかと思います。

image

外部データ列の作成には、上にもある、外部コンテンツタイプを予め作成しておく必要があります。これが結構大変なんですよね。SharePoint DesignerかVisual Studio等で作成することになります。

そうすると、マスターデータがSQL ServerやWebサービスであってもSharePoint越しにデータを取得可能です。

これをNintex Formsで表示すると下図のようになります。SharePoint標準と大差ありません。

image

上の商品列が、外部データ列です。右端のアイコンをクリックすると、、、

↓こんな感じでダイアログが表示されて、データを選択することが可能になります。
どのデータベースのどのテーブルをどのようにクエリするのかは、上述した外部コンテンツタイプの方で定義を行う必要がありますね。

image

今回、改めて設定してみましたが、やっぱり面倒ですこれ。。。

■SQL要求(Request)/Web要求(Request)機能

はい、ようやく登場しました。Ninex Forms Enterprise 版の独自機能です。

見た目は↓こんなコントロールです。

image

ドロップするとこんな風にドロップダウンの形になります。

image

まず、SQLの方ですが、こちらは、データベースの内容をFormsで直接参照可能になります。データはSharePoint経由で取得する形ですね。

設定は以下の画面になります。

image

直接SQL記載可能ですねー 素敵です。
(正直こんなにフィールドを書く必要はないんですけど(笑)

見た目のところも、ドロップダウンやリスト等、参照列と同様の表現が可能です。
↓のようにチェックボックスで表現することも可能ですね。

image

(上のSQLでTOP 5って書いているので、上位5件しか出ていません。)

Secure Store Serviceの設定が必要になるのと、クライアントからSQLやストアドプロシージャを直接指定する必要はあるんですが、外部データに比べてかなり設定の負担が減りますね。ドロップダウンやリストで表示できるのも大きいです。外部データの方は現状不可能ですので。

また、よくあるシナリオですが、カテゴリを選択すると、それに従った商品のみが表示される、のような、いわゆるカスケードされたマスタ表示、そんなのも可能です。ちょっとやってみましょう。

SQL要求を2つ使用します。まずカテゴリの方の設定です。
こんな感じで、カテゴリテーブルをクエリして、値フィールドの方にCategoryIDを指定しておきます。

image

次に商品の方です。こんな感じでSQLにWHERE条件句を加えて、値は上で指定したカテゴリの選択結果を当てています。その為にカテゴリの方の値フィールドはCategoryIDにしたわけですね。(なおTOP 5は消し忘れた感じですので、本来は必要ありません。)

image

実行してみると、こんな感じです。カテゴリに飲み物を指定すると、飲み物だけが商品リストに表示されるようになります。

image

お菓子の時は、商品もお菓子のみが表示されますね。うーむ、便利だ。

image

次にWebの方です。

こちらは、 Rest形式のWebサービスを表示する機能です。
こんな感じの設定になります。値の特定にXPathを用いますので、JSON等で値が返ってくる場合は注意が必要です。

image

その辺HTTPのリクエストヘッダーで指定する場合も、ちゃんと設定が用意されていました!

image

これ、SharePointはRest形式のWebサービスで値を取得することもできますから、SharePointの色々な値をフォームに表示することも考えられますよね。(ユーザープロファイルなんかも行けるんじゃないですかね。未確認ですが。)後は、Dynamics CRM等の別製品の値なんかもかもありますよね。

こちらも、ドロップダウン(↓)、リスト、チェックボックス等、他と同様の表示が可能です。image

 

■これ以上は。。。

これでも対応できない場合になって、ようやくJavaScriptの出番になります。
実際の案件では、色々な要望要求があるので、JavaScriptの出番も少なくありませんが。

そうした、カスタマイズ、上記の外部データ列、Secure Store Service等の設定も弊社で行う事も可能です。もし、ご興味のある場合は、下記からお問い合わせいただければと思います。http://www.infoshare.co.jp/contact.php

この辺の話は、大好きなエリアなので、呼んでいただければ、いくらでもお話しちゃいますよー

では、今回はこのあたりで!