intra-mart Accel Platform ローコード開発チュートリアルガイド 第7版 2022-09-30

5.3.2. アンケート一覧、登録処理の業務ロジックの作成

アンケートアプリケーションの管理画面の業務ロジックを作成します。
  • アンケート一覧取得処理
    アンケート情報テーブからアンケート一覧を取得します。
  • アンケート登録処理
    設定方法に合わせてアンケート情報テーブルとアンケート設問テーブルにデータを登録します。

5.3.2.1. アンケート一覧取得処理の作成

アンケート一覧取得処理では、アンケート情報テーブルからアンケートの一覧を取得します。
../../../_images/enquete_list_logic.png

5.3.2.1.1. ロジックの作成

アプリケーションに紐づく業務ロジックの作成は「アプリケーション管理」から行います。
アプリケーション管理から「【チュートリアル】アンケートアプリケーション」を選択します。
アプリケーション管理の「ロジック」タブ - 「ロジックリソースを追加」 - 「ロジックを新規作成」 - 「ロジックフロー」を選択し、ロジックフロー作成画面を表示します。
../../../_images/enquete_list_1.png

5.3.2.1.2. 入出力値の設定

業務ロジックの出力値を設定します。
一覧の取得は検索等を行わずに全てのアンケートを表示するため、出力値のみを設定します。
まずは、アンケート一覧を格納する配列を作成します。
「出力」 - 「+object」をクリックすると出力値一覧に「object1」が追加されるため、キー名を「records」と変更します。
配置した「records」を選択し、「配列型にする」を選択し、「records」を汎用オブジェクトの配列とします。
../../../_images/enquete_list_output_1.png
次に、アンケート情報を格納していく為の出力値を「records」配下に追加します。
出力値一覧の「records」を選択し、「配下に配置する」選択します。
「出力」 - 「+string」をクリックし「records」配下に、「string1」という値を追加して、キー名を「enquete_id」と変更します。
../../../_images/enquete_list_output_2.png
同様の手順で「records」の配下の変数が以下の値になるように設定してください。
開始、終了日は日付型でデータベースに格納されていますが、ユーザが表示しやすい形式に変換して返却するため、文字列で返却します。
項目 キー名
アンケートID string enquete_id
アンケートタイトル string enquete_title
開始日 string start_date
終了日 string end_date
../../../_images/enquete_list_output_3.png

出力値はJSON入力で以下を記載しても設定できます。
"records": [
  {
    "enquete_id": "",
    "enquete_title": "",
    "start_date": "",
    "end_date": ""
  }
]
JSON入力する場合は、出力値の「JSON入力」をクリックして「JSON入力画面」を表示してください。また、JSON形式での入力の際には型が上記の表と誤りが無いか注意してください。

5.3.2.1.3. アンケート一覧取得タスクの作成

アンケート情報テーブルからデータを取得するユーザ定義タスクを作成します。
パレットから「ユーザ定義追加」にカーソルを合わせ、「SQL定義新規作成」を選択します。
../../../_images/enquete_list_sql_1.png

ユーザ定義共通設定を以下のように設定します。
ラベル 入力値
ユーザ定義ID tutorial_enquete_list
ユーザ定義名(標準) 【チュートリアル】アンケート一覧
ユーザカテゴリ 【チュートリアル】チュートリアルガイドカテゴリ

クエリに以下のSQLを設定します。
SELECT
  enquete_id,
  enquete_title,
  start_date,
  end_date
FROM
  tutorial_enquete_info_app

「データ定義を取得する」をクリックし、タスクの出力値を設定します。
../../../_images/enquete_list_sql_2.png
登録ボタンをクリックし、タスクを登録します。

5.3.2.1.4. タスクの配置と変数設定

作成した「【チュートリアル】アンケート一覧」タスクをフローに配置し、線を繋げます。
パレットから「【チュートリアル】チュートリアルガイドカテゴリ」 - 「【チュートリアル】アンケート一覧」を選択し、「開始」タスクの下に配置します。
../../../_images/enquete_list_sql_task_1.png

「開始」、「終了」タスクのと「【チュートリアル】アンケート一覧」を線で繋げます。
../../../_images/enquete_list_sql_task_2.png

次に、配置したタスクの変数を設定していきます。
「終了」タスクを選択し、「マッピング設定」ダイアログを表示します。
../../../_images/enquete_list_sql_task_3.png

「tutorial_enquete_list1」を選択し、「+入力を追加」をクリックします。
ダイアログ左側の「tutorial_enquete_list1」の「enqueteId」と右側の「出力」の「enquete_id」、「enquete_title」と右側の「出力」の「enquete_title」を線でつなげます。
../../../_images/enquete_list_sql_task_4.png

次に、「開始日」を設定します。開始日は日付型で格納されており、そのままでは直感的に参照しやすい形式ではないため、「yyyy/MM/dd」の文字列に変換して返却します。
まずはフォーマットを定数で作成します。一度、決定ボタンをクリックしてマッピング設定を保存してください。
画面上部の「定数設定」をクリックして、定数設定ダイアログを表示します。
../../../_images/enquete_list_sql_task_5.png

