メインコンテンツまでスキップ

登録処理フローの作成

ここでは、登録処理を考える際の基本的なフローと設定について紹介します。

基本編:画面に入力されたデータを検証して、マスタ情報に登録する

登録処理の基本は、画面から入力されたデータをマスタ情報(データベース)に登録することです。画面の入力項目とロジックフローを通して、データベースとどのように連携するかを意識しながら設定を進めていきましょう。

参考

このケースは、Accel Studioの「マスタメンテナンス」テンプレートの登録処理フローをもとに説明しています。実際の画面や設定などを確認したい場合は、「ローコード開発チュートリアルガイド - 4.2.2. テンプレートからアプリケーションのベースを作る」を参照し、アプリケーションを生成してください。


Step 1 画面とデータベースのやり取り

画面の入力項目がデータベースに登録されるまでの流れを整理します。登録処理では、以下のポイントを意識して設計・実装を進めると効果的です。

  • 二重登録の防止:登録前に既存データを確認し、重複していれば登録処理を終了する
  • 登録処理の最適化:不要なデータベースアクセスを減らし、システム負荷を軽減する
  • データの正確性確保:登録前に入力データの検証を行い、不正確なデータの登録を防止する

コラム

登録画面の作成方法については、「 【参考】画面コンテンツの基本設計 - 登録・編集・参照画面の作成」を参照してください。


Step 2 入出力値と定数の定義

フロー内の処理で利用する値をそれぞれ設定します。

  • 入出力設定:フロー実行時に受け取る入力値と実行後に返す出力値を定義
  • 定数設定:フロー全体で共通で使用する固定値(定数)を定義

入出力設定

入力値(ロジックフローが処理を開始するために必要なデータ)と出力値(処理が完了した際に生成されるデータ)を設定します。ここでは、「データ定義」リソースに保存されているエンティティtutorial_todo_appを入力値として使用しています。出力値には、重複しないデータのみを返す動作を行う値duplicateを指定します。

参考

定数設定

フロー全体で利用する固定値として定数を設定します。ここでは、「エンティティの取得」で、すでに同じキーのデータが存在している場合、重複している=登録不要という判定になります。そのため、TRUEは「重複あり」というフラグとして扱います。

Step 3で定数と出力値をマッピングすることで、duplicateTRUEなら「登録せず終了」と判断できます。この定数は、重複データを検知して登録処理をスキップするためのシグナルとして利用できます。

参考

定数設定の操作手順を確認したい場合は、「定数設定」を参照してください。


Step 3 ロジックフローの作成

Step 1の内容をもとに、登録処理を行うロジックフローを作成します。左側にあるパレットから必要なエレメントを配置します。

No.パレット種別エレメント名説明設定
1.基本(制御要素)開始ロジック処理の起点で、画面から入力された値を受け取る
2.IM-Repository(タスク)エンティティデータの取得入力値をもとに、すでに対象のデータが存在するかどうか確認するマッピング設定1
3.基本(制御要素)分岐データが存在する場合:処理をせず終了(→6.)
データが存在しない場合:登録処理へ進む(→4.)
条件式の設定  
4.IM-Repository(タスク) エンティティデータの検証 登録前の最終チェックを行う
(入力値の不備や外部キー制約などの違反など)
マッピング設定2
5.IM-Repository(タスク)エンティティデータの登録 検証済みのデータをエンティティ(データベース)に登録する(→7.)マッピング設定3
6.基本(制御要素)終了2出力結果(フラグ「重複あり」 )を返して終了マッピング設定4
7.基本(制御要素)終了1ロジック処理の終点
参考

マッピング設定1 - 「エンティティデータの取得」

「エンティティデータの取得」タスクでは、指定したキーに一致するエンティティの1件分のデータを取得します。ここでは、取得条件となるキーとして、入力側とエンティティ側のidをマッピングします。

参考

上記タスクのプロパティや入出力値については、「IM-LogicDesigner仕様書 - 5.2.1.18.1. エンティティデータの取得」を参照してください。

条件式の設定 - 「分岐」

「分岐」制御要素では、処理を分岐させるための条件をEL式で記述します。
ここでは、「エンティティデータの取得」タスクの出力値im_repositoryGetEntityData1を条件式の対象とし、この値がnullの場合にBoolean型の結果を返すように設定します。

