Magic xpiトレーニングテキスト
12. 演習3

12.1 見積照会フロー作成(トリガーモード)

【仕様】

  • クライアントから発行されたリクエストに対し、見積データを照会するフローを作成します。
  • DBから取得した情報をHTMLテンプレートに埋め込みクライアントに返します。
  • レコードが存在しなかった場合は、あらかじめ用意したHTMLファイルをクライアントに返します。

仕様

 

【HTTPサービスの登録】

  • メニュー > プロジェクト > 設定をクリックします。
  • 左ペインで「サービス」が選択されている状態で「追加」ボタンを押し、サービスを追加します。

HTTPサービスの登録

サービスタイプ HTTP
サービス名 HTTPTrigger

 

【HTTPサービスの登録】

  • 右ペインでサービスの詳細を設定します。
  • 「エンドポイント」ボタンを押し、エンドポイントの設定を行います。

HTTPサービスの登録

Webサーバ %MachineName%
別名(エイリアス)Alias %Alias%

 

【エンドポイント設定】

  • エンドポイントを追加し、引数(クライアントから受け取るパラメータ)を設定します。

エンドポイント設定

 

【ビジネスプロセスとフローの追加】

  • ビジネスプロセスを追加し、名前を「HTTP」とします。
  • 追加されたフロー名を「HTTPトリガーモード」に変更します。

ビジネスプロセスとフローの追加

 

【フロー変数】

  • 下記の通り、「HTTPトリガーモード」フローのフロー変数を追加します。

フロー変数

 

【HTTPトリガーの設定】

  • 「HTTPトリガーモード」フローをダブルクリックし、フローエディタを開きます。
  • ツールボックスからHTTPコンポーネントをトリガーエリアに貼り付けます。

HTTPトリガーの設定

 

【HTTPトリガーの設定】

  • 貼り付けたHTTPコンポーネントをダブルクリックし、以下のように設定します。

HTTPトリガーの設定

 

【レコード件数の取得】

  • データマッパーを用いて見積データの件数を取得します。
  • データマッパーをフローエリアにDrag&Dropし、名前を「レコード件数取得」とします。

レコード件数の取得

 

【送り元の設定】

  • データマッパーをダブルクリックし、送り元にDataBaseをDrag&Dropします。
  • 送り元のプロパティ「SQL文」に以下のSQLを設定し、レコード件数を取得します。
SELECT Count(*) as Count FROM MitsumoriHeader WHERE
MitsumoriNo = <?F.見積番号?>

送り元の設定

 

【送り先の設定】

  • 送り先にVariableをDrag&Dropし、「F.レコード件数」を選択します。

送り先の設定

 

【マッピング】

  • マッパ画面で以下のようにマッピングします。

マッピング

 

【HTMLの作成】

  • データマッパーで、見積ヘッダ、見積明細からデータを抽出します。
  • 抽出した値をテンプレートにマップし、クライアントに返すHTMLを作成します。
【テンプレート】

  • 予め定められたMagic xpi専用タグが埋め込まれたテキストファイル。
  • <!$MG_NAME>というタグがあった場合、「NAME」部分がマッパ画面に表示される。
  • <!$MGREPEAT><!$MGENDREPEAT>タグで繰り返し処理の実行が可能。

HTMLの作成

 

  • データマッパーをフローエリアにDrag&Dropし、名前を「HTML作成」に変更します。

データマッパーをフローエリアにDrag&Drop

 

【送り元の設定】

  • データマッパーをダブルクリックし、マッパ画面を表示します。
  • ツールボックスからデータベースを2つ、送り元にDrag&Dropし、それぞれ見積ヘッダテーブル、見積明細テーブルを検索します。

送り元の設定

 

【送り先の設定】

  • ツールボックスからTemplateを送り先にDrag&Dropします。
  • 下記のようにプロパティを設定します。

送り先の設定

テンプレートファイル Templates\RequestStatus.tpl
送り先タイプ Variable
変数 F.HTML結果

 

【マッピング】

  • マッパ画面で以下のようにマッピングします。

マッピング

 

【該当データがなかった場合の処理】

  • ファイル管理コンポーネントをDragし「レコード件数取得」ステップに重ねるようにDropし、ステップ名を「該当データなし」とします。

該当データがなかった場合の処理

 

