Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


IBMiのRPGでWebサービスを作成 (Valence Webサービス機能)

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 Webサービス用のテンプレートRPG

VALENCEライブラリに配置されているQRPGLESRCファイル内、「EXWEBSERV」と「EXWEBSERV2」です。

Webサービスを作成する場合は、「EXWEBSERV」または「EXWEBSERV2」をコピーしてRPGを作成します。

RPGプログラムの編集とコンパイル

コピーしたRPGプログラムを編集して機能を作成します。

Valence Webサービス用の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に設定してください。

Valence Webサービス用のテンプレート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サービス」でサービスを登録します。

ポータル管理 > Webサービス

Valenceの「管理オプション」カテゴリー > 「ポータル管理」アプリを起動後、左側メニューの「Webサービス」をクリックしてください。

ポータル管理 > Webサービス > コンシューマを追加

「Webサービス」の画面から、右下の「+アイコン」をクリックしてWebサービスを追加します。
次に、「Webサービスの追加」画面で 「URL」、「説明」、「プログラム」を設定します。
なお、Tipsでは未チェックに設定している「Partial URL Match Allowed」は「URL」に設定したURLが一部一致した場合でも、登録したプログラムを実行するためのオプション設定です。

「Webサービスの追加」画面で「URL」、「説明」、「プログラム」を設定後、「コンシューマを追加」のリンクをクリックしてください。

ポータル管理 > Webサービス > コンシューマを追加 URLの取得

「コンシューマ」の設定画面では、「説明」、「環境」、「ユーザー」を設定してください。
設定後、「保存」ボタンをクリックすると、「Webサービスを追加」の画面に戻ります。
「コンシューマ」の一覧に、設定した「コンシューマ」が追加されていますので、「URLアイコン」をクリックしてください。

ポータル管理 > Webサービス > コンシューマを追加 保存

「URL」が表示されますので、コピーして記録しておいてください。
「OK」ボタンで「URL」のダイアログを閉じた後、右下の「保存」ボタンをクリックして「Webサービス」を登録します。

RPGプログラム「WEBSRV0020」についても、同様の手順で「Webサービス」に登録して「URL」をコピーして記録しておいてください。

Webサービス機能の実行

「コンシューマ」の設定時に取得した「URL」をブラウザのアドレスバーに張り付けて実行します。

Valence Webサービス実行結果 JSON形式で返却

「WEBSRV0010」RPGプログラムを呼び出す「Webサービス」を実行すると、DEMOCMASTファイルのデータがJSON形式で返却されます。
また、パラメータを設定することで、データを絞り込んで出力することも可能です。

また、「WEBSRV0020」RPGプログラムを呼び出す「Webサービス」を実行すると、DEMOCMASTファイルのデータがExcel形式で返却されます。

Valence Webサービス実行結果 Excel形式で返却

ブラウザのアドレスバーにURLを張り付けて実行することで確認していますが、もちろん、作成したWebアプリ等から呼び出すことが可能です。

Webサービス機能からダウンロードしたExcelファイルの内容

おわりに

本Tipsでは、Webサービス機能を利用して、IBMiのファイルデータをJSON形式、Excel形式で返却する方法をご紹介しました。
ValenceのRPG Toolkitを使用することで、RPGプログラムを使用して簡単にWebサービス機能が作成できますので、是非ご活用ください。