ネストされたリスト内のデータへのアクセス
リスト内の個々の項目を独自のデータ オブジェクト変数に抽出して、データを取得または設定できます。これは、ネストされたリスト内のデータにアクセスする場合に特に役立ちます。
次の例では、注文控え帳の合計コストを取得し、顧客とそれぞれの顧客に関する注文を取得して、各注文内のそれぞれの注文に関する項目を取得してから、項目あたりのコストを累計に追加します。
注文控え帳の合計コスト (すべての項目のコストの合計) を取得するには、最初に各顧客をループして顧客ごとの注文を取得し、注文ごとにそれぞれの注文の項目を取得してから、項目ごとのコストを累計に追加する必要があります。
この例には、3 つのネストされた配列があります。
-
OrderBook (オブジェクト)
-
customerList []
-
currentOrders []
-
items []
-
-
-
customerList 内でループする場合は、各注文を抽出して注文を currentOrders データ モデルにマッピングし、次に別のループを追加して注文内の項目をループし、項目を items データ モデルに抽出する必要があります。ネストされたループの最終結果で、すべての項目の合計が取得されます。
TotalAgility でこれを実現するには、次の手順を実行します。
データ モデルの作成
次のフィールドを使用してデータ モデルを作成します。
![例: 反復データにアクセスするデータ モデル 例: 反復データにアクセスするデータ モデル](../../All_Images/KTA/ExampleAccessRepeatingDataModel.png)
フィールド | タイプ |
---|---|
ID | 数値 |
name | テキスト |
isComplete | ブール値 |
customerList | リスト |
cutomerList 内のフィールド | |
ID | 数値 |
name | テキスト |
address | テキスト |
currentOrders | リスト |
currentOrders 内のフィールド | |
ID | 数値 |
receivedDate | 日付 |
items | リスト |
items 内のフィールド | |
ID | 数値 |
name | テキスト |
price | 数値 |
プロセス マップの作成
Order Book Processing という名前のプロセス マップを作成します。
変数の追加
次の変数を Order Book Processing マップに追加します。
名前 | タイプ | 値 |
---|---|---|
現在の注文 |
データ オブジェクト | currentOrders |
現在の注文が見つかる |
ブール | False |
顧客 |
データ オブジェクト | customerList |
顧客の検出 |
ブール | false |
合計 |
小数 | 0 |
現在の注文インデックス |
Short | 1 |
顧客インデックス |
Short | 1 |
項目インデックス |
Short | 1 |
項目 |
データ オブジェクト | Items |
項目の検出 |
ブール | False |
注文控え帳 |
データ オブジェクト | Order Book |
ノードの追加
指定した構成を持つ Order Book Processing マップに、次のノードを追加します。
![例: 反復データにアクセスするためのマップ 例: 反復データにアクセスするためのマップ](../../All_Images/KTA/ExampleAccessRepeatingDataMap.png)
ノード タイプ | 名前 | 構成 |
---|---|---|
RESTful サービス | 注文控え帳の取得 |
[URL パラメータ]: 1 [動詞]: GET [タイプ]: JSON [応答タイプ]: 変数 [値]: Order Book |
ループ | 各顧客 |
このループ ノードは、Order Book.customersList をループするためのものです。 [複合変数]: Order Book.customerList [現在のインデックス]: 顧客インデックス [更新されたインデックス]: 顧客インデックス [行の検出]: 顧客の検出 [返す]: 上位レベル [変数メンバー]: customerList 列を 顧客 プロセス変数にマップします。 |
判断 | 顧客の検出 |
[条件テキスト]: 顧客の検出 プロセス変数を選択します。 [結果] > [True パス]: 現在の注文の初期化 アクティビティ |
式 | 現在の注文の初期化 |
[目標変数]: 現在の注文インデックス [説明]: インデックスを 1 に初期化して、各顧客の現在の最初の注文から処理を開始します [式]: 1 |
ループ | 現在の各注文 |
このループ ノードは、OrderBook.currentOrders をループするためのものです。 [複合変数]: customer.currentOrders [現在のインデックス]: 現在の注文インデックス [更新されたインデックス]: 現在の注文インデックス [行の検出]: 現在の注文が見つかる [返す]: 上位レベル [変数メンバー]: currentOrders 列を 現在の注文 プロセス変数にマップします。 |
判断 | 現在の注文が見つかる |
[条件テキスト]: 現在の注文の検出 プロセス変数を選択します。 [結果] > [True パス]: 項目の初期化 アクティビティ |
式 | 項目の初期化 |
[目標変数]: 項目インデックス [説明]: インデックスを 1 に初期化して、顧客の現在の各注文の先頭項目から処理を開始します [式]: 1 |
ループ | 各項目 |
このループ ノードは、items をループするためのものです。 [複合変数]: 現在の注文.items [現在のインデックス]: 項目インデックス [更新されたインデックス]: 項目インデックス [行の検出]: 項目の検出 [返す]: 上位レベル [変数メンバー]: items 列を 項目 プロセス変数にマップします。 |
判断 | 項目の検出 |
[条件テキスト]: 項目の検出 プロセス変数を選択します。 [結果] > [True パス]: 合計の計算 アクティビティ |
式 | 合計の計算 |
各項目 ループ ノードでこの式ノードを実行するたびに、現在の注文.items 変数値が 合計 変数に追加され、項目の合計コストが取得されます。 [目標変数]: 合計 [説明]: このメンバーには、すべての項目価格の総計が保持されます [式]: 合計 (プロセス変数) + item.price (プロセス変数) |
通常アクティビティ | レポートの公開 | [入力変数]: 合計 |
終了 | 終了 | [イベント タイプ]: デフォルト |