intra-mart Accel Platform ローコード開発チュートリアルガイド 第16版 2024-06-28

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

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

このページの手順について、以下の動画からも確認できます。併せてご利用ください。

注意

動画は2023 Autumn(Hollyhock)環境で録画したものです。操作内容に大きな差はありませんが、アプリケーション管理画面など一部のUIに差異があります。

4.2.3.1. 登録処理の修正

「サイトマップ」→「Accel Studio」→「アプリケーション管理」→「アプリケーション一覧」の順に遷移します。
アプリケーション一覧から「【チュートリアル】ToDoアプリケーション」を選択します。
../../../_images/todo_logic_app_list.png

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

4.2.3.1.1. ToDoの登録処理の修正

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

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

「マッピング設定」ダイアログに配置された「identifier」のoutから「tutorial_todo_app_entity の登録」のidに対して線を繋げます。
../../../_images/todo_logic_insert1-2.png

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

アカウントコンテキストのuserCdと「tutorial_todo_app_entity の登録」の入力値のregistered_userを紐づけます。
../../../_images/todo_logic_insert1-4.png

同じようにアカウントコンテキストのuserCdと「tutorial_todo_app_entity の登録」の入力値のupdate_userを紐づけます。
../../../_images/todo_logic_insert1-5.png

これで、操作しているユーザのユーザコードが自動で「tutorial_todo_app_entity の登録」の入力値とする設定ができました。

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

セッション情報のsystemDateと「tutorial_todo_app_entity の登録」の入力値のregistered_dateを紐づけます。
../../../_images/todo_logic_insert1-7.png

同じようにセッション情報のsystemDateと「tutorial_todo_app_entity の登録」の入力値のupdate_dateを紐づけます。
../../../_images/todo_logic_insert1-8.png

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

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

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

もう一度「tutorial_todo_app_entity の登録」の「マッピング設定」ダイアログを表示し、ダイアログ上部の入力値選択欄から「定数」を選択して「+入力を追加」を選択します。
定数を追加したら、入力の「STATUS_WAITING」と「tutorial_todo_app_entity の登録」の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が設定されるようにしたため、不要な登録時の重複チェックを削除します。
「tutorial_todo_app_entity の取得」タスクを選択しDELETEキーを押し削除します。
../../../_images/todo_logic_insert2-1.png

「tutorial_todo_app_entity の取得」タスクが削除されました。
続けて、「im_repositoryGetEntityData1 != null」と表示されている「分岐」タスクと「終了」タスクを選択し、DELETEキーを押し削除します。
同様に、「tutorial_todo_app_entity の検証」タスクを選択し、DELETEキーを押し削除します。
../../../_images/todo_logic_insert2-2.png

「開始」タスクの「out」から「tutorial_todo_app_entity の登録」タスクの「in」まで線を繋げます。
これで、登録に関するロジックフローの修正は完了です。
画面上部の「保存」ボタンからロジックフローを保存してください。
../../../_images/todo_logic_insert2-3.png
3通りの保存方法がありますが、今回は「新しいバージョン番号を追加して保存する」を選択して、「決定」をクリックしてください。
次に、更新フローの修正を行います。

4.2.3.2. 更新処理の修正

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

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

登録と同様に更新者と更新日をアカウントコンテキストとセッション情報から設定します。
「tutorial_todo_app_entity の更新」タスクをダブルクリックし、「マッピング設定」ダイアログを表示します。
表示されたダイアログでは、入力の「tutorial_todo_app<imr_entity>」と「im_repositoryEntityDataUpdate1<imr_entity>」が紐づけられています。
../../../_images/todo_update1-1.png
これによりオブジェクト型データ「tutorial_todo_app<imr_entity>」のプロパティと、オブジェクト型データ「im_repositoryEntityDataUpdate1<imr_entity>」のプロパティは紐びつけられています。
ここから更新者と更新日の情報について設定していきます。
「マッピング設定」ダイアログ上部の入力値選択欄から「アカウントコンテキスト」を選択して「+入力を追加」を選択します。
../../../_images/todo_update1-2.png

アカウントコンテキストのuserCdと「tutorial_todo_app_entity の更新」の入力値のupdate_userを紐づけます。
../../../_images/todo_update1-3.png

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

セッション情報のsystemDateと「tutorial_todo_app_entity の更新」の入力値のupdate_dateを紐づけます。
../../../_images/todo_update1-5.png

注意

<object>型のマッピングとプリミティブ型のマッピングが混在した場合、マッピングを行った(線を引いた)順に処理が行われるため、一見、同一のマッピングに見えても動作が違うパターンが存在します。
<object>型の配下にプリミティブ型を配置するなど、階層化された値の定義をする際には、<object>型、プリミティブ型の順にマッピングを行う必要があります。
マッピング順に気を付けて操作してください。
これでマッピング設定は完了です。ダイアログ下部の「決定」をクリックしてダイアログを閉じます。
画面上部の「保存」ボタンからロジックフローを保存してください。
次のページでは、一覧画面での検索処理を作成します。