【ファイルの読み込み】

  • ファイル管理コンポーネントをダブルクリックします。
  • Read Fileメソッドで、あらかじめ用意しておいた「RequestNotFound.htm」を読み込み、データが存在しなかった旨、ブラウザに返します。

ファイルの読み込み

ファイル名From EnvVal (‘currentprojectdir’)&’Templates\RequestNotFound.htm’
データ F.HTML結果

 

【条件の設定】

  • 各ステップのプロパティ > 条件にて分岐の条件を設定します。

条件の設定

 

【プロジェクトの実行】

  • ビルドを行い、Magicモニタでプロジェクトを開始します。
  • サンプルHTMLからリクエストを送信し、見積データが照会できることを確認します。
  • 存在しない見積番号を送信した場合は、データなしHTMLが表示されることを確認します。
  • 確認が終わったら、Magicモニタでプロジェクトを停止します。

プロジェクトの実行

サンプルHTML:プロジェクトフォルダ\Service\HTTPTrigger\Mitsumori.html

12.2 見積照会フローを呼出す(ステップモード)

【仕様】

  • HTTPサーバに対して、見積番号をパラメータとして送信します。
  • 結果をHTMLとして受け取り、Magicモニタ上に添付Blobとして表示します。

仕様

 

【リソースの設定】

  • プロジェクト > 設定よりHTTPリソースを追加します。

リソースの設定

URL http://localhost/Magicxpi4.13/MgWebRequester.dll?appname=IFSMagicxpiSample1&prgname=HTTP&arguments=-AHTTPTrigger%23Mitsumori

 

リソースタイプ HTTP
リソース名 HTTPServer

 

【フローの作成】

  • 「HTTP」ビジネスプロセスにフローを追加し、名前を「HTTPステップモード」とします。
  • フローのプロパティで「自動起動」をYesにします。

フローの作成

 

【フロー変数】

  • 下記の通り、「HTTPステップモード」フローのフロー変数を追加します。

フロー変数

 

【フローの遅延】

  • 「HTTPステップモード」フローをダブルクリックし、フローエディタを開きます。
  • ツールボックスから遅延コンポーネントをフローエリアにDrag&Dropします。

フローの遅延

 

  • 遅延コンポーネントをダブルクリックし、10秒遅延させます。

   ※1/10秒単位で指定するので、100と指定します。

遅延コンポーネントをダブルクリック

 

【なぜ「HTTPステップモード」フローの処理を遅延させるのか?】「HTTPステップモード」フローの処理

「MagicxpiSample1」プロジェクトを起動すると、
「HTTPトリガーモード」フローと「HTTPステップモード」フローは
ほぼ同時に起動します。

「HTTPトリガーモード」フローがHTTPリクエストを受け付ける準備が整う前に、
「HTTPステップモード」フローがHTTPリクエストを送信してしまうと、
HTTPリクエストを処理できない可能性があるので、後者のフローの開始を遅延させています。

 

【変数の値をセット】

  • ツールボックスからFlow DataコンポーネントをフローエリアにDrag&Dropします。

変数の値をセット

 

  • Flow Dataコンポーネントをダブルクリックし、設定画面を開きます。
  • 「F.見積番号パラメータ」の値に「MitsumoriNo=1」をセットします。

Flow Dataコンポーネントをダブルクリック

 

【HTTPリクエスト送信】

  • ツールボックスからHTTPコンポーネントをフローエリアにDrag&Dropします。

HTTPリクエスト送信

 

【HTTPリクエスト送信】

  • HTTPコンポーネントをダブルクリックし、設定画面を開きます。
  • 「POST」メソッドを追加して下記のように設定します。

HTTPリクエスト送信

データBLOB F.見積番号パラメータ
出力BLOB C.UserBlob

 

【アクティビティログにメッセージ出力】

  • ツールボックスからメッセージ保存コンポーネントをフローエリアにDrag&Dropします。

アクティビティログにメッセージ出力

 

【アクティビティログにメッセージ出力】

  • メッセージ保存コンポーネントをダブルクリックし、設定画面を開きます。
  • 下記のように設定します。

アクティビティログにメッセージ出力

 

【デバッグ】

  • プロジェクトデバッグを行い、Magicモニタのアクティビティログおよび添付Blobを確認します。
  • メニュー > デバッグxpi > デバッグ停止でデバッグを停止します。

デバッグ

 

確認が終わったら「HTTPステップモード」フローの自動起動プロパティを「No」に設定してください。