- 基本情報
- 管理者向け
- RPA ワークフロー プロジェクト
- アプリ プロジェクト
- エージェンティック プロセス
- Agents
- Solutions (ソリューション)
- API ワークフロー
- テスト

Studio Web ガイド
Workday からワーカー階層を抽出する
次のチュートリアルでは、API ワークフローの主な機能を効果的に使用する方法について説明します。
- 入力スキーマと出力スキーマ
- コネクタ アクティビティ
- コネクタ HTTP アクティビティ
- JavaScript 式
- 応答を書式設定および変換する
- ワークフローを Orchestrator にパブリッシュする
Workday には、広範で機密性の高い従業員データが含まれています。API ワークフローを使用すると、特定の情報を抽出して変換できます。このチュートリアルでは、ワークフローは姓と名の要求に基づいて従業員の階層を取得します。

Workday への有効な接続が必要です。
- API ワークフローを作成します。
- データ マネージャーを開き、[名] プロパティと [姓] プロパティを入力として追加します。これらのプロパティは、後で
$workflow.inputオブジェクトを介して参照できます。 - コネクタを追加し、次の Workday (REST) アクティビティを使用するように設定します。 従業員を名前または ID で検索します。
- [ 検索文字列または ID ] フィールドで [式エディター] を開き、以下を書き込みます。
$workflow.input.firstName + " " + $workflow.input.lastName$workflow.input.firstName + " " + $workflow.input.lastName
- [ 検索文字列または ID ] フィールドで [式エディター] を開き、以下を書き込みます。

-
ワークフローをデバッグし、成功した応答を確認します。しかし、労働者はゼロでした。
-
[条件分岐 (if)] アクティビティを追加し、次のスニペットを [条件] として使用します。
$context.outputs.Workers_1.content.length <= 0$context.outputs.Workers_1.content.length <= 0 -
[条件分岐 (if)] アクティビティの [Then] 分岐に [応答] アクティビティを追加し、次のように設定します。
- タイプ - 失敗
- 詳細
{ "notFound": "No workers found for given input" }{ "notFound": "No workers found for given input" }
-
ワークフローを再度デバッグします。必要な入力を指定しなかったため、ワークフローは自動的にこの応答に進み、ワークフローのステータスが 「失敗」に設定されます。
-
次のペイロードで デバッグ構成 を定義します。
{ "firstName": "Betty", "lastName": "Liu" }{ "firstName": "Betty", "lastName": "Liu" } -
[出力スキーマ] の [コンテンツ] プロパティに結果が表示され始めるまで、ワークフローをデバッグします。

