3.4 登録処理の作成
ここでは、入力されたデータを登録するための処理を作成します。ロジックフローを利用して、データの重複チェックや登録処理を定義します。
登録処理を作成する
資産登録処理を作成するため、あらかじめ配置されている「開始」と「終了」の制御要素の間にタスクを配置します。ロジックフローでは、実行したい処理をタスクとして配置し、それらを順番につなぐことで処理の流れを定義します。
- フロー作成の基本操作について、詳細は「ローコード操作マニュアル - ロジックフローの作成」を参照してください。
- フロー内に配置するエレメント(制御要素・タスク)の種類について、詳細は「ローコード操作マニュアル - IM-LogicDesignerのエレメント」を参照してください。
IDを生成する
資産テーブルへ新しいデータを登録するため、資産ごとに一意となる「資産ID」を生成します。生成したIDを後続の登録処理で利用するため、フロー内の変数を設定し、「変数操作」制御要素を使用して一時的に格納します。

Step 1. エレメントを配置する
操作手順
- IDを生成するエレメントを配置します。
- パレット:[基本]→[変数操作]をクリック
- 「変数操作」を選択した状態で、「開始」と「終了」の間にドラッグします。
- 「開始」と「変数操作」を線でつなげます。
└ 上下の端子同士をドラッグ&ドロップします。
「変数操作」は、フロー内で利用する変数に値を設定するための制御要素です。変数の初期化や、他のタスクで取得した値を変数へ格納する際に利用します。

Step 2. 変数を設定する
操作手順

- [変数設定]をクリックします。
- データ型で「文字列」を定義します。
- [string]をクリック
- 変数の名称を変更します。
- 「varAssetId」に変更→任意の箇所をクリック
- 入力状態に戻したい場合は、[キー名を変更]をクリック
- [決定]をクリックします。
変数の設定手順について、詳細は「ローコード操作マニュアル - 変数設定-基本操作」を参照してください。
- フロー内で利用する変数には、接頭辞として
varを付与しています。varは「variable(変数)」の略です。本チュートリアルでは、エンティティの項目名であるtmpAssetIdと区別しやすくするため、変数名をvarAssetIdとしています。 varAssetIdには、登録時に生成した資産IDを格納します。資産IDはIdentifier API を利用して生成されるため、varAssetIdのデータ型には「文字列」を設定します。Identifier API の仕様は、「IM-LogicDesigner仕様書 - 5.3.1.5.1. identifier」を参照してください。
Step 3. マッピングを設定する
操作手順

- 「変数操作」をクリックします。
- [マッピング設定]をクリックします。
- マッピング関数をマッピング設定ペインに追加します。
- プルダウンで「ID生成」内にある[identifier]を選択
- [関数を追加]をクリック
- 「identifier関数」と「変数
varAssetId」を線でつなぎます。 - [決定]をクリックします。
マッピング関数とは、マッピング設定で利用できる小規模な演算処理を行う関数のことです。ここでは、新しくIDを生成するidentifier関数を利用しています。詳細は「ローコード操作マニュアル - マッピング設定 > マッピング関数を利用する」を参照してください。
エンティティデータを取得する
登録処理を行う前に、生成した資産IDをもとに、同じ資産IDのデータが存在しないことを確認します。「エンティティデータの取得」タスクを配置し、生成した資産IDをもとに資産テーブルから対象データを取得します。取得した結果をもとに重複チェックを行い、データが存在しない場合のみ登録処理へ進みます。

Step 1. エレメントを配置する
操作手順
- エンティティデータを取得するエレメントを配置します。
- パレット:[IM-Repository]→[エンティティデータの取得]をクリック
- 「エンティティデータの取得」を選択した状態で、「変数操作」の下にドラッグします。
- 「変数操作」と「エンティティデータの取得」を線でつなげます。
└ 上下の端子同士をドラッグ&ドロップします。
「エンティティデータの取得」は、指定したキーに該当するエンティティの1件のデータを取得するためのタスクです。主に、特定のデータを参照する際に利用します。

- [検索]をクリックし、エンティティIDを指定します。
- 「資産(試作品)」エンティティを選択し、[決定]をクリックします。
└ 「確認」ダイアログで[決定]をクリックします。
エンティティを指定すると、前の処理で設定した変数の値をエンティティデータへ受け渡すためのマッピングを設定できるようになります。

