UNPKG

@flowlab/all

Version:

A cool library focusing on handling various flows

41 lines (36 loc) 1.23 kB
import { INode, INodeContext, INodeOutput, NodeStatus } from '../types/index.js'; /** * @class BaseNode * @description 所有自定义节点的基类,提供基础结构和可选方法 */ export abstract class BaseNode implements INode { abstract id: string; // 节点类型 ID,必须由子类实现 /** * 节点执行的核心逻辑,必须由子类实现 * @param context - 节点执行上下文 * @returns 包含状态和输出的 Promise */ abstract execute(context: INodeContext): Promise<INodeOutput>; /** * 补偿逻辑 (可选) * 当工作流需要回滚时调用 * @param context - 节点执行上下文 */ async compensate(context: INodeContext): Promise<void> { console.log(`[Node: ${this.id}] Step ${context.stepId} 无补偿逻辑,跳过。`); // 默认无操作 } /** * 输入验证逻辑 (可选) * 在执行前验证输入数据是否符合要求 * @param input - 节点输入数据 * @returns 如果验证通过返回 true,否则返回 false */ validateInput(input: Record<string, any>): boolean { return true; // 默认总是通过 } /** * 执行此节点所需的角色列表 (可选) */ requiredRoles?: string[]; }