レコードリストからオブジェクトのアレイを生成するカスタムアクションの作成
ユーザーレコードリストからオブジェクトのアレイを生成します。スクリプトステップを使用してレコードリストを反復処理する方法について説明します。
始める前に
このタスクについて
- 部門レコードのアクション入力を作成します。
- 部門アクション入力の最大 3 つのユーザーレコードを検索します。
- ユーザーレコードリストを処理するスクリプトステップを設定します。
- ユーザーレコードリストを含むスクリプト入力変数を作成します。
- 空の連絡先アレイを作成するスクリプトを記述します。
- ユーザーレコードリストを反復処理するスクリプトを記述します。
- 連絡先オブジェクトを作成し、ユーザーレコードフィールドの値を連絡先オブジェクトにマッピングするスクリプトを記述します。
- 連絡先アレイに現在の連絡先オブジェクトを設定するスクリプトを記述します。
- 連絡先アレイと子連絡先オブジェクトのスクリプト出力変数を作成します。
- 連絡先オブジェクトをテンプレートとして保存します。
- 生成されたオブジェクトの連絡先アレイをデータピルとして出力します。
- サンプル部門でアクションをテストします。
手順
- オプション:
作業を保存するアプリケーションを作成します。
App Engine Studio を使用して、アプリケーションを計画、作成、および展開できます。カスタムアクションの構築に関する詳細については、「Building apps in App Engine Studio」を参照してください。たとえば、My Application というアプリケーションを作成します。
- 移動先 すべて > プロセス自動化 > ワークフロースタジオ.
- ホームページで、 [アクション] を選択します。
-
選択 新規 > アクション
[アクションプロパティ] ダイアログが表示されます。
-
次のサンプル値を入力します。
フィールド 値 名前 オブジェクトの連絡先アレイを作成 アプリケーション グローバル アクセス可能 すべてのアプリケーションスコープ 注:カスタムアクションを保存および展開するアプリケーションを作成した場合は、グローバルではなくそのアプリケーションを使用します。 -
[アクションを構築] を選択します。
ワークフロースタジオ インターフェイスが表示されます。
-
[アクションアウトライン] から、 入力 > 入力の作成
新しいアクション入力が表示されます。
-
次の値を使用してアクション入力を構成します。
フィールド 値 ラベル 部門 タイプ Reference.Department [Reference.cmn_department] 必須 True -
[アクションアウトライン] から [新しいステップを追加] を選択します。
利用可能なステップのリストが表示されます。
- [複数のレコードの検索] を選択します。
-
次の値を使用してステップを構成します。
フィールド 値 テーブル ユーザー [sys_user] 条件 [部門] [次の値に等しい] [アクション -> 部門] 注:[入力変数] から部門データピルを選択します。順番 名前 ソートタイプ a ~ z 結果の最大数 3 注:この例では、デモンストレーションの目的で [結果の最大数] の設定を 3 レコードに制限しています。 -
[アクションアウトライン] から [新しいステップを追加] を選択します。
利用可能なステップのリストが表示されます。
- [スクリプト] を選択します。
- [入力変数] セクションから [変数の作成] を選択します。
-
次の値を使用して入力変数を構成します。
フィールド 値 名前 userRecords 値 [ステップ ->「レコードの検索」ステップ -> ユーザーレコード] 注:[複数レコードのルックアップ] ステップでユーザーレコードデータピルを選択します。注:[ユーザーレコード] データピルは、データパネルまたは [データピルピッカー] ボタンから選択できます。 -
[スクリプト] に次のテキストを入力します。
(function execute(inputs, outputs) { //Create an empty array var contactsArray = []; var i = 0; //Iterate through the list of User records while(inputs.userRecords.next()) { //Create an empty object for each iteration var contactObject = {}; //Query User records to assign object values contactObject.first_name = inputs.userRecords.getValue('first_name'); contactObject.last_name = inputs.userRecords.getValue('last_name'); contactObject.email_address = inputs.userRecords.getValue('email'); //Add current object to array contactsArray[i] = contactObject; i += 1; } outputs.contacts = contactsArray; })(inputs, outputs); - [出力変数] から [変数の作成] を選択します。
-
次の値を使用してアクション出力を構成します。
Label (ラベル) 名前 タイプ 必須 contacts contacts Array.Object True - contacts の Array.Object を展開し、子オブジェクトの名前を contact に変更します。
-
contact オブジェクトの行から [子アイテムを追加] アイコン
を選択します。
-
次の値を使用して子アイテムを構成します。
ラベル 名前 タイプ 必須 名 first_name 文字列 True -
contact オブジェクトの行から [子アイテムを追加] アイコン
を選択します。
-
次の値を使用して子アイテムを構成します。
ラベル 名前 タイプ 必須 姓 last_name 文字列 True -
contact オブジェクトの行から [子アイテムを追加] アイコン
を選択します。
-
次の値を使用して子アイテムを構成します。
ラベル 名前 タイプ 必須 メールアドレス email_address 文字列 True - 連絡先オブジェクトの行から [詳細入力を切り替え] を選択します。
-
[詳細オプション] から [テンプレートとして保存] を選択します。
[テンプレートとして保存] ダイアログが表示されます。
-
[名前を入力] に「contact」と入力します。
- [Save (保存)] をクリックします。
- [アクションアウトライン] から、 出力 > 出力の作成.
-
次の値を使用してアクションアウトラインを構成します。
Label (ラベル) 名前 タイプ 必須 contacts contacts Array.Object True - 連絡先の Array.Object を展開します。
- 連絡先オブジェクトの行から [詳細入力を切り替え] を選択します。
-
[詳細オプション] から、 構造 > テンプレートから開始.
[テンプレート] が表示されます。
-
[テンプレート] で、以前に保存したテンプレートを選択します。
この例では、[Global: contact] を選択します。
-
[編集モードを終了] を選択します。
作成した出力フィールドが表示されます。
-
contacts の場合は、[ステップ -> スクリプトステップ -> contacts] を選択します。
注:スクリプトステップ contacts データピルは、データパネルまたは [データピルピッカー] ボタンから選択できます。
- [保存] をクリックします。
-
[テスト] を選択します。
[アクションのテスト] ダイアログが表示されます。
-
次のテスト値を入力します。
入力 値 部門 開発 -
[テストを実行] を選択します。
指定されたテスト値を使用してアクションが実行されます。
-
次を選択します:テストの実行が終了しました。(Your test has finished running.) アクションの実行の詳細を表示します。
アクション実行の詳細が表示されます。
-
アクションの出力データのランタイム値を確認します。
実行の詳細には出力データが JSON 形式の文字列として表示されますが、実際の出力データタイプはオブジェクトのアレイです。出力の文字列バージョンが必要な場合は、JSON クラスを使用してオブジェクトを文字列に変換できます。JSON オブジェクトを文字列に変換する方法の詳細については、「Scoped JSON - stringify(Object jsonObject)」を参照してください。この例では、連絡先オブジェクトには、開発部門の 3 人のユーザーの名、姓、およびメール情報を含む連絡先オブジェクトのアレイが含まれています。{ "contacts": "contact": [ { "email_address": "allyson.gillispie@example.com", "first_name": "Allyson", "last_name": "Gillispie" }, { "email_address": "alva.pennigton@example.com", "first_name": "Alva", "last_name": "Pennigton" }, { "email_address": "andrew.och@example.com", "first_name": "Andrew", "last_name": "Och" } ] } }