Python 関数には、型指定された入力、型指定された出力、および一方を他方にマッピングするエントリ ポイント関数の 3 つの部分があります。このページでは、それぞれに加えて、1 つのプロジェクトにおけるエラー処理と複数の関数の公開について説明します。
型指定された入力と出力
型指定された Python として Input と Output を定義します。pydantic.dataclasses.dataclass (SDK のサンプルで使用するもの) を使用して、ランタイムが受信ペイロードを検証し、クリーンな JSON スキーマ (任意のフィールド、入れ子になったフィールド、自己参照フィールドを含む) をエクスポートするようにします。ピダンティック BaseModel も同じように振る舞います。Stdlib @dataclass も使用でき、単純なフラット入力には問題ありませんが、検証は実行されず、複雑な型の場合は完成度の低いスキーマがエクスポートされます。すべての呼び出しサーフェスでは、エクスポートされたスキーマがレンダリングされ、変数 (Maestro サービス タスク、Orchestrator のジョブを実行、Studio の [ジョブを実行] アクティビティ) がバインドされます。エントリ ポイントは、同期 def または async def にすることができます。どちらもサポートされています。
from pydantic.dataclasses import dataclass
@dataclass
class Input:
document_id: str = ""
amount: float = 0.0
@dataclass
class Output:
result_id: str = ""
status: str = ""
def main(input: Input) -> Output:
# business logic
return Output(result_id="123", status="success")
from pydantic.dataclasses import dataclass
@dataclass
class Input:
document_id: str = ""
amount: float = 0.0
@dataclass
class Output:
result_id: str = ""
status: str = ""
def main(input: Input) -> Output:
# business logic
return Output(result_id="123", status="success")
サポートされている種類
- プリミティブ:
str、int、float、bool - 配列:
list[str]、list[dict] - ネストされたデータクラスまたは pydantic モデル
- null を許容するフィールド:
Optional[X]
フィールドに既定値を指定します。これにより、スキーマがクリーンに生成され、部分的な入力で関数を簡単に呼び出すことができます。
エントリ ポイント
uipath.jsonファイルは、呼び出し可能な関数を宣言します。
{
"functions": {
"main": "main.py:main"
}
}
{
"functions": {
"main": "main.py:main"
}
}
複数のエントリ ポイント
1 つのプロジェクトで複数の関数を公開できます。uipath.jsonの各項目をリストアップします。
{
"functions": {
"extract": "main.py:extract_data",
"validate": "main.py:validate_data",
"post_erp": "main.py:post_to_erp"
}
}
{
"functions": {
"extract": "main.py:extract_data",
"validate": "main.py:validate_data",
"post_erp": "main.py:post_to_erp"
}
}
エントリ ポイントを追加した後に uipath init を実行して、入力/出力スキーマを再生成します。
エラー処理
関数は、次の 2 つの方法でビジネス エラーを通知できます。両方がサポートされています。呼び出し元のプロセスが失敗をどのように処理するかに応じて選択してください。
- 出力で返します。ステータス フラグや
error_messageなどのフィールドをOutputに追加します。ジョブが正常に完了し、呼び出し元 (Maestro プロセスなど) がそれらのフィールドで分岐します。 - 例外を発生させる。ジョブは
USERカテゴリ エラーで失敗し、例外メッセージはフォールト内に保持されるため、呼び出し元はアップストリームで処理できます (たとえば、Maestro プロセスの境界イベントなど)。
出力にエラーを返すには、必要なフィールドを追加し、失敗パスに入力します。
from pydantic.dataclasses import dataclass
@dataclass
class Output:
result_id: str = ""
status: str = ""
error_type: str = ""
error_message: str = ""
def main(input: Input) -> Output:
try:
result = process_data(input)
return Output(result_id=result, status="success")
except ValidationError as exc:
return Output(status="error", error_type="VALIDATION_ERROR", error_message=str(exc))
from pydantic.dataclasses import dataclass
@dataclass
class Output:
result_id: str = ""
status: str = ""
error_type: str = ""
error_message: str = ""
def main(input: Input) -> Output:
try:
result = process_data(input)
return Output(result_id=result, status="success")
except ValidationError as exc:
return Output(status="error", error_type="VALIDATION_ERROR", error_message=str(exc))
意味のある説明ができる例外だけをキャッチします。予期しないエラーを伝搬してジョブのエラーを発生させ、元のメッセージをそのままにして Orchestrator のジョブ履歴にエラーを表示します。
次のステップ
- プラットフォーム サービスへのアクセス — 実行時にアセットとファイルを読み取ります。
- トレースとオブザーバビリティ — 実行ステップをトレース内で可視化します。