agent.task.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. interface AgentTaskStepOptions {
  2. title: string;
  3. shareData?: any;
  4. handle?(): { (): Promise<any> };
  5. }
  6. export class AgentTaskStep {
  7. // 任务标题
  8. title: string = '';
  9. // 共享数据
  10. shareData: any = {};
  11. // 私有数据
  12. data: any = {};
  13. /**
  14. * 任务初始化函数
  15. * 因为构造器里不能执行异步函数,而metaData里传进来的数据中可能有需要异步处理的函数
  16. */
  17. isInit: boolean = false;
  18. async init(metaData: AgentTaskStepOptions) {}
  19. // 父级组件
  20. parentComp: any | undefined;
  21. parentIndex: number | undefined;
  22. /**
  23. * 任务生命周期
  24. * constructor() // 构造时执行一次
  25. * onInit() // 初始化后执行一次
  26. * onProgress() // 进度变化时执行一次
  27. * onComplete() // 完成前执行一次
  28. */
  29. constructor(metaData: AgentTaskStepOptions) {
  30. this.title = metaData.title;
  31. this.shareData = metaData?.shareData;
  32. if (metaData.handle) {
  33. this.handle = metaData.handle;
  34. }
  35. this.init(metaData); // 处理异步函数
  36. }
  37. onInit(step: AgentTaskStep) {
  38. this.isInit = true;
  39. }
  40. beforeHandle(step: AgentTaskStep) {}
  41. afterhandle(step: AgentTaskStep) {}
  42. onProgress(step: AgentTaskStep) {}
  43. onComplete(step: AgentTaskStep) {}
  44. onError(step: AgentTaskStep) {}
  45. /**
  46. * 执行任务
  47. * @desc 函数内必须有明确的完成、结束情形和函数进度变化指示
  48. */
  49. progress: number = 0;
  50. handle(): Promise<any> | any {
  51. this.beforeHandle(this);
  52. this.onComplete(this);
  53. this.onError(this);
  54. return true;
  55. }
  56. /**
  57. * 函数报错
  58. */
  59. error: string = ''; // 报错原因
  60. }