Step 2. マッピングを設定する
操作手順

- 「エンティティデータの取得」をクリックします。
- [マッピング設定]をクリックします。
- 「変数
varAssetId」と「エンティティデータtmpAssetId」を線でつなぎます。 - [決定]をクリックします。
分岐条件を設定する
「エンティティデータの取得」で実施した重複チェックの結果をもとに、同じIDのデータが存在するかどうかによって処理を分岐する条件を設定します。ここでは、「分岐」制御要素を使用し、処理を分岐するための条件をEL式で記述します。

Step 1. エレメントを配置する
操作手順
- 分岐条件を設定するエレメントを配置します。
- パレット:[基本]→[分岐]をクリック
- 「分岐」を選択した状態で、「エンティティデータの取得」の下にドラッグします。
- 「エンティティデータの取得」と「分岐」を線でつなげます。
└ 上下の端子同士をドラッグ&ドロップします。

Step 2. 分岐条件を設定する
操作手順
重複チェックの対象となるエンティティデータtmpAssetIdに値が存在するかを判定する条件式(EL式)を設定します。
【設定する条件式】 ${im_repositoryGetEntityData1.tmpAssetId != null}
im_repositoryGetEntityData1:「エンティティデータの取得」タスクの実行結果を格納しているオブジェクトtmpAssetId:取得したエンティティデータのtmpAssetId項目を参照!= null:nullでない(値が存在する)ことを表す
<判定結果>
- true:同じ
tmpAssetIdを持つデータが存在する→重複あり→エラー終了 - false:同じ
tmpAssetIdを持つデータが存在しない→重複なし→次の処理へ進む

- [分岐]をクリックします。
- 「条件式(EL式)」の[編集]をクリックします。

- 「im_repositoryGetEntityData1」を開き、[tmpAssetId]をダブルクリックします。
- [ != ]をクリックします。
- 「null」と入力します。
- [決定]をクリックします。
EL式(Expression Language)とは、JSP2.0より導入された式言語の一つです。EL式の基本的な記述方法については、「IM-LogicDesigner仕様書 - 5.4. EL式」を参照してください。
エラー終了を設定する
分岐条件の判定結果がtrueの場合はエラーとして処理を終了するため、「終了」制御要素の返却値として定数trueを設定します。

Step 1. 定数を設定する
操作手順

- [定数設定]をクリックします。
- [定数を追加]をクリックします。
- 定数を設定します。
- 定数ID:TRUE
- 定数値:true
- [決定]をクリックします。
定数の設定手順について、詳細は「ローコード操作マニュアル - 定数設定」を参照してください。ここでは、ユーザが任意で定義できる「ユーザ定義定数」を設定しています。
Step 2. マッピングを設定する
操作手順

- 「分岐-then」と「終了」を線でつなげます。
└ 上下の端子同士をドラッグ&ドロップします。
エレメントは、デザイナ上で自由に配置を変更できます。また、[位置調整]をクリックすると、自動で等間隔に整列します。詳細は「ローコード操作マニュアル - ロジックフローの作成 > エレメントを移動する」を参照してください。
- [終了]をクリックします。
- [マッピング設定]をクリックします。

- 「定数
TRUE」と「出力値error」を線でつなぎます。 - [決定]をクリックします。
制御要素には、「終了」の他にも「エラー終了」があります。「エラー終了」は、データベースへの登録に失敗した場合や、必須データを取得できない場合など、処理を継続できないシステムエラーが発生した際に利用します。
本チュートリアルでは、業務エラーを判定するためにerrorフラグを利用しています。そのため、「エラー終了」制御要素は利用せず、「終了」制御要素で処理を終了し、呼び出し元でerrorフラグの値を確認してエラー判定を行います。
採番を取得する
資産管理番号を自動的に付与するため、ユーティリティの自動採番機能を利用します。まずアプリケーションに「自動採番」リソースを追加し、採番を定義した後、「採番取得」タスクを配置して採番結果を取得します。

