intra-mart Accel Platform ローコード開発チュートリアルガイド 第9版 2022-12-21

4.2.3. 登録、更新処理の修正

テンプレートからデータベース、IM-LogicDesigner の業務ロジック、IM-BloomMakerの画面が自動生成されました。
テンプレートから作成した業務ロジックでは、テンプレート作成時に設定したテーブル定義の項目をすべて画面上で入力して登録します。
このままでは、IDや登録者、登録日など、自動で反映してほしい要素までユーザが自分で入力し登録する必要があるため、IM-LogicDesigner の業務ロジックを修正します。
なお、マスタメンテナンステンプレートでは、詳細画面表示用の業務ロジックとタスクの削除用の業務ロジックも作成されますが、本チュートリアルでは特に修正は加えません。
アプリケーションの全体図だと、以下の色が塗られた箇所が対象です。
../../../_images/todo_logic_overall.png

このページの手順については、以下で動画による解説も行っています。併せてご利用ください。

4.2.3.1. 登録処理の修正

アプリケーション一覧から「【チュートリアル】ToDoアプリケーション」を選択します。
../../../_images/todo_logic_app_list.png

アプリケーション詳細のアプリケーション構成情報で「ロジック」のタブを選択します。
「【チュートリアル】ToDoアプリケーション 登録処理」を選択します。
IM-LogicDesigner の編集画面が表示されます。

4.2.3.1.1. ToDoの登録処理の修正

IM-LogicDesigner 上でToDoの登録処理を修正します。
まずは、ToDoの登録処理の一部パラメータを自動で登録できるようにします。
「【チュートリアル】ToDoアプリケーション INSERT」タスクをダブルクリックし、「マッピング設定」ダイアログを表示します。
「【チュートリアル】ToDoアプリケーション INSERT」はデータベースに対して入力値を登録するINSERT文を実行するタスクです。
自動作成された「【チュートリアル】ToDoアプリケーション INSERT」は設定したテーブルの全ての項目が入力値として設定されています。
入力値と出力値を繋いでいる矢印を選択し、 ld_mapping_path_delete をクリックしてこの入力の紐づけを削除します。
../../../_images/todo_logic_input.png

まずは、IDを自動で設定するように修正します。
「マッピング設定」ダイアログ上部の関数プルダウンを選択し、ID生成から「identifier」を選択し「+関数を追加」をクリックして関数を配置します。
../../../_images/todo_logic_insert1-1.png

「マッピング設定」ダイアログに配置された「identifier」のoutから「【チュートリアル】ToDoアプリケーション INSERT」のidに対して線を繋げます。
../../../_images/todo_logic_insert1-2.png

「identifier」関数はAPI Identifierを利用して、一意となるIDを発行します。これで、IDを手入力することなく自動で割り振れるようにできました。
次に、登録者、登録日、更新者、更新日のような基本情報を自動設定させます。
登録のタイミングなので、登録者と更新者、登録日と更新日はそれぞれ同じ値を設定します。
まずは登録者を操作ユーザとするために、アカウントコンテキストを設定できるようにします。
「マッピング設定」ダイアログ上部の入力値選択欄から「アカウントコンテキスト」を選択して「+入力を追加」を選択します。
../../../_images/todo_logic_insert1-3.png

アカウントコンテキストのuserCdと「【チュートリアル】ToDoアプリケーション INSERT」の入力値のregistered_userを紐づけます。
../../../_images/todo_logic_insert1-4.png

同じようにアカウントコンテキストのuserCdと「【チュートリアル】ToDoアプリケーション INSERT」の入力値のupdate_userを紐づけます。
../../../_images/todo_logic_insert1-5.png

これで、操作しているユーザのユーザコードが自動で「【チュートリアル】ToDoアプリケーション INSERT」の入力値とする設定ができました。

次に、登録日と更新日を操作しているタイミングの時間とします。
操作しているタイミングの時間はセッション情報のsystemDateを利用します。
「マッピング設定」ダイアログ上部の入力値選択欄から「セッション情報」を選択して「+入力を追加」を選択します。
../../../_images/todo_logic_insert1-6.png

セッション情報のsystemDateと「【チュートリアル】ToDoアプリケーション INSERT」の入力値のregistered_dateを紐づけます。
../../../_images/todo_logic_insert1-7.png

同じようにセッション情報のsystemDateと「【チュートリアル】ToDoアプリケーション INSERT」の入力値のupdate_dateを紐づけます。
../../../_images/todo_logic_insert1-8.png

これで、登録日と更新日を操作している日時の自動設定ができました。

次に、本チュートリアルでは操作ユーザのToDoを登録するため、担当者を操作しているユーザにします。
登録者、更新者と同様にアカウントコンテキストからユーザを設定します。
アカウントコンテキストのuserCdと「【チュートリアル】ToDoアプリケーション INSERT」の入力値のmanagerを紐づけます。
../../../_images/todo_logic_insert1-9.png

