diff --git a/packages/cli/src/ActiveWorkflowRunner.ts b/packages/cli/src/ActiveWorkflowRunner.ts index a1e4d41273..cde03c20d3 100644 --- a/packages/cli/src/ActiveWorkflowRunner.ts +++ b/packages/cli/src/ActiveWorkflowRunner.ts @@ -263,7 +263,7 @@ export class ActiveWorkflowRunner { }; const workflowRunner = new WorkflowRunner(); - workflowRunner.run(runData); + workflowRunner.run(runData, true); }; return returnFunctions; }); diff --git a/packages/cli/src/WebhookHelpers.ts b/packages/cli/src/WebhookHelpers.ts index f7ac12b690..4303be6c89 100644 --- a/packages/cli/src/WebhookHelpers.ts +++ b/packages/cli/src/WebhookHelpers.ts @@ -224,7 +224,7 @@ export function getWorkflowWebhooks(workflow: Workflow, additionalData: IWorkflo // Start now to run the workflow const workflowRunner = new WorkflowRunner(); - const executionId = await workflowRunner.run(runData); + const executionId = await workflowRunner.run(runData, true); // Get a promise which resolves when the workflow did execute and send then response const executePromise = activeExecutions.getPostExecutePromise(executionId) as Promise; diff --git a/packages/cli/src/WorkflowExecuteAdditionalData.ts b/packages/cli/src/WorkflowExecuteAdditionalData.ts index 963d809330..a7b201027d 100644 --- a/packages/cli/src/WorkflowExecuteAdditionalData.ts +++ b/packages/cli/src/WorkflowExecuteAdditionalData.ts @@ -158,7 +158,7 @@ const hooks = (mode: WorkflowExecuteMode, workflowData: IWorkflowBase, execution workflowExecuteAfter: [ async (fullRunData: IRun, newStaticData: IDataObject): Promise => { try { - if (WorkflowHelpers.isWorkflowIdValid(workflowData.id as string) === true) { + if (mode !== 'manual' && WorkflowHelpers.isWorkflowIdValid(workflowData.id as string) === true) { // Workflow is saved so update in database try { await WorkflowHelpers.saveStaticDataById(workflowData.id as string, newStaticData); diff --git a/packages/cli/src/WorkflowHelpers.ts b/packages/cli/src/WorkflowHelpers.ts index 84967ba0d9..b3e1156fa9 100644 --- a/packages/cli/src/WorkflowHelpers.ts +++ b/packages/cli/src/WorkflowHelpers.ts @@ -62,7 +62,7 @@ export async function executeErrorWorkflow(workflowId: string, workflowErrorData const executionMode = 'error'; const nodeTypes = NodeTypes(); - const workflowInstance = new Workflow(workflowId, workflowData.nodes, workflowData.connections, workflowData.active, nodeTypes, undefined, workflowData.settings); + const workflowInstance = new Workflow(workflowId, workflowData.nodes, workflowData.connections, workflowData.active, nodeTypes, workflowData.staticData, workflowData.settings); let node: INode; @@ -168,3 +168,23 @@ export async function saveStaticDataById(workflowId: string | number, newStaticD staticData: newStaticData, }); } + + + +/** + * Returns the static data of workflow + * + * @export + * @param {(string | number)} workflowId The id of the workflow to get static data of + * @returns + */ +export async function getStaticDataById(workflowId: string | number) { + const workflowData = await Db.collections.Workflow! + .findOne(workflowId, { select: ['staticData']}); + + if (workflowData === undefined) { + return {}; + } + + return workflowData.staticData || {}; +} diff --git a/packages/cli/src/WorkflowRunner.ts b/packages/cli/src/WorkflowRunner.ts index e936c18607..5496ace2a4 100644 --- a/packages/cli/src/WorkflowRunner.ts +++ b/packages/cli/src/WorkflowRunner.ts @@ -8,6 +8,7 @@ import { NodeTypes, Push, WorkflowExecuteAdditionalData, + WorkflowHelpers, } from './'; import { @@ -140,13 +141,19 @@ export class WorkflowRunner { * Run the workflow in subprocess * * @param {IWorkflowExecutionDataProcess} data + * @param {boolean} [loadStaticData] If set will the static data be loaded from + * the workflow and added to input data * @returns {Promise} * @memberof WorkflowRunner */ - async run(data: IWorkflowExecutionDataProcess): Promise { + async run(data: IWorkflowExecutionDataProcess, loadStaticData?: boolean): Promise { const startedAt = new Date(); const subprocess = fork(pathJoin(__dirname, 'WorkflowRunnerProcess.js')); + if (loadStaticData === true && data.workflowData.id) { + data.workflowData.staticData = await WorkflowHelpers.getStaticDataById(data.workflowData.id as string); + } + // Register the active execution const executionId = this.activeExecutions.add(subprocess, data);