スマートに複数レコードを作成する画面フロー


経緯

  • 画面フロー内での入力値取得処理が冗長的になってしまうため、カウンターを使用してループで画面コンポーネントの値を取得する方法のメモとして記載。

完成した画面フロー


[操作手順]
1. オブジェクトの作成数を入力
2. 各項目の値を入力
3. [次へ]ボタン押下時にオブジェクトを作成

完成フロー図

作成方法

画面フローコンポーネントを配置

完成した画面フローを参考とし「テキスト」項目、「数値」項目、「チェックボックス」を複数作成する

画面コンポーネント
- レコード作成数
選択リスト -> API参照名: "objMaxCnt", [1, 2, 3]

- セクション1 -> コンポーネントの表示を設定: [1 以上 objMaxCnt]
[入力]テキスト -> API参照名: "Name1"
[入力]数値 -> API参照名: "Number1"
[入力]チェックボックス -> API参照名: "Obsolete1"

- セクション2 -> コンポーネントの表示を設定: [2 以上 objMaxCnt]
[入力]テキスト -> API参照名: "Name2"
[入力]数値 -> API参照名: "Number2"
[入力]チェックボックス -> API参照名: "Obsolete2"

- セクション3 -> コンポーネントの表示を設定: [3 以上 objMaxCnt]
[入力]テキスト -> API参照名: "Name3"
[入力]数値 -> API参照名: "Number3"
[入力]チェックボックス -> API参照名: "Obsolete3"

コンポーネントを動的に参照するにはAPI参照名を"〇〇〇1"と末尾に半角数字の連番を記載する必要がある

リソースの作成

テキストテンプレートおよび変数の作成

カウンタ変数を作成

リソース 名前 データ型 デフォルト値
変数 objCnt 数値 1

レコード作成用変数とレコードリスト作成用変数を作成

リソース 名前 データ型 コレクション
変数 record レコード FALSE
変数 recordList レコード TRUE

カウンタを使って画面コンポーネントのAPI参照名を生成するテキストテンプレートを作成

リソース 名前 本文 説明
テキストテンプレート template_Name {!Name{!objCnt}} テキスト項目(Name?)のAPI参照名生成
テキストテンプレート template_Number {!Number{!objCnt}} 数値項目(Number?)のAPI参照名生成
テキストテンプレート template_Obsolete {!Obsolete{!objCnt}} チェックボックス項目(Obsolete?)のAPI参照名生成

数式を使用してAPI参照名から画面コンポーネントの入力値を参照

  • デフォルトのテキストテンプレートの値は以下のようになっている。
リソース  名前
変数 objCnt 1 
テキストテンプレート template_Name <p>Name1</p>
テキストテンプレート template_Number <p>Number1</p>
テキストテンプレート template_Obsolete <p>Obsolete1</p>
  • カウンタがプラスされるたび、テキストテンプレートが画面コンポーネントの次のセクションの項目のAPI参照名を生成する仕組みになっている。
  • この状態では<p>タグが邪魔なため<p>タグを削除する数式を作成する
リソース 名前 数式
数式 Name テキスト SUBSTITUTE(SUBSTITUTE({!tmplate_name}, "</p>", ""), "<p>", "") 
数式  Number_text テキスト SUBSTITUTE(SUBSTITUTE({!template_Number}, "</p>", ""), "<p>", "") 
数式  Obsolete_text テキスト SUBSTITUTE(SUBSTITUTE({!template_Obsolete}, "</p>", ""), "<p>", "") 
  • テキスト型以外の項目を別の対象の型に変更
リソース 名前 数式
数式  Number 数値 VALUE(SUBSTITUTE({!Number_Text}, ",", "")) 
数式  Obsolete Boolean IF({!Obsolete_Text} == "true", true, false) 
  1. テキスト型以外の項目は、テキスト型で取得する数式と対象のデータ型で取得する数きに分ける必要がある。
  2. テキストの数値にはカンマ[”,”]を削除する処理を記載する必要がある。

数式の演算子と関数についてのHelpは下から↓↓↓↓

要素の配置と設定

完成フロー図を参考に以下の順番で要素を作成すれば完成!

No 要素 名前 処理概要
1 割り当て 単一レコード作成 [record]の各項目に「Name」「Number」「Obsolete」を割り当て
2 割り当て レコードリスト追加 [recordList]に[record]を追加
3 割り当て カウントアップ [objCnt]に1を追加
4 決定 ループ条件 [objCnt]が[objMaxCnt]以上の場合[レコードを作成