「+定数を追加」をクリックし、以下の定数を追加し、決定ボタンをクリックして定数を保存します。
定数ID 定数値
FORMAT yyyy/MM/dd
../../../_images/enquete_list_sql_task_6.png

定数を保存したら再度「終了」タスクのマッピング設定を表示し、関数から「日付操作 > format」を選択し、「+関数を追加」で配置します。
../../../_images/enquete_list_sql_task_7.png

ダイアログ左側の「tutorial_enquete_list1」の「startDate」を「format」の「value」に、定数の「FORMAT」を「format」の「format」に、「format」の「out」を出力の「start_date」にそれぞれ線を繋げます。
../../../_images/enquete_list_sql_task_8.png

同様の手順で「endDate」のフォーマット設定を行い、決定ボタンをクリックしてマッピングを保存します。
../../../_images/enquete_list_sql_task_9.png

これで、アンケート一覧取得処理の作成は終了です。
画面上部の「新規保存」をクリックし、以下のように入力し、「決定」ボタンをクリックして、ロジックの登録を行います。
ラベル 入力値
フロー定義ID tutorial_enquete_list
ユーザ定義名(標準) 【チュートリアル】アンケート一覧取得
ユーザカテゴリ 【チュートリアル】チュートリアルガイドカテゴリ
../../../_images/enquete_list_sql_task_10.png

5.3.2.2. アンケート登録処理の作成

次に、アンケートを登録する処理を作成します。
アンケート登録処理では、渡されたアンケート情報をアンケート情報テーブルとアンケート設問テーブルに格納します。

5.3.2.2.1. ロジックの作成

アンケート情報取得と同様に、 アプリケーション管理のロジックタブ - 「ロジックリソースを追加」 - 「ロジックを新規作成」 - 「ロジックフロー」を選択し、ロジックフロー作成画面を表示します。
../../../_images/enquete_logic_create_1.png

5.3.2.2.2. 入出力値の設定

業務ロジックへの入力値を設定します。
アンケート登録処理は、アンケート情報とアンケートの設問を配列で受け取ります。出力値は設定しません。
入力値の設定を行います。
画面上部の「入出力設定」をクリックし「入出力設定」ダイアログを表示します。
「入力」 - 「+string」をクリックし、キー名を「enqueteId」と設定してください。
同様の手順で、以下の表に則ってアンケート情報を格納する入力値を設定します。
項目 キー名
アンケートID string enqueteId
アンケートタイトル string enqueteTitle
アンケート概要 string enqueteOverview
開始日 date startDate
終了日 date endDate
../../../_images/enquete_insert_input_1.png

次に、アンケートの設問情報を格納する項目を追加します。「入力」 - 「+object」をクリックし、キー名を「questionList」と設定してください。
追加した「questionList」を選択し、「配列型にする」を選択します。
「questionList」を選択し、「配下に配置する」にチェックを入れ、「questionList」配下に「question」、「leftScale」、「rightScale」をすべて文字列で追加します。
../../../_images/enquete_insert_input_2.png

入力値はJSON入力で以下を記載しても設定できます。
{
  "enqueteId": "",
  "enqueteTitle": "",
  "enqueteOverview": "",
  "startDate": null,
  "endDate": null,
  "questionList": [
    {
      "question": "",
      "leftScale": "",
      "rightScale": ""
    }
  ]
}
JSON入力する場合は、出力値の「JSON入力」をクリックして「JSON入力画面」を表示してください。また、JSON形式での入力の際には型が上記の表と誤りが無いか注意してください。

5.3.2.2.3. アンケート情報登録タスクの作成

入力内容に基づいてアンケート回答テーブルにデータを登録するユーザ定義タスクを作成します。
パレットから「ユーザ定義追加」にカーソルを合わせ、「SQL定義新規作成」を選択します。
ユーザ定義共通設定を以下のように設定します。
ラベル 入力値
ユーザ定義ID tutorial_enquete_info_insert
ユーザ定義名(標準) 【チュートリアル】アンケート情報登録
ユーザカテゴリ 【チュートリアル】チュートリアルカテゴリ
SQL定義のクエリ種別のプルダウンから「INSERT」を選択します。
「テーブルからクエリを生成する」をクリックし、テーブル検索ダイアログを表示します。
テーブル検索ダイアログで「tutorial_enquete_info_app」を選択し「クエリ生成」をクリックします。
../../../_images/enquete_insert_sql_1.png

SQL定義編集画面の入力値とクエリにそれぞれ以下のような値が自動で設定されます。
  • 入力値

    項目 キー名
    アンケートID string enqueteId
    アンケートタイトル string enqueteTitle
    アンケート概要 string enqueteOverview
    開始日 sqltimestamp startDate
    終了日 sqltimestamp endDate
  • クエリ

    INSERT INTO tutorial_enquete_info_app
      (enquete_id, enquete_title, enquete_overview, start_date, end_date)
    VALUES
      (/*enqueteId*/null, /*enqueteTitle*/null, /*enqueteOverview*/null, /*startDate*/null, /*endDate*/null)
    

