defineAction
アクションを定義する関数です。typeフィールドで種別を指定し、種別に応じたフィールドを設定します。
typeによって設定できるフィールドが型で絞り込まれるため、存在しないフィールドを指定するとTypeScriptのコンパイルエラーになります。
以下の設定項目はコード管理の対象外です。これらはベースマキナの管理画面から設定してください。
- 結果の加工(加工スクリプト、ページネーション)
- 環境ごとの有効/無効
- 環境ごとのバージョン
共通フィールド
すべてのアクション種別で使用できるフィールドです。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
id | string | はい | アクションの識別子(ベースマキナ上の識別子に対応。内部IDとは異なる) |
name | string | はい | アクション名 |
description | string | いいえ | 説明 |
parameters | ParameterDefinition[] | いいえ | パラメーター定義 |
restricted | boolean | いいえ | 実行権限を制限するか |
permissions | PermissionTarget[] | いいえ | 実行権限の対象(restricted: trueの場合に必要) |
preferJobExecution | boolean | いいえ | ジョブ実行を優先的に表示するか |
reviewSettingId | string | いいえ | レビュー設定の識別子 |
notificationSettings | NotificationSettingsConfig | いいえ | 通知設定 |
gRPCアクション
import { defineAction } from "@basemachina/sdk";
export const fetchOrders = defineAction({
id: "fetch-orders",
name: "注文一覧取得",
type: "grpc",
datasource: "orders-service",
fullyQualifiedMethodName: "orders.OrderService/ListOrders",
parameters: [{ name: "customerId", type: "TEXT", required: true }],
});| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
type | "grpc" | はい | gRPCアクションを指定 |
datasource | string | はい | データソースの識別子 |
fullyQualifiedMethodName | string | はい | gRPCメソッドの完全修飾名 |
headers | { name: string; value: string }[] | いいえ | リクエストヘッダー |
body | { payload: string } | いいえ | リクエストボディ |
JavaScriptアクション
import { defineAction, readFile } from "@basemachina/sdk";
export const createUser = defineAction({
id: "create-user",
name: "ユーザー作成",
type: "javascript_server",
code: readFile("./js-action-codes/create-user.ts"),
parameters: [
{ name: "email", type: "TEXT", required: true },
{ name: "age", type: "NUMBER", required: true },
],
});| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
type | "javascript_server" | はい | JavaScriptアクションを指定 |
code | string | はい | JavaScriptコードまたはreadFile()の戻り値 |
パラメーター定義
パラメーターはtypeフィールドで種別を指定します。
TEXTパラメーター
{
name: "email",
type: "TEXT",
required: true,
defaultValue: "example@example.com",
minLength: 1,
maxLength: 255,
multiline: false,
regexpValidation: "^[\\w.+-]+@[\\w-]+\\.[\\w.]+$",
regexErrorMessage: "メールアドレスの形式で入力してください",
}| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
type | "TEXT" | はい | テキストパラメーターを指定 |
name | string | はい | パラメーター名 |
description | string | いいえ | 説明 |
required | boolean | いいえ | 必須かどうか |
defaultValue | string | いいえ | デフォルト値 |
minLength | number | いいえ | 最小文字数 |
maxLength | number | いいえ | 最大文字数 |
multiline | boolean | いいえ | 複数行入力を許可するか |
regexpValidation | string | いいえ | 入力値のバリデーション正規表現 |
regexErrorMessage | string | いいえ | バリデーションエラー時のメッセージ |
selectOptions | { label: string; value: string }[] | いいえ | 選択肢 |
NUMBERパラメーター
{
name: "age",
type: "NUMBER",
required: true,
min: 0,
max: 150,
}| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
type | "NUMBER" | はい | 数値パラメーターを指定 |
name | string | はい | パラメーター名 |
description | string | いいえ | 説明 |
required | boolean | いいえ | 必須かどうか |
defaultValue | number | いいえ | デフォルト値 |
min | number | いいえ | 最小値 |
max | number | いいえ | 最大値 |
selectOptions | { label: string; value: number }[] | いいえ | 選択肢 |