• 文字サイズ変更
  • S
  • M
  • L

FAQのNo.から検索


  • No : 35740
  • 公開日時 : 2024/04/30 08:18
  • 印刷
DSServista

DataSpider 活用事例 ~【DataSpider】HTTPトリガー実行時、HTTPクライアント側に実行中のメッセージを出力する~

HTTPトリガーは HTTPリクエストで発火するため、スクリプトが終了しレスポンスが返却されるまでは、HTTPクライアント側は待ち状態となります。
 
しかしながら、レスポンスが返却されるまでの間、スクリプトが実行中であることがわかるよう実行元のブラウザ上にメッセージを表示したい場合などが考えられます。
 
本 FAQ では、上記の実装方法の一例をご紹介します。
※本FAQの画像は DataSpider Servista のデスクトップ版 Studio のものです。
カテゴリー : 

回答

【処理のイメージ】
まずトリガーA で実行したスクリプトA から「スクリプト実行中」のメッセージを表示するための HTML を返します。
その HTML から JavaScript でトリガーB を発火させ、実際に処理を実行するスクリプトB の実行結果を返します。
 
【画面遷移イメージ】
・HTTPトリガーA 実行開始時
・スクリプトB 終了時
 
【スクリプトの完成イメージ】
・プロジェクトの構成
・スクリプトA
 
・スクリプトB
 
 
【スクリプト、トリガーの作成手順】
 
1. スクリプトB を作成
 スクリプトB は実際の処理を実行するメインのスクリプトです。
 
 (1) 文字列型スクリプト出力変数を作成します。
 (2) [HTML データ生成] 処理で、レスポンスとなる HTML を作成します。
   スクリプト実行終了後に表示したいメッセージや結果データを記述します。
   ここでは例として、下記の HTML を作成しています。
   
   -----------
   <html>
    <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    </head>
    <body>
     <table>
     //スクリプト実行後に表示したいメッセージや結果データ//
     </table>
    </body>
   </html>
   -----------
 
 (3) [変数代入] 処理で、「(2)」で作成した HTML のコンポーネント変数
   html_data を「(1)」のスクリプト出力変数にマッピングします。
 (4) [待機] 処理で 3秒待機するよう設定します。
   ※サンプルスクリプト実行時に「スクリプト実行中」のメッセージが
   表示されることを確認するため、[待機] 処理としています
 (5) スクリプトB をサービス登録します。
 
2. トリガーB を作成
 「1.」で作成したスクリプトB を実行するための HTTPトリガーを作成します。
 ここでは実行パスを「/b」とします。
 スクリプト出力変数の [値] には HTTPトリガー変数「${trigger.outputData}」を設定します。
 トリガーの設定画面に自動表示されるスクリプト起動用の URL を取得します。
※ DataSpider Cloud の場合、Studio でトリガーを設定した後に、
連携サーバにHTTPトリガー情報を設定する必要があります。
詳細は本FAQの「■DataSpider Cloud の HTTPトリガー設定について」をご確認ください。
3. スクリプトA を作成
「スクリプト実行中」のメッセージを表示するための HTMLを作成するスクリプトです。
 
 (1) 文字列型スクリプト出力変数を作成
 (2) [HTML データ生成] 処理で、レスポンスとなる HTML を作成します。
   ここではメッセージを表示しトリガーB を実行する リクエストを生成するため、以下のような内容で記述します。
   
   「<スクリプトB を実行するHTTPトリガーのURL>」の部分には、
   「2.」で取得したスクリプト起動用の URL を設定します。
   
   -----------
   <html>
    <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <title>HTTPトリガー実行時にメッセージを表示</title>
    </head>
    <body>
     <script type="text/javascript">
     var url = "<スクリプトB を実行するHTTPトリガーのURL>";
     var request = new XMLHttpRequest();
     request.onreadystatechange = function() {
       var READYSTATE_COMPLETED = 4;
       if(this.readyState == READYSTATE_COMPLETED) {
         var htmltext = this.responseText;
         document.getElementById("respText").innerHTML = htmltext;
       }
     }
     request.open("GET", url, true);
     request.send()
     </script>
     <div id="respText">スクリプト実行中</div>
    </body>
   </html>
   ----------- 
 
 (3) [変数代入] 処理で、「(2)」で作成した HTML のコンポーネント変数
   html_data を「(1)」のスクリプト出力変数にマッピングします。
 (4) スクリプトA をサービス登録します。
 
4. トリガーA を作成
 「3.」で作成したスクリプトA を実行するための HTTPトリガーを作成します。
 ここでは実行パスを「/a」とします。
 スクリプト出力変数の [値] には HTTPトリガー変数「${trigger.outputData}」を設定します。
 トリガーの設定画面に自動表示されるスクリプト起動用の URL を取得します。
 ※ DataSpider Cloud の場合は、「2.」と同様に連携サーバへ HTTP トリガー情報の設定を行ってください。
 
5. 実行結果の確認
「4.」で取得したスクリプト起動用の URL を指定してブラウザからリクエストを実行し、
  ブラウザ上で実行結果を確認します。
 
■DataSpider Cloud の HTTPトリガー設定について
DataSpider Cloud では、Studio でトリガーを設定した後に、連携サーバにHTTPトリガー情報を設定する必要があります。詳細は下記ヘルプをご参照ください。
・[フロント画面メニュー]-[連携サーバ管理]-[HTTPトリガー情報]
・[機能詳細]-[HTTPトリガー/Webサービストリガー]
 
■補足
上記でご紹介した方法のほかに、Ajax を利用して実装するといった方法も考えられます。
また、 HTTP クライアント側で処理を作り込めば、ブラウザに返却したメッセージを基に次の処理を実施するなど、処理の幅が広がります。お客様のご要件に合わせて実装をご検討ください。
 
 
参考情報
▼ DataSpider Servista ヘルプ
・[HTTPトリガー]
・[HTMLデータ生成処理]
・[ドキュメントMapper/変数Mapper]
・[待機処理]
 
▼ DataSpider Cloud ヘルプ
・[HTTPトリガー]
・[HTMLデータ生成処理]
・[ドキュメントMapper/変数Mapper]
・[待機処理]
 
目的別で検索
設定