@flowlab/all
Version:
A cool library focusing on handling various flows
41 lines (36 loc) • 1.23 kB
text/typescript
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[];
}