@ cascadeflow/ 客户端
用于提交和管理工作流程运行的保密程序客户端.
安装
客户端需要后端执行才能持续工作流程状态. 与您选择的后端一起安装客户端 :
带有文件系统后端( 建议开发)
npm install @cascadeflow/client @cascadeflow/backend-filesystem
带有 PostgreSQL 后端( 制作)
npm install @cascadeflow/client @cascadeflow/backend-postgres
使用量
import { WorkflowClient } from "@cascadeflow/client";
import { FileSystemBackend } from "@cascadeflow/backend-filesystem";
const client = new WorkflowClient(new FileSystemBackend("./.runs"));
// Submit run
const { runId } = await client.submit({
workflow: "my-workflow",
input: { userId: "123", count: 42 },
priority: 10,
timeout: 300000
});
// Wait for completion
const output = await client.waitForCompletion(runId, {
timeout: 60000,
exponentialBackoff: true
});
// Check status
const info = await client.getRun(runId);
// Cancel
await client.cancel(runId, "reason");
类型安全
interface MyInput { userId: string; count: number; }
interface MyOutput { results: string[]; }
const { runId } = await client.submit<MyInput>({
workflow: "my-workflow",
input: { userId: "123", count: 42 } // Type-checked
});
const output = await client.waitForCompletion<MyOutput>(runId);
console.log(output.results); // Type-safe access
方法
// Submit run
submit<TInput>(params: {
workflow: string;
input?: TInput;
priority?: number;
timeout?: number;
idempotencyKey?: string;
metadata?: Record<string, unknown>;
tags?: string[];
}): Promise<{ runId: string; isNew: boolean }>;
// Get status
getStatus(runId: string): Promise<RunStatus>;
// Get detailed info
getRun(runId: string): Promise<RunState | null>;
// Wait for completion
waitForCompletion<TOutput>(runId: string, options?: {
interval?: number;
exponentialBackoff?: boolean;
maxBackoff?: number;
timeout?: number;
}): Promise<TOutput>;
// List runs
listRuns(options?: { status?: RunStatus; limit?: number }): Promise<RunState[]>;
// Cancel run
cancel(runId: string, reason?: string): Promise<void>;
超时
步执行的3级倒计时 :
- 步骤级别 :
defineStep({ timeoutMs }) - 提交级别 :
submit({ timeout })此软件包 - 系统默认: 300 000 ms (5分钟)
提交超时设置全工作流程执行限制,用于没有自己的步骤 timeoutMs。 。 。 .
CLI 一体化
内部使用:
cf submit→client.submit()cf status→client.getRun()cf cancel→client.cancel()