「登録」ボタンをクリックし、タスクを登録します。

5.3.2.2.4. アンケート設問登録タスクの作成

続けて、入力内容に基づいてアンケート設問テーブルにデータを登録するユーザ定義タスクを作成します。
パレットから「ユーザ定義追加」にカーソルを合わせ、「SQL定義新規作成」を選択します。
ユーザ定義共通設定を以下のように設定します。
ラベル 入力値
ユーザ定義ID tutorial_enquete_question_insert
ユーザ定義名(標準) 【チュートリアル】アンケート設問登録
ユーザカテゴリ 【チュートリアル】チュートリアルカテゴリ
SQL定義のクエリ種別のプルダウンから「INSERT」を選択します。
「テーブルからクエリを生成する」をクリックし、テーブル検索ダイアログを表示します。
テーブル検索ダイアログで「tutorial_enquete_question_app」を選択し「クエリ生成」をクリックします。
../../../_images/enquete_insert_sql_2.png

SQL定義編集画面の入力値とクエリにそれぞれ以下のような値が自動で設定されます。
  • 入力値

    項目 キー名
    アンケートID string enqueteId
    設問ID string questionId
    設問番号 bigdecimal questionNo
    設問内容 string question
    左項目 string leftScale
    右項目 string rightScale
  • クエリ

    INSERT INTO tutorial_enquete_question_app
      (enquete_id, question_id, question_no, question, left_scale, right_scale)
    VALUES
      (/*enqueteId*/null, /*questionId*/null, /*questionNo*/null, /*question*/null, /*leftScale*/null, /*rightScale*/null)
    

「登録」ボタンをクリックし、タスクを登録します。

5.3.2.2.5. タスクの配置と変数設定

作成した「【チュートリアル】アンケート情報登録」タスクと「【チュートリアル】アンケート設問登録」タスクをフローに配置し、線を繋げます。
パレットから「【チュートリアル】チュートリアルガイドカテゴリ」 - 「【チュートリアル】アンケート情報登録」を選択し、開始の下に配置します。
../../../_images/enquete_insert_task_1.png
配置した「【チュートリアル】アンケート情報登録」の「in」と「開始」タスクの「out」を線で繋げます。
../../../_images/enquete_insert_task_2.png

次に、アンケートの設問登録処理を配置します。アンケートの設問は入力値として渡された設問数だけ繰り返して実行します。
パレットから「基本」 - 「繰り返し開始」を選択し、「【チュートリアル】アンケート情報登録」の下に配置します。「繰り返し」タスクは「繰り返し開始」と「繰り返し終了」タスクがセットで配置されます。
../../../_images/enquete_insert_task_3.png

続けて、「【チュートリアル】アンケート設問登録」タスクを「繰り返し開始」と「繰り返し終了」タスクの間に配置し、全てのタスクを線でつなぎます。
../../../_images/enquete_insert_task_4.png

次に、それぞれのタスクのマッピング設定を行います。
「【チュートリアル】アンケート情報登録」タスクを選択し、マッピング設定を表示します。
マッピング設定上で、左側の「入力」と右側の「tutorial_enquete_info_insert」の同じ値を線でつなげます。
../../../_images/enquete_insert_task_5.png

「決定」ボタンでマッピング設定ダイアログを閉じます。
「繰り返し開始」タスクを選択し、「タスク固有設定」の「繰り返し対象」 - 「選択」から「繰り返し対象の選択」ダイアログを表示します。
「入力 > questionList」を選択し決定ボタンをクリックします。
これで、入力値として渡されたquestionListの配列の長さだけ繰り返し「【チュートリアル】アンケート設問登録」が実行されます。
../../../_images/enquete_insert_task_6.png

続けて、「【チュートリアル】アンケート設問登録」を選択しマッピング設定を開きます。
「入力」の「enqueteId」と「tutorial_enquete_question_insert」の「 enqueteId」を線でつなぎます。
設問IDは自動設定とするため、関数から「identifier」を配置し、「tutorial_enquete_question_insert」の「questionId」を線でつなぎます。
../../../_images/enquete_insert_task_7.png

エイリアス一覧から「im_startLoop1」を選択し、「+入力を追加」を選択します。
../../../_images/enquete_insert_task_8.png

追加された「im_startLoop」の「item」配下の値と「tutorial_enquete_question_insert1」配下の同様の変数を線でつなぎます。
../../../_images/enquete_insert_task_9.png

最後に、「im_startLoop」の「index」と「tutorial_enquete_question_insert」の「questionNo」を線でつなぎ、決定ボタンをクリックしてマッピング設定を保存します。
../../../_images/enquete_insert_task_10.png

これで、アンケート設問登録処理の作成は終了です。
画面上部の「新規保存」をクリックし、以下のように入力し、「決定」ボタンをクリックして、ロジックの登録を行います。
ラベル 入力値
フロー定義ID tutorial_enquete_insert
ユーザ定義名(標準) 【チュートリアル】アンケート設問登録
ユーザカテゴリ 【チュートリアル】チュートリアルガイドカテゴリ
../../../_images/enquete_insert_task_11.png