-
[条件分岐 (if)] アクティビティの [Else] 分岐に [繰り返し (コレクションの各要素)] アクティビティ>ループを追加し、次のように設定します。
- で—
$context.outputs.Workers_1.content$context.outputs.Workers_1.content - 項目名 - currentItem
- 結果の蓄積 - オン
- で—
-
[繰り返し (コレクションの各要素)] アクティビティの本体に、Workday (REST) コネクタ用の 3 つの Workday REST HTTP 要求アクティビティを追加します。
- Workday REST HTTP 要求 1: 直属の部下を検索する
- Workday REST HTTP 要求 2: 組織の詳細の検索
- Workday REST HTTP 要求 2: ピアを検索つまり、アクティビティはループ内のすべての従業員について、前述の詳細 (直属の部下、組織の詳細、ピア) を返します。
-
Workday REST HTTP 要求 1: 直属の部下を探すアクティビティを次のように設定します。
- メソッド - GET
- 要求 URL—
"/common/v1/uipath_dpt1/workers/" + $currentItem.id + "/directReports""/common/v1/uipath_dpt1/workers/" + $currentItem.id + "/directReports"
ここで、
uipath_dpt1/workersはサンドボックス定義の一部です。 -
[Workday REST HTTP 要求 2: 組織の詳細を検索] アクティビティを次のように設定します。
- メソッド - GET
- 要求 URL—
"/common/v1/uipath_dpt1/supervisoryOrganizations/" + $currentItem.primaryJob.supervisoryOrganization.id"/common/v1/uipath_dpt1/supervisoryOrganizations/" + $currentItem.primaryJob.supervisoryOrganization.id
ここで、
uipath_dpt1/supervisoryOrganizationsはサンドボックス定義の一部です。 -
[Workday REST HTTP 要求 3: ピアを検索] アクティビティを次のように設定します。
- メソッド - GET
- 要求 URL—
"/common/v1/uipath_dpt1/supervisoryOrganizations/" + $currentItem.primaryJob.supervisoryOrganization.id + "/workers""/common/v1/uipath_dpt1/supervisoryOrganizations/" + $currentItem.primaryJob.supervisoryOrganization.id + "/workers"
ここで、
uipath_dpt1/supervisoryOrganizationsはサンドボックス定義の一部です。 -
ワークフローを再度デバッグします。ワークフローは、これら 3 つの HTTP 要求に対して (最初のアクティビティの結果の数に基づいて) 指定された回数だけ正常にループします。
-
[繰り返し (コレクションの各要素)] アクティビティの本体で、前の 3 つの Workday REST HTTP 要求アクティビティの後に [スクリプト] アクティビティを追加します。
-
[スクリプト] アクティビティを設定するには、[式エディター] で Autopilot ジェネレーターを使用して次のプロンプトを指定します。
前の 3 つのアクティビティから、3 つのオブジェクトを作成します。オブジェクト 1 は「manager」であり、記述子を name として、person.email email として返す必要があります。オブジェクト 2 は 3 番目の http 要求からのピアであり、すべての結果をループし、記述子を "name" として、primaryworkemail を "email" として返す必要があります。最後に、すべての最初の http 結果とレポート名 (記述子) と primaryworkemail を email としてループするオブジェクト "reports" を追加します。
生成される JavaScript コードは次のようになります。
return { // Details on the worker manager: { name: $currentItem.descriptor, email: $currentItem.person.email }, // Details for their peers peers: $context.outputs.Workday_REST_HTTP_Request_1.content.data.map(peer => ({ name: peer.descriptor, email: peer.primaryWorkEmail })).filter(peers => peers.name !== $currentItem.descriptor), // Filter out the employee itself, // Details for their direct reports reports: $context.outputs.Workday_REST_HTTP_Request_3.content.data.map(report => ({ name: report.descriptor, email: report.primaryWorkEmail })) }return { // Details on the worker manager: { name: $currentItem.descriptor, email: $currentItem.person.email }, // Details for their peers peers: $context.outputs.Workday_REST_HTTP_Request_1.content.data.map(peer => ({ name: peer.descriptor, email: peer.primaryWorkEmail })).filter(peers => peers.name !== $currentItem.descriptor), // Filter out the employee itself, // Details for their direct reports reports: $context.outputs.Workday_REST_HTTP_Request_3.content.data.map(report => ({ name: report.descriptor, email: report.primaryWorkEmail })) } -
[繰り返し (コレクションの各要素)] ループの外に [応答] アクティビティを追加し、次のように設定します。
- タイプ - 成功
- 詳細
$context.outputs.For_Each_1.results ```This step instructs the workflow to return the complete list of results generated by the **For Each** loop.$context.outputs.For_Each_1.results ```This step instructs the workflow to return the complete list of results generated by the **For Each** loop.
-
ワークフローをエンドツーエンドでデバッグします。実行が成功し、応答スキーマがニーズを満たす必要があります。
-
ワークフローが正常に実行されたとき の出力 スキーマを生成します。
- [実行結果] パネルの [出力] セクションに移動します。
- [ クリップボードにコピー] を選択します。
- [データ マネージャー] パネルの [出力] セクションに移動します。
- [ ペイロードから生成] を選択します。
- [出力] > [実行] 出力からコピーした出力を貼り付けます。
API ワークフローに入力スキーマと出力スキーマが含まれるようになり、プラットフォームをまたいで呼び出せるようになりました。
- API ワークフローを Orchestrator にパブリッシュします。