次に、statusはタスク登録時には必ず未着手のため定数を設定します。
まず、マッピング設定画面で「決定」をクリックして現在の設定を保存します。
「定数設定」をクリックして「定数設定」ダイヤログが表示されたら「+定数を追加」を選択します。
「定数ID」には「STATUS_WAITING」、「定数値」には「waiting」を入力します。
../../../_images/todo_logic_insert1-10.png

もう一度「【チュートリアル】ToDoアプリケーション INSERT」の「マッピング設定」ダイアログを表示したら定数の「STATUS_WAITING」とstatusを紐づけます。
../../../_images/todo_logic_insert1-11.png

これで自動で設定したい項目の設定が完了しました。

その他の変数を以下のように設定します。
入力の「title」、「detail」、「category」、「importance」、「deadline」をそれぞれ同名の入力値と紐づけます。
../../../_images/todo_logic_insert1-12.png

4.2.3.1.2. 不要な処理の削除

IDを自動で一意のIDが設定されるようにしたため、不要な登録時の重複チェックを削除します。
「【チュートリアル】ToDoアプリケーション SELECT」タスクを選択しDELETEキーを押し削除します。
../../../_images/todo_logic_insert2-1.png

「【チュートリアル】ToDoアプリケーション SELECT」タスクが削除されました。
同様に、「count != 1」と表示されている「分岐」タスクと「終了」タスクを選択し、DELETEキーを押し削除します。
../../../_images/todo_logic_insert2-2.png

「開始」タスクの「out」から「【チュートリアル】ToDoアプリケーション INSERT」タスクの「in」まで線を繋げます。
これで、登録に関するロジックフローの修正は完了です。
画面上部の「保存」ボタンからロジックフローを保存してください。
次に、更新フローの修正を行います。

4.2.3.2. 更新処理の修正

更新処理の修正を行います。
更新処理では登録者と登録日情報を更新する必要はありません。そのため、更新処理からは登録者と登録日を更新しないようにし、その他の情報のみを更新するように修正します。
アプリケーション詳細のアプリケーション構成情報で「ロジック」のタブを選択します。
「【チュートリアル】ToDoアプリケーション 編集処理」を選択します。
IM-LogicDesigner の編集画面が表示されます。

4.2.3.2.1. 更新タスクの修正

更新時には、登録者と登録日は更新する必要がないため、更新されないように修正します。
「【チュートリアル】ToDoアプリケーション UPDATE」を選択し、画面右側のユーザ定義編集からSQL定義編集ダイアログを呼び出します。
../../../_images/todo_update2-0.png

入力値の「registered_user」を選択し、「削除」をクリックして削除します。
../../../_images/todo_update2-1.png

同様に、入力値の「registered_date」も削除します。
続けて、SQLからも登録者と登録日を削除します
SQL定義のクエリから以下を削除し、「更新」ボタンをクリックしてユーザ定義を更新します。
"registered_user" = /*registered_user*/'',
"registered_date" = /*registered_date*/'2000-01-01',

なお、削除後のクエリは以下の通りです。
UPDATE
  "tutorial_todo_app"
SET
  "title" = /*title*/'',
  "detail" = /*detail*/'',
  "category" = /*category*/'',
  "importance" = /*importance*/'',
  "status" = /*status*/'',
  "manager" = /*manager*/'',
  "deadline" = /*deadline*/'2000-01-01',
  "update_user" = /*update_user*/'',
  "update_date" = /*update_date*/'2000-01-01'
WHERE
  "id" = /*id*/''
;

4.2.3.2.2. 更新者情報の自動設定

登録と同様に更新者と更新日をアカウントコンテキストとセッション情報から設定します。
まずは更新者を操作ユーザとするために、アカウントコンテキストを設定できるようにします。
入力値と出力値を繋いでいる矢印を選択し、 ld_mapping_path_delete をクリックしてこの入力の紐づけを削除します。
../../../_images/todo_update1-0.png

「マッピング設定」ダイアログ上部の入力値選択欄から「アカウントコンテキスト」を選択して「+入力を追加」を選択します。
../../../_images/todo_update1-1.png

アカウントコンテキストのuserCdと「ToDoアプリ_UPDATE」の入力値のupdate_userを紐づけます。
../../../_images/todo_update1-2.png

これで、操作しているユーザのユーザコードが自動で「ToDoアプリ_UPDATE」の入力値とする設定ができました。
次に、更新日を操作しているタイミングの時間とします。
操作しているタイミングの時間はセッション情報のsystemDateを利用します。
「マッピング設定」ダイアログ上部の入力値選択欄から「セッション情報」を選択して「+入力を追加」を選択します。
../../../_images/todo_update1-3.png

セッション情報のsystemDateと「ToDoアプリ_UPDATE」の入力値のupdate_dateを紐づけます。
../../../_images/todo_update1-4.png

その他の変数を以下のように設定します。
入力の「id」、「title」、「detail」、「category」、「importance」、「status」、「manager」、「deadline」をそれぞれ同名の入力値と紐づけます
../../../_images/todo_update1-5.png

これで、更新処理の修正は終了です。
画面上部の「保存」ボタンからロジックフローを保存してください。
次のページでは、一覧画面での検索処理を作成します。