Step 0. 事前準備
操作手順
自動採番定義を追加する前に、以下の内容を確認してください。
- 採番定義カテゴリが作成されていること
└ 「intra-mart環境の確認 > 採番定義カテゴリ」を参照してください。 - リソース管理表およびデータ項目管理表を参照できること
- └ 「アプリケーション管理」画面の[ドキュメント]タブをクリックすると、「資産管理アプリ(試作品)」というWikiファイルが表示されます。
- └ 各管理表の内容については、「1. アプリの生成 > アプリで使用するリソース名を決める」を参照してください。
Step 1. 自動採番定義を作成する
操作手順
自動採番定義を追加する
- 「アプリケーション管理」画面を表示し、[ユーティリティ]タブをクリックします。
- [リソースを追加]→[ユーティリティを新規作成]の順にクリックします。
- [自動採番]をクリックします。

自動採番の基本情報を設定する
- 「採番定義ID」に「tmp_asset_number」と入力します。
- 「採番定義名」に「資産採番(試作品)」と入力します。
- 採番定義カテゴリを選択します。
- [
]→「資産管理アプリ(試作品)」を選択
- 設定項目をクリックし、必要な情報を設定します。
└ データ項目管理表で決めた採番形式に合わせて設定します。- 「文字列」に「TMP」と入力
- 「日付形式」を追加し、「区切り文字」の下に移動
- 「日付形式」で[YYMMDD]を選択
- 「区切り文字」を追加し、「日付形式」の下に移動
- 「連番」の「表示桁数」で[4]を選択
- [新規作成]をクリックします。

自動採番定義では、「採番リセットスケジュール」を設定できるため、運用によっては同じ採番値が再度使用される可能性があります。そのため、本チュートリアルでは、一意にデータを識別するための「資産ID」を主キーとして使用し、「資産管理番号」とは別に管理しています。
Step 2. エレメントを配置する
操作手順
- 自動採番を取得するエレメントを配置します。
- ツールバー:[Accel Studio]→[採番取得]をクリック
- [採番取得]を選択した状態で、「分岐」の下にドラッグします。
- 「分岐」と「採番取得」を線でつなげます。
└ 上下の端子同士をドラッグ&ドロップします。

- [検索]をクリックし、採番定義IDを指定します。
- [資産採番(試作品)]を選択し、[決定]をクリックします。

変数にまとめて格納する
identifier関数で生成した「資産ID」、自動採番で取得した「資産管理番号」、それ以外の入力値を、後続の処理で利用するためにフローの変数へ格納します。ここでは、「変数操作」制御要素を使用して、各値を変数へ一時的に保持します。

Step 1. エレメントを配置する
操作手順
- 各値を一時的に格納するエレメントを配置します。
- ツールバー:[基本]→[変数操作]をクリック
- [変数操作]を選択した状態で、「採番取得」の下にドラッグします。
- 「採番取得」と「変数操作」を線でつなげます。
└ 上下の端子同士をドラッグ&ドロップします。
「変数操作」は、フロー内で利用する変数に値を設定するための制御要素です。変数の初期化や、他のタスクで取得した値を変数へ格納する際に利用します。

Step 2. 変数を設定する
操作手順

- [変数設定]をクリックします。
- IM-Repositoryからエンティティをインポートします。
- [IM-Repository]をクリック
- 「資産(試作品)」エンティティを選択し、[決定]をクリック
└ 「確認」ダイアログで[決定]をクリックします。
└ 変数にエンティティが追加されます。
- 変数の名称を変更します。
- [tmp_asset_entity]を選択し、[キー名を変更]をクリック
- 「varAssetEntity」に変更→任意の箇所をクリック
- [決定]をクリックします。
変数にIM-Repositoryのエンティティを利用する方法について、詳細は「ローコード操作マニュアル - 入出力・変数設定-応用操作 > IM-Repositoryのエンティティを利用する」を参照してください。
フロー内で利用する変数には、接頭辞としてvarを付与しています。varは「variable(変数)」の略です。本チュートリアルでは、エンティティ名であるtmp_asset_entityと区別しやすくするため、変数名をvarAssetEntityとしています。ただし、変数名として変更できるのはルートの変数名のみであり、配下の項目名は変更できません。これは、エンティティをもとに生成された変数がエンティティの構造を保持しているためです。
Step 3. マッピングを設定する
操作手順

