- はじめに
- UiPath Agents の利用を開始する
- LangGraph を使用した UiPath Agents の利用を開始する
- Studio Web でローコード エージェントを構築する
- UiPath エージェントにツールを追加する
- Getting Started with UiPath Maestro Flow
フローを構築する
VS Code を使用して、6 つのノードのそれぞれを追加して設定することで、価格ウォッチ フローを構築します。
手順 1 でプロジェクトのスキャフォールディングが完了したので、基本的な構成要素について説明し、残りの 5 つのノード、3 つのトリガー入力、フローの 1 つの出力変数を追加します。
このチュートリアルの残りの部分では、「下流」と「上流」という用語を使用しますので、よく理解しておく必要があります。
- 上流: フローの実行パスで、特定のノードの前にあるノードです。ノードのアップストリーム ノードは、ノードが依存するすべてのものであり、その出力はノードにフィードされ、実行する前に完了する必要があります。
- 下流: フローの実行パスで特定のノードの後に続くノードです。ノードの下流ノードは、ノードに依存するすべてのノードであり、その出力を使用し、障害、変更、または再実行時に影響を受けます。
ノード ID の名前を変更する方法
このチュートリアルでは、このチュートリアルのほとんどの手順で、生成されたノード ID 値の名前を変更して、読みやすくします。fetchRate1 というノードの機能は、 よりも理解しやすいhttpRequest1。ノードは label と IDで構成されます。
同じ labelのノードを複数持つことができますが、各 ID は一意である必要があります。新しいノードを追加する場合、 ID の既定値は、ノードの種類に 1 から始まる数字を付加した値です。たとえば、最初の終了ノードの種類を追加すると、 ID は end1 になり、2 つ目の終了ノードの種類は end2になります。ノードのlabelを変更しても、IDは更新されません。
ノードの ID を変更する手順は次のとおりです。
- キャンバスでノードを選択すると、その上にインライン ツールバーが表示されます。
- 鉛筆を選択し、[ 編集] を選択します。
- [ 詳細設定 ] タブを開くと、[ ID ] フィールドが読み取り専用フィールドとして表示され、その横に [ ノード ID の名前を変更] 鉛筆ボタンが表示されます。
- その鉛筆を選択すると、[ ノード ID の名前を変更 ] ダイアログが開き、 新しい ID の入力が表示されます。
- 新しい ID を入力し、[ 名前を変更] を選択します。
このダイアログには、IDフィールドの名前を変更する際に必要な更新の詳細が含まれます。例: 「3 つの参照が更新されます」、「2 つの接続」、「他のノードの 1 つの式」など。[ 名前を変更 ] オプションは、値に変更を加えるまで無効化されたままになり、その後、表示されているすべての参照が更新されます。
手順 2 - フローを構築する
次に、プライスウォッチワークフローを一度に1ノードずつ構築します。VS Code で PriceWatch/PriceWatch.flowを開く と、キャンバスに start という名前の [手動トリガー] ノードが 1 つ表示されます。
手順 2.1 - トリガーの入力を宣言する
フランクフルト API 呼び出しで使用する開始トリガー ノードに 3 つの入力を追加する必要があります。baseCurrencyは、quoteCurrencyから現在の為替レートが必要な値で、alertThresholdはアラートを下回る値です。これら 3 つの入力を追加してみます。
-
キャンバス上で [ 手動トリガー ] ノードを選択します。
-
「編集」ボタンでノードのプロパティを開きます。
-
[
+ Add input argument] ボタンを使用すると、種類がString、既定値がUSDのbaseCurrencyを追加できます。 -
[
+ Add input argument] ボタンを使用すると、種類がString、既定値がEURのquoteCurrencyを追加できます。 -
[
+ Add input argument] ボタンを使用すると、種類がNumber、既定値が0.9のalertThresholdを追加できます。 -
下の図と比較して、3 つの入力変数をすべて追加したことを確認します。
手順 2.2 - HTTP 要求ノードを追加する
HTTP ノードの種類は、フランクフルター API を呼び出し、3 つのトリガー入力変数を使用して為替レート データを取得するために使用されます。次の手順で作成します。
-
[手動トリガー] ノードの出力ハンドルの [+ ] を選択します。
-
ノード パレットで [HTTP 要求 ] を検索して選択します。
-
「編集」ボタンで新しいノードのプロパティを開きます。
-
ノードの [ラベル] を
Fetch rateに設定します。 -
IDフィールドの名前をhttpRequest1からfetchRate1に変更します。 -
プロパティ パネルで、[ 認証 ] を [手動認証] のまま にします。
-
[ HTTP メソッド ] を
GETに設定します。 -
URL を
https://api.frankfurter.dev/v2/ratesに設定します。 -
[ クエリ パラメーター] セクションで、
+ Add pairを 2 回使用して、空のキーと値のペアを 2 つ追加します。 -
最初のペアでは、キーを
baseに、値を$vars.start.output.baseCurrencyに設定します。 -
2 番目のペアでは、キーを
quotes、値を$vars.start.output.quoteCurrencyに設定します。
プロパティ パネルの [Advanced] タブでノードのIDに fetchRate1 が表示され、両方のクエリ パラメーターが保存されていることを確認します。実行時に、ノードは https://api.frankfurter.dev/v2/rates?base=USD"es=EUR を要求し、正確に 3 つのキーを公開します。
$vars.fetchRate1.output.body- 解析された応答本文です。$vars.fetchRate1.output.code- HTTP 応答ステータス コードです。$vars.fetchRate1.output.headers- HTTP 応答ヘッダー
内部では、HTTP 要求ノードでは API 呼び出しを実行するために Integration Service が必要です。これには通常、最初に 1 つを作成してから、HTTP 要求ノードから参照する必要があります。フランクフルト API では認証が不要であるため、[認証方法] を [ Manual authentication ] に設定すると、最初にコネクションを作成してからドロップダウンからコネクションを選択する代わりに、指定した設定を使用して暗黙的なコネクションが作成されます。
手順 2.3 - スクリプト ノードを使用して応答を再形成する
スクリプト ノードを使用して現在の為替レートを抽出し、それをアラートのしきい値と比較します。Frankfurter API の応答 JSON の本文のデータは 配列 です。1 回の API 呼び出しで複数の通貨の為替レートを要求できるためです。配列には引用符で囲まれた通貨ごとに 1 つのエントリがあります - quoteCurrency 値は 1 つだけ含めるため、配列には常に 1 つの結果のみが含まれます。
[
{
"date": "2026-09-01",
"base": "USD",
"quote": "EUR",
"rate": 0.86111
}
]
[
{
"date": "2026-09-01",
"base": "USD",
"quote": "EUR",
"rate": 0.86111
}
]
スクリプト ノードを作成するには、以下の手順に従います。
-
Fetch rate ノードの出力ハンドルで + を選択します。
-
ノード パレットで [スクリプト ] を検索して選択します。
-
「編集」ボタンで新しいスクリプトノードのプロパティを開きます。
-
ノードの [ラベル ] を
Reshape rateに設定します。 -
IDの名前をscript1からreshapeRate1に変更します。 -
スクリプト エディターで、以下を入力します。
const rates = $vars.fetchRate1.output.body; const quote = $vars.start.output.quoteCurrency; const match = rates.find(function (entry) { return entry.quote === quote; }); const rate = match.rate; return { pair: match.base + "/" + quote, rate: rate, asOf: match.date, belowThreshold: rate < $vars.start.output.alertThreshold };const rates = $vars.fetchRate1.output.body; const quote = $vars.start.output.quoteCurrency; const match = rates.find(function (entry) { return entry.quote === quote; }); const rate = match.rate; return { pair: match.base + "/" + quote, rate: rate, asOf: match.date, belowThreshold: rate < $vars.start.output.alertThreshold };
API には 1 つの結果しかないことがわかっていますが、スクリプトは、必要な値が最初のエントリであると想定すべきではありません。インデックスの場所の参照を rates[0] とともに使用したり、"EUR"を含むエントリを検索したりする代わりに、トリガーの入力変数から指定されたquoteCurrency値と一致するエントリquote検索します。次に、スクリプトは現在のレートをしきい値と比較し、その結果をノードの出力オブジェクトに含めます。比較ロジックは、判断ノードで繰り返されるのではなく、API データを使用するコードの横に保持されます。
本文は、 function ラッパーなしで、示されているとおりに入力します。コードを囲む function main(input) { … } ラッパーは正常に実行されますが、戻るオブジェクトではなく null を返します。これにより、下流のノードがデータを使用できなくなります。これは、ラッパーを使用する UiPath のコード化された関数とは異なります。
下流のノードで、出力変数を次のように読み取れるようになりました。
$vars.reshapeRate1.output.pair$vars.reshapeRate1.output.rate$vars.reshapeRate1.output.asOf$vars.reshapeRate1.output.belowThreshold
手順 2.4 - 結果に基づいてルーティングする
Decision ノードは、 belowThreshold の値に基づいてフローを 2 つのパスに分割します。この値は Boolean であるため、 true または falseのみ指定できます。これらの分岐のそれぞれに、出力変数を使用して結果を返す終了ノードを追加します。この出力変数の値を Decision ノードの各ブランチに設定しますが、最初に変数を作成してから、Decision ノードを追加するときに使用する必要があります。
-
ノードが選択されていない状態で、[プロパティ] パネルの [ 変数 ] タブを選択します。
-
[出力] の横にある
+を使用してダイアログを開き、出力変数を追加します。 -
変数を作成して という名前を付け
watchResult、型をObjectに設定します。既定値は設定しません。 -
[Reshape rate] ノードの出力ハンドルで [+] を選択します。
-
ノード パレットで [Decision ] を検索して選択します。
-
「編集」ボタンで新しいノードのプロパティを開きます。
-
ノードの [ラベル ] を
Below thresholdに設定します。 -
ノードの
IDの名前をdecision1からbelowThreshold1に変更します。 -
[ 条件] を以下 に設定します。
$vars.reshapeRate1.output.belowThreshold === true$vars.reshapeRate1.output.belowThreshold === trueHTTP ノードのクエリ パラメーターとは異なり、ここでは
=js:プレフィックスはありません。[判断式] は、フロー エンジンがそれ自体を評価するネイティブのフロー フィールドであるため、すでに JavaScript です。 -
[真のブランチ] ラベルを
Alertに設定します。 -
False ブランチ ラベルを
No actionに設定します。ラベルはノードの 2 つの出力ハンドルに表示されるため、キャンバスと実行トレースはどちらも、
trueやfalseではなく、ビジネス ルールとして読み取られます。
手順 2.5 - [Alert End] ノードを追加する
判断ノードには 2 つの分岐があり、まず、次の Alert 分岐の分岐を追加します。
-
[Alert assignee] 分岐の [+] を選択します。
-
ノード パレットで [End ] を検索して選択します。
-
「編集」ボタンで新しい終了ノードのプロパティを開きます。
-
[パラメーター] タブで、
watchResultの [式] を次のように設定します。$vars.reshapeRate1.output$vars.reshapeRate1.output -
[詳細設定] タブで、[ ラベル] を
End alertに設定します。 -
ノードの ID の名前を
end1からendAlert1に変更します。
手順 2.6 - No Action End ノードを追加する
次に、[判断] ノードのもう 1 つの分岐に [ No action 終了] ノードを追加し、以下を行います。
-
[アクションなし] 分岐で [+] を選択します。
-
ノード パレットで [End ] を検索して選択します。
-
「編集」ボタンで新しい終了ノードのプロパティを開きます。
-
[パラメーター] タブで、
watchResultの [式] を次のように設定します。$vars.reshapeRate1.output$vars.reshapeRate1.output -
[詳細設定] タブで、ノードの [ラベル ] を
End no actionに設定します。 -
ノードの ID の名前を
end2からendNoAction1に変更します。
レビュー
キャンバスには、接続された 6 つのノードと 5 つのエッジ、および Decision ノードの後に 1 つのフォークが表示され、両方の End ノードに のマッピング watchResultが表示されます。フローは以下のようになります。ほうきアイコンを使用してフロー内のノードを配置し、[ Fit to screen ] ボタンを使用して画面に合わせてキャンバスのサイズを変更できます。
次のステップ
ビルドが完了したので、uip maestro flow validate コマンドを使用してフローを検証します。