Magic xpiはIBMiのような企業内の基幹システムや各種アプリケーション、クラウドサービスをノーコーディングで連携・統合を可能とするシステム連携プラットフォームです。
今回Magic xpi設定例としてMagic xpiのHTTPトリガーを用い、WebサーバーへのURLリクエストを検知し、IBMiデータベースへ照会を行い、照会結果をjson形式で返す手順をご紹介いたします。リクエストを行うHTTPクライアント(RESTクライント)から見るとIBMiがRESTサーバーの振る舞いをします。
動画で解説
動作概要
①見積り内容照会をWeb越しに行います。例えば下図のようなWeb照会画面を作成し「見積もり番号」欄に照会したい見積もり番号を入力後、「見積照会」ボタンをクリックします。

「見積照会」ボタンをクリックすると②Magic xpi提供のWebサーバーに設定したエンドポイントである「mitumori」宛てに、照会したい見積り番号を意味する引数noに指定した見積り番号でリクエストをします。③Magic xpiはエンドポイント「mitumori」へのリクエストを監視しています。④リクエストを検知するとIBMiへ引数noに指定した見積もり番号でIBMiへSQLを投入し照会します。⑤照会結果をjson形式に変換し、返信(レスポンス)の準備とします。⑥レスポンスヘッダーを作成し、⑦照会結果を返信(レスポンス)します。

実際の設定では下図のように3つの手順となっています。①エンドポイント監視であるHTTPトリガーを配置し、②リクエストを検知した場合、データマッパーを用いIBMiへSQLを投入し、照会結果をjson形式に変換しています。③レスポンスヘッダーにはお約束のContent-Type: application/json; やcharset=utf-8、必要があればクッキーなど、ここで指定します。

以降は上記①~③設定解説です。
①エンドポイント監視
事前に監視対象のエンドポイントをプロジェクト-->設定-->サービスから作成します。今回はエンドポイント名を「mitumori」とし、照会する見積もり番号を意味する引数名noを指定しています。

HTTPトリガー自体の設定は下図のように、上記で設定したエンドポイント名「mitumori」を監視し、見積り照会番号を意味する引数名noの内容を変数C.UserStringに格納しています。次ステップの「②IBMiへSQL投入・・・」時に、このC.UserStringに格納した見積り照会番号で検索を行います。照会結果は次ステップの「②IBMiへSQL投入・・」で変数「C.UserBlob」に格納予定ですので、このHTTPトリガー戻値(リクエスト元へ返す照会結果)は「C.UserBlob」を指定しています。

②IBMiへSQL投入、結果をjsonへ変換
データマッパーで「送り元」としてIBMiデータベースから見積り照会をSQLで行い結果を「送り先」としてjson形式ファイルを指定しています。

IBMiへの見積り照会SQLは、GUIで操作可能なSQL作成ウイザードでWhere句にIBMiデータベーステーブルで見積り番号を意味するカラム名MITNOとHTTPトリガーで取得した照会したい見積り番号を格納している変数C.UserStringが一致するレコードを指定しています。

③ヘッダー情報の作成
HTTPヘッダーを作成するため、FlowDataアダプタを配置しました。

FlowDataアダプタを利用するには、変数の指定が必要なため、今回はF.RC_SetHTTPHeadersというLogicalタイプのフロー変数を事前定義しました。

FlowDataアダプタ自体の設定はアクション「Update」で先ほど定義したF.RC_SetHTTPHeadersを選択します。更新式ではヘッダーを作成する関数SetHTTPHeaders関数を使用します。

今回Content-Type: application/json、charset=utf-8、Set-Cookie: id=magicxpiをHTTPヘッダーに設定したいため
SetHTTPHeaders ('Content-Type: application/json; charset=utf-8,Set-Cookie: id=magicxpi',',')
のように設定しました。
関連リンク
お問合せ
https://alpcom.co.jp/contact/
アルファー・コミュニケーションズ公式YouTube
https://www.youtube.com/channel/UCTqwZsRRpAs9NPTUz2yH3ow/videos