feat(editor): Implement workflowSelector parameter type (#10482)

This commit is contained in:
oleg
2024-08-22 16:59:12 +02:00
committed by GitHub
parent a73b9a38d6
commit 84e54beac7
18 changed files with 954 additions and 140 deletions

View File

@@ -9,6 +9,7 @@ import type {
INodeType,
INodeTypeDescription,
SupplyData,
INodeParameterResourceLocator,
} from 'n8n-workflow';
import { BaseRetriever, type BaseRetrieverInput } from '@langchain/core/retrievers';
@@ -41,7 +42,7 @@ export class RetrieverWorkflow implements INodeType {
name: 'retrieverWorkflow',
icon: 'fa:box-open',
group: ['transform'],
version: 1,
version: [1, 1.1],
description: 'Use an n8n Workflow as Retriever',
defaults: {
name: 'Workflow Retriever',
@@ -105,12 +106,26 @@ export class RetrieverWorkflow implements INodeType {
displayOptions: {
show: {
source: ['database'],
'@version': [{ _cnd: { eq: 1 } }],
},
},
default: '',
required: true,
description: 'The workflow to execute',
},
{
displayName: 'Workflow',
name: 'workflowId',
type: 'workflowSelector',
displayOptions: {
show: {
source: ['database'],
'@version': [{ _cnd: { gte: 1.1 } }],
},
},
default: '',
required: true,
},
// ----------------------------------
// source:parameter
@@ -301,11 +316,21 @@ export class RetrieverWorkflow implements INodeType {
const workflowInfo: IExecuteWorkflowInfo = {};
if (source === 'database') {
// Read workflow from database
workflowInfo.id = this.executeFunctions.getNodeParameter(
'workflowId',
itemIndex,
) as string;
const nodeVersion = this.executeFunctions.getNode().typeVersion;
if (nodeVersion === 1) {
workflowInfo.id = this.executeFunctions.getNodeParameter(
'workflowId',
itemIndex,
) as string;
} else {
const { value } = this.executeFunctions.getNodeParameter(
'workflowId',
itemIndex,
{},
) as INodeParameterResourceLocator;
workflowInfo.id = value as string;
}
baseMetadata.workflowId = workflowInfo.id;
} else if (source === 'parameter') {
// Read workflow from parameter