条件式:${im_repositoryGetEntityData1!=null}

参考

EL式の詳細とIM-LogicDesignerでの利用例については、「IM-LogicDesigner仕様書 - 5.4. EL式」を参照してください。

マッピング設定2 - 「エンティティデータの検証」

「エンティティデータの検証」タスクでは、必須項目に対する入力データの検証(バリデーション)を行います。ここでは、入力側のtutorial_todo_appを、エンティティ側のim_repositoryEntityDataValidationにマッピングします。

参考

上記タスクのプロパティや入出力値については、「IM-LogicDesigner仕様書 - 5.2.1.18.7. エンティティデータの検証」を参照してください。

コラム

「エンティティデータの検証」では、IM-Repositoryの辞書項目に制約条件が設定されている場合、必須項目のチェックに加えて、制約条件への適合確認も行います。辞書項目の制約については、「辞書項目の詳細設定 > 制約を設定する」を参照してください。

マッピング設定3 - 「エンティティデータの登録」

「エンティティデータの登録」タスクでは、データベースに新しいデータを登録します。ここでは、入力側のtutorial_todo_appを、エンティティ側のim_repositoryEntityDataInsertにマッピングします。

参考

上記タスクのプロパティや入出力値については、「IM-LogicDesigner仕様書 - 5.2.1.18.4. エンティティデータの登録」を参照してください。

マッピング設定4 - 「終了2」

「終了2」制御要素では、「エンティティデータの取得」タスクの結果(対象のidが存在する)を受けて、処理を終了します。ここでは、定数のTRUE(重複あり)というフラグを、出力値のduplicateにマッピングします。

このロジックフローは、登録処理の基本形で、エンティティデータとの連携処理に最適です。既存データを確認して二重登録を防ぎながら、必要な場合のみ新規登録を行います。具体的には、以下のようなユースケースが考えられます。

  • 出退勤管理:すでに打刻されていれば処理をスキップし、未打刻の場合のみ記録する
  • 日報登録:1日1件のみ日報の登録を許可する
  • ユーザの初回アクション:初回操作時のみ特定レコードを登録する

この基本構成をもとに、さまざまなシナリオを想定しながら活用してみましょう。


応用編:画面に入力された複数のデータを順に検証し、登録する

登録処理の基本形を理解した上で、次は応用編となるロジックフローを確認してみましょう。このフローでは複数件のデータに対してループ処理を行いながら、1件ずつ検証・登録を進めていきます。

応用編では、詳細な設定内容の説明は省略しますが、各エレメントがどのような役割で配置されているのかを確認しておきましょう。

No.パレット種別エレメント名説明
1.基本(制御要素)開始ロジック処理の起点で、外部から入力された値を受け取る
2.基本(制御要素)変数操作入力値の初期化やループ用の配列変数、インデックス、カウンタなどを設定する
3.IM-Repository(タスク)エンティティデータの検証(ループ前)繰り返し処理に入る前に、共通のデータチェックを行う
4.IM-Repository(タスク)エンティティデータの登録(ループ前)ループ対象とは別の共通情報(親レコードなど)を先に登録する
5.基本(制御要素)フロー呼び出し外部ロジックフローを呼び出して、サブ処理を行う
6.基本(制御要素)繰り返し開始リスト型の入力に対して、各要素を1件ずつ処理する
7.IM-Repository(タスク)エンティティデータの検証(ループ内)各要素に対し、必要な入力値の有無やデータ型などをチェックする
8.IM-Repository(タスク)エンティティデータの登録(ループ内)検証済みのデータをエンティティ(データベース)に登録する
9.基本(制御要素)繰り返し終了繰り返し処理を終了する
10.基本(制御要素)終了ロジック処理の終点で、必要に応じて出力を返す
参考

このフローは、Accel Studioの「サンプルアプリケーション」テンプレートにある「顧客管理」テンプレートの「登録処理」フローをもとに説明しています。実際の画面や設定を確認したい場合は、「Accel Studioテンプレートカタログ - 5.2.5. 顧客管理」を参照し、アプリケーションを生成してください。