ValenceのWebサービス機能を利用すると、IBMiのRPGプログラムを利用して、簡単にIBMiのデータを返却するWebサービスが作成可能です。Tipsでは、Valence Webサービス機能の設定方法と、RPGプログラム例をご紹介いたします。
ValenceのWebサービス機能とは?
ValenceのWebサービス機能では、Valence RPG ToolkitのAPIを使用して、RPGプログラムで簡単にWebサービスを作成可能です。Webリクエストに対してJSONのデータ形式でレスポンスを返却することや、Webリクエストに対応するデータのcsvファイル、Excelファイルのストリームを返却すること、IFS上に存在するPDFファイルを返却する等、様々なレスポンスを返却することができます。
例えば、IBMiのライブラリに格納されているファイルの情報をJSON形式で返却できるため、独自に作成したWebアプリケーション等で、3層構造のファンクション層として利用することも可能です。
ValenceのWebサービス機能の作成方法
RPGプログラムのコピー
ValenceのWebサービス機能で使用するRPGは、あらかじめテンプレートのRPGプログラムが用意されています。
VALENCEライブラリに配置されているQRPGLESRCファイル内、「EXWEBSERV」と「EXWEBSERV2」です。
Webサービスを作成する場合は、「EXWEBSERV」または「EXWEBSERV2」をコピーしてRPGを作成します。
RPGプログラムの編集とコンパイル
コピーしたRPGプログラムを編集して機能を作成します。
Tipsでは、ファイルのデータをJSON形式で返却するRPGプログラム WEBSRV0010とファイルのデータをExcelファイルとしてダウンロードができる、WEBSRV0020を例として説明します。
JSONを返却するRPGプログラム:WEBSRV0010
RPGプログラム WEBSRV0010 のsendResponseプロシージャーを以下のように変更しました。
以下のRPGプログラムでは、パラメータ start(開始レコード) と limit(件数)を取得して、Valenceのサンプルファイル DEMOCMAST (サンプル顧客データ)の情報を、設定されたパラメータの件数分返却します。
p sendResponse b
d*
d pi
d STMT s 65535a varying
d mode s 1a
d*
/free
vvOut.startFrom =vvIn_num('start'); // starting point
vvOut.maxResults=vvIn_num('limit'); // number of records to retrieve
stmt='SELECT * FROM DEMOCMAST';
vvOut_execSqlToJson(vvOut:stmt);
/end-free
p e
Excelを返却するRPGプログラム:WEBSRV0020
RPGプログラム WEBSRV0020 の以下 RPGプログラムでは、DEMOCMASTファイルのデータをcustomerMaster.xlsx。
p sendResponse b
d*
d pi
d STMT s 65535a varying
/free
STMT = 'SELECT * FROM DEMOCMAST';
vvOut.download = '1';
vvOut.file = 'customerMaster.xlsx';
vvOut_execSqlToSS(vvOut:STMT);
/end-free
p e
ライブラリリストにVALENCEライブラリを追加して以下コマンドでRPGプログラムをコンパイルします。コンパイル前に、タイプをSQLRPGLEに設定してください。
例) VALENCE6QライブラリのWEBSRV0010 をコンパイル
CRTSQLRPGI OBJ(VALENCE6Q/WEBSRV0010) SRCFILE(VALENCE6Q/QRPGLESRC) SRCMBR(WEBSRV0010) COMMIT(*NONE) OBJTYPE(*PGM) RPGPPOPT(*LVL2) REPLACE(*YES)
例) VALENCE6QライブラリのWEBSRV0020 をコンパイル
CRTSQLRPGI OBJ(VALENCE6Q/WEBSRV0020) SRCFILE(VALENCE6Q/QRPGLESRC) SRCMBR(WEBSRV0020) COMMIT(*NONE) OBJTYPE(*PGM) RPGPPOPT(*LVL2) REPLACE(*YES)
ポータル管理 > Webサービスの設定
RPGプログラム作成後、Valenceポータル管理の「Webサービス」でサービスを登録します。
Valenceの「管理オプション」カテゴリー > 「ポータル管理」アプリを起動後、左側メニューの「Webサービス」をクリックしてください。
「Webサービス」の画面から、右下の「+アイコン」をクリックしてWebサービスを追加します。
次に、「Webサービスの追加」画面で 「URL」、「説明」、「プログラム」を設定します。
なお、Tipsでは未チェックに設定している「Partial URL Match Allowed」は「URL」に設定したURLが一部一致した場合でも、登録したプログラムを実行するためのオプション設定です。
「Webサービスの追加」画面で「URL」、「説明」、「プログラム」を設定後、「コンシューマを追加」のリンクをクリックしてください。
「コンシューマ」の設定画面では、「説明」、「環境」、「ユーザー」を設定してください。
設定後、「保存」ボタンをクリックすると、「Webサービスを追加」の画面に戻ります。
「コンシューマ」の一覧に、設定した「コンシューマ」が追加されていますので、「URLアイコン」をクリックしてください。
「URL」が表示されますので、コピーして記録しておいてください。
「OK」ボタンで「URL」のダイアログを閉じた後、右下の「保存」ボタンをクリックして「Webサービス」を登録します。
RPGプログラム「WEBSRV0020」についても、同様の手順で「Webサービス」に登録して「URL」をコピーして記録しておいてください。
Webサービス機能の実行
「コンシューマ」の設定時に取得した「URL」をブラウザのアドレスバーに張り付けて実行します。
「WEBSRV0010」RPGプログラムを呼び出す「Webサービス」を実行すると、DEMOCMASTファイルのデータがJSON形式で返却されます。
また、パラメータを設定することで、データを絞り込んで出力することも可能です。
また、「WEBSRV0020」RPGプログラムを呼び出す「Webサービス」を実行すると、DEMOCMASTファイルのデータがExcel形式で返却されます。
ブラウザのアドレスバーにURLを張り付けて実行することで確認していますが、もちろん、作成したWebアプリ等から呼び出すことが可能です。
おわりに
本Tipsでは、Webサービス機能を利用して、IBMiのファイルデータをJSON形式、Excel形式で返却する方法をご紹介しました。
ValenceのRPG Toolkitを使用することで、RPGプログラムを使用して簡単にWebサービス機能が作成できますので、是非ご活用ください。