- 「変数操作」をクリックします。
- [マッピング設定]をクリックします。
- IDを格納した「
varAssetId」と新しく設定した「varAssetEntity.tmpAssetId」を線でつなぎます。 - 「採番取得」の値を入力項目に追加します。
- プルダウンで[im_asGetAutoNumbering1]を選択
- [入力を追加]をクリック
- 「autoNumberingValue」と「
varAssetEntity.tmpAssetNumber」を線でつなぎます。 - 「tmpAssetId」および「tmpAssetNumber」以外の「入力値」と対応する「変数」を線でつなぎます。
- [決定]をクリックします。
エンティティデータを検証する
変数に格納した値をもとに、入力データの検証(バリデーション)を行います。「エンティティデータの検証」タスクを配置し、IM-Repositoryで設定した必須項目やデータ型などの制約に従って入力内容を確認します。

Step 1. エレメントを配置する
操作手順
- エンティティデータを取得するエレメントを配置します。
- パレット:[IM-Repository]→[エンティティデータの検証]をクリック
- [エンティティデータの検証]を選択した状態で、「変数操作」の下にドラッグします。
- 「変数操作」と「エンティティデータの検証」を線でつなげます。
└ 上下の端子同士をドラッグ&ドロップします。
「エンティティデータの検証」は、エンティティ定義に基づいて入力データの検証(バリデーション)を行うためのタスクです。データベースへ登録する前に、必須項目の入力漏れや不正な値がないかを確認するために利用します。

- [検索]をクリックし、エンティティIDを指定します。
- 「資産(試作品)」エンティティを選択し、[決定]をクリックします。
└ 「確認」ダイアログで[決定]をクリックします。
エンティティを指定すると、前の処理で設定した変数の値を検証対象のエンティティデータへ受け渡すためのマッピングを設定できるようになります。

Step 2. マッピングを設定する
操作手順

- 「エンティティデータの検証」をクリックします。
- [マッピング設定]をクリックします。
- 「変数
varAssetEntity」と「エンティティデータim_repositoryEntityDataValidation1」を線でつなぎます。 - [決定]をクリックします。
エンティティデータを登録する
入力データの検証後、問題がなければデータベースへ登録します。「エンティティデータの登録」タスクを配置し、検証済みのエンティティデータを資産テーブルへ登録します。

Step 1. エレメントを配置する
操作手順
- エンティティデータを登録するエレメントを配置します。
- パレット:[IM-Repository]→[エンティティデータの登録]をクリック
- [エンティティデータの登録]を選択した状態で、「エンティティデータの検証」の下にドラッグします。
- 「エンティティデータの検証」と「エンティティデータの登録」を線でつなげます。
└ 上下の端子同士をドラッグ&ドロップします。
「エンティティデータの登録」は、エンティティに対応するデータベースへ新しいデータを登録するためのタスクです。ここでは、検証済みの資産情報を資産テーブルへ登録します。

- [検索]をクリックし、エンティティIDを指定します。
- 「資産(試作品)」エンティティを選択し、[決定]をクリックします。
└ 「確認」ダイアログで[決定]をクリックします。
エンティティを指定すると、前の処理で設定した変数の値をエンティティデータへ受け渡すためのマッピングを設定できるようになります。

Step 2. マッピングを設定する
操作手順

- 「エンティティデータの登録」をクリックします。
- [マッピング設定]をクリックします。
- 「変数
varAssetEntity」と「エンティティデータim_repositoryEntityDataInsert1」を線でつなぎます。 - [決定]をクリックします。
フロー終了を設定する
最後に、正常終了時の処理を設定するため、「終了」制御要素を配置します。あらかじめ配置されていた「終了」制御要素はエラー終了時の処理で利用しているため、正常終了用の「終了」制御要素を新たに追加します。

操作手順
- フローを終了するエレメントを配置します。
- パレット:[基本]→[終了]をクリック
- [終了]を選択した状態で、「エンティティデータの登録」の下にドラッグします。
- 「エンティティデータの登録」と「終了」を線でつなげます。
└ 上下の端子同士をドラッグ&ドロップします。
「終了」は、フローの終了地点を示す制御要素です。処理がこの要素に到達すると、ロジックフローは終了します。

登録処理の作成が完了したら、[上書き保存]をクリックして設定内容を保存します。フローの保存方法について、詳細は「ローコード操作マニュアル - 新規ロジックフロー定義の保存 > ロジックフローを保存する」を参照してください。
