diff --git a/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts b/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts index 1c0938a21f..2a875e754a 100644 --- a/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts +++ b/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts @@ -8,6 +8,7 @@ import type { } from 'n8n-workflow'; import { getWorkflowInfo } from './GenericFunctions'; +import { getWorkflowInputs } from './methods/resourceMapping'; import { generatePairedItemData } from '../../utils/utilities'; export class ExecuteWorkflow implements INodeType { @@ -187,6 +188,40 @@ export class ExecuteWorkflow implements INodeType { default: '', displayOptions: { show: { '@version': [{ _cnd: { lte: 1.1 } }] } }, }, + { + displayName: 'Workflow Inputs', + name: 'workflowInputs', + type: 'resourceMapper', + noDataExpression: true, + default: { + mappingMode: 'defineBelow', + value: null, + }, + required: true, + typeOptions: { + loadOptionsDependsOn: ['workflowId.value'], + resourceMapper: { + resourceMapperMethod: 'getWorkflowInputs', + mode: 'upsert', + fieldWords: { + singular: 'workflow input', + plural: 'workflow inputs', + }, + addAllFields: true, + multiKeyMatch: false, + supportAutoMap: false, + }, + }, + displayOptions: { + show: { + source: ['database'], + '@version': [{ _cnd: { gte: 1.2 } }], + }, + hide: { + workflowId: [''], + }, + }, + }, { displayName: 'Mode', name: 'mode', @@ -228,6 +263,12 @@ export class ExecuteWorkflow implements INodeType { ], }; + methods = { + resourceMapping: { + getWorkflowInputs, + }, + }; + async execute(this: IExecuteFunctions): Promise { const source = this.getNodeParameter('source', 0) as string; const mode = this.getNodeParameter('mode', 0, false) as string; diff --git a/packages/nodes-base/nodes/ExecuteWorkflow/methods/resourceMapping.ts b/packages/nodes-base/nodes/ExecuteWorkflow/methods/resourceMapping.ts new file mode 100644 index 0000000000..050f8450ae --- /dev/null +++ b/packages/nodes-base/nodes/ExecuteWorkflow/methods/resourceMapping.ts @@ -0,0 +1,24 @@ +import type { + ILoadOptionsFunctions, + ResourceMapperField, + ResourceMapperFields, +} from 'n8n-workflow'; + +export async function getWorkflowInputs( + this: ILoadOptionsFunctions, +): Promise { + // TODO: take the columns from the workflow input + const workflowInputs = ['uid', 'Test Field 2', 'Test Field 3']; + + const fields: ResourceMapperField[] = workflowInputs.map((col) => ({ + id: col, + displayName: col, + required: false, + defaultMatch: col === 'id', + display: true, + type: 'string', + canBeUsedToMatch: true, + })); + + return { fields }; +}