UiPath Documentation
functions
latest
false
Functions ユーザー ガイド
  • 概要
    • Functions について
  • JavaScript 関数
  • Python の関数
  • デプロイして実行する
重要 :
このコンテンツは機械翻訳によって処理されています。 新しいコンテンツの翻訳は、およそ 1 ~ 2 週間で公開されます。

JavaScript 関数の構築

JavaScript 関数の構造です。HTTP エンドポイントとジョブの形状、型指定されたコントラクト、応答ヘルパー、エラー処理、およびログをカバーします。

すべての関数は、 defineFunction(...) オブジェクトをデフォルトでエクスポートするモジュールです。CLI は、uipath.jsonのfunctionsマップを介してこれを検出します。

import { defineFunction, defineSchema } from "@uipath/coded-functions-js-sdk";

export default defineFunction({
  name: "process-order",
  input: defineSchema<Input>(),
  output: defineSchema<Output>(),
  handler: async (input, ctx) => { /* ... */ },
});
import { defineFunction, defineSchema } from "@uipath/coded-functions-js-sdk";

export default defineFunction({
  name: "process-order",
  input: defineSchema<Input>(),
  output: defineSchema<Output>(),
  handler: async (input, ctx) => { /* ... */ },
});

2 つの図形​

1 つのフィールド ペアで、関数の呼び出し方法が決まります。

図形宣言によって呼び出されます
HTTP エンドポイントmethod と path が設定されているアプリまたは任意の HTTP クライアント (関数のトリガー URL 経由)
Jobmethod と path 省略Maestro サービス タスク、[ジョブを実行] アクティビティ、Orchestrator API、またはジョブ トリガー

どちらの図形も同じ方法でパッケージ化および展開されます。HTTP 関数は、コード化されたアプリを支えるものです。職務は、より大きなオートメーション内のステップです。1 つ目の「 HTTP トリガーとルーティング 」、2 つ目の「 関数の呼び出し 」をご覧ください。

型指定されたコントラクト​

defineSchema<T>() 、TypeScript インターフェイスを JSON スキーマに変換し、すべての呼び出しサーフェスで変数のバインドを駆動します。インターフェイスは信頼できる唯一の情報源であり、ハンドラーを型付けし、コントラクトを宣言します。

interface CreateOrderInput {
  /** Customer reference. */
  customerId: string;
  /** @default 1 */
  quantity?: number;
}
interface CreateOrderInput {
  /** Customer reference. */
  customerId: string;
  /** @default 1 */
  quantity?: number;
}

スキーマでは任意のプロパティが任意になり、JSDoc @default タグによって既定値が保持されます。JavaScript プロジェクトでは、 の代わりに JSON スキーマ オブジェクト リテラル defineSchema<T>()渡します。

スキーマはソースを実行せずにソースから抽出されるため、リテラルとして記述します。変数を介して参照される値 (数値のバインドまたは共有スキーマ オブジェクト) を抽出されたスキーマから削除し、関数にバインドするコントラクトを残す可能性があります。

output宣言は任意です。存在する場合、ハンドラーの戻り値は、関数を離れる前にそれに対して検証されます。

結果を返す​

プレーンなオブジェクトを返して、そのオブジェクトを本体として送信する 200 。

handler: async (input) => ({ orderId: input.customerId, processed: true }),
handler: async (input) => ({ orderId: input.customerId, processed: true }),

それ以外の場合は、応答オブジェクトを返すか、ヘルパーを使用します。

import { ok, created, notFound } from "@uipath/coded-functions-js-sdk";

return created({ id: "new-id" });          // 201
return notFound("No such order");          // 404
return { status: 202, body: { queued: true } };
import { ok, created, notFound } from "@uipath/coded-functions-js-sdk";

return created({ id: "new-id" });          // 201
return notFound("No such order");          // 404
return { status: 202, body: { queued: true } };
警告:

{ status, body } は応答の形状であるため、数値を保持する独自の名前のstatus出力フィールドがステータス コードとして読み取られます。宣言されたステータスは空の本文で送信され、残りのペイロードはエラーなしでドロップされます。フィールドに別の名前を付けます (例: httpStatus)。

Error​

失敗する FunctionError をスローし、特定のステータスとメッセージが表示されます。

import { FunctionError } from "@uipath/coded-functions-js-sdk";

if (!input.customerId) {
  throw new FunctionError("customerId is required", 400);
}
import { FunctionError } from "@uipath/coded-functions-js-sdk";

if (!input.customerId) {
  throw new FunctionError("customerId is required", 400);
}

キャッチされないエラーは 500になります。関数をジョブとして実行する場合、スローされたエラーによってジョブがエラーになり、メッセージがジョブの結果に到達します。

ログ​

SDK ロガーを使用して、出力が実行に帰属し、Orchestrator ジョブのログに到達するようにします。

import { logger } from "@uipath/coded-functions-js-sdk";

logger.info(`Processed order ${input.orderId}`);
import { logger } from "@uipath/coded-functions-js-sdk";

logger.info(`Processed order ${input.orderId}`);

console.* 出力は転送されません。シークレット値を決してログに記録してはなりません。

次のステップ​

このページは役に立ちましたか?

接続

ヘルプ リソース サポート

学習する UiPath アカデミー

質問する UiPath フォーラム

最新情報を取得