From a8f4ce8d70c1dbfb7b829cd5607ec75153f43a5b Mon Sep 17 00:00:00 2001 From: gchust Date: Sun, 22 Jun 2025 13:48:43 +0800 Subject: [PATCH] feat: improve rerun auto flows --- .../core/flow-engine/src/models/flowModel.tsx | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/packages/core/flow-engine/src/models/flowModel.tsx b/packages/core/flow-engine/src/models/flowModel.tsx index e10a6520b8..bc7d8237a3 100644 --- a/packages/core/flow-engine/src/models/flowModel.tsx +++ b/packages/core/flow-engine/src/models/flowModel.tsx @@ -64,6 +64,11 @@ export class FlowModel = {}; + /** + * 上一次 applyAutoFlows 的执行参数 + */ + private _lastAutoRunParams: any[] | null = null; + constructor(options: FlowModelOptions) { if (options?.flowEngine?.getModel(options.uid)) { // 此时 new FlowModel 并不创建新实例,而是返回已存在的实例,避免重复创建同一个model实例 @@ -325,7 +330,7 @@ export class FlowModel { + if (this._lastAutoRunParams) { + try { + await this.applyAutoFlows(...this._lastAutoRunParams); + } catch (error) { + console.error('FlowModel._rerunLastAutoRun: Error during rerun:', error); + } + } + }, 100); + /** * 执行所有自动应用流程 * @param {FlowExtraContext} [extra] 可选的额外上下文 * @param {boolean} [useCache=true] 是否使用缓存机制,默认为 true * @returns {Promise} 所有自动应用流程的执行结果数组 */ - async applyAutoFlows(extra?: FlowExtraContext, useCache = true): Promise { + async applyAutoFlows(extra?: FlowExtraContext, useCache?: boolean): Promise; + async applyAutoFlows(...args: any[]): Promise { + // 存储本次执行的参数,用于后续重新执行 + this._lastAutoRunParams = args; + + const [extra, useCache = true] = args; + const autoApplyFlows = this.getAutoFlows(); if (autoApplyFlows.length === 0) { @@ -687,9 +713,9 @@ export class FlowModel, ) { await Promise.all( - this.mapSubModels(subKey, async (column) => { - column.setSharedContext(shared); - await column.applyAutoFlows(extra); + this.mapSubModels(subKey, async (sub) => { + sub.setSharedContext(shared); + await sub.applyAutoFlows(extra); }), ); }