+1
-13
@@ -2,7 +2,6 @@ import { Scope } from '@nestjs/common';
|
||||
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
|
||||
import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
|
||||
import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
|
||||
@@ -18,7 +17,6 @@ import {
|
||||
WorkflowRunException,
|
||||
WorkflowRunExceptionCode,
|
||||
} from 'src/modules/workflow/workflow-runner/exceptions/workflow-run.exception';
|
||||
import { getRootSteps } from 'src/modules/workflow/workflow-runner/utils/get-root-steps.utils';
|
||||
import { WorkflowRunQueueWorkspaceService } from 'src/modules/workflow/workflow-runner/workflow-run-queue/workspace-services/workflow-run-queue.workspace-service';
|
||||
import { WorkflowRunWorkspaceService } from 'src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service';
|
||||
import { WorkflowTriggerType } from 'src/modules/workflow/workflow-trigger/types/workflow-trigger.type';
|
||||
@@ -113,17 +111,7 @@ export class RunWorkflowJob {
|
||||
workspaceId,
|
||||
});
|
||||
|
||||
const rootSteps = getRootSteps(workflowVersion.steps);
|
||||
|
||||
const isWorkflowBranchEnabled =
|
||||
await this.featureFlagService.isFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_BRANCH_ENABLED,
|
||||
workspaceId,
|
||||
);
|
||||
|
||||
const stepIds = isWorkflowBranchEnabled
|
||||
? (workflowVersion.trigger.nextStepIds ?? [])
|
||||
: (rootSteps.map((step) => step.id) ?? []);
|
||||
const stepIds = workflowVersion.trigger.nextStepIds ?? [];
|
||||
|
||||
await this.workflowExecutorWorkspaceService.executeFromSteps({
|
||||
stepIds,
|
||||
|
||||
-85
@@ -1,85 +0,0 @@
|
||||
import { type WorkflowAction } from 'src/modules/workflow/workflow-executor/workflow-actions/types/workflow-action.type';
|
||||
import { getRootSteps } from 'src/modules/workflow/workflow-runner/utils/get-root-steps.utils';
|
||||
|
||||
describe('getRootSteps', () => {
|
||||
it('should return the root steps', () => {
|
||||
const steps = [
|
||||
{
|
||||
id: 'step1',
|
||||
nextStepIds: ['step2'],
|
||||
},
|
||||
{ id: 'step2', nextStepIds: undefined },
|
||||
] as WorkflowAction[];
|
||||
|
||||
const expectedRootSteps = [
|
||||
{
|
||||
id: 'step1',
|
||||
nextStepIds: ['step2'],
|
||||
},
|
||||
] as WorkflowAction[];
|
||||
|
||||
expect(getRootSteps(steps)).toEqual(expectedRootSteps);
|
||||
});
|
||||
|
||||
it('should not consider step order', () => {
|
||||
const steps = [
|
||||
{ id: 'step2', nextStepIds: undefined },
|
||||
{
|
||||
id: 'step1',
|
||||
nextStepIds: ['step2'],
|
||||
},
|
||||
] as WorkflowAction[];
|
||||
|
||||
const expectedRootSteps = [
|
||||
{
|
||||
id: 'step1',
|
||||
nextStepIds: ['step2'],
|
||||
},
|
||||
] as WorkflowAction[];
|
||||
|
||||
expect(getRootSteps(steps)).toEqual(expectedRootSteps);
|
||||
});
|
||||
|
||||
it('should handle multiple root steps', () => {
|
||||
const steps = [
|
||||
{
|
||||
id: 'step1',
|
||||
nextStepIds: ['step3'],
|
||||
},
|
||||
{
|
||||
id: 'step2',
|
||||
nextStepIds: ['step3'],
|
||||
},
|
||||
{ id: 'step3', nextStepIds: ['step4'] },
|
||||
{ id: 'step4', nextStepIds: undefined },
|
||||
] as WorkflowAction[];
|
||||
|
||||
const expectedRootSteps = [
|
||||
{
|
||||
id: 'step1',
|
||||
nextStepIds: ['step3'],
|
||||
},
|
||||
{
|
||||
id: 'step2',
|
||||
nextStepIds: ['step3'],
|
||||
},
|
||||
] as WorkflowAction[];
|
||||
|
||||
expect(getRootSteps(steps)).toEqual(expectedRootSteps);
|
||||
});
|
||||
|
||||
it('should throw if buggy steps provided', () => {
|
||||
const steps = [
|
||||
{
|
||||
id: 'step1',
|
||||
nextStepIds: ['step2'],
|
||||
},
|
||||
{
|
||||
id: 'step2',
|
||||
nextStepIds: ['step1'],
|
||||
},
|
||||
] as WorkflowAction[];
|
||||
|
||||
expect(() => getRootSteps(steps)).toThrow('No root step found');
|
||||
});
|
||||
});
|
||||
-24
@@ -1,24 +0,0 @@
|
||||
import { type WorkflowAction } from 'src/modules/workflow/workflow-executor/workflow-actions/types/workflow-action.type';
|
||||
import {
|
||||
WorkflowRunException,
|
||||
WorkflowRunExceptionCode,
|
||||
} from 'src/modules/workflow/workflow-runner/exceptions/workflow-run.exception';
|
||||
|
||||
export const getRootSteps = (steps: WorkflowAction[]): WorkflowAction[] => {
|
||||
const childIds = new Set<string>();
|
||||
|
||||
for (const step of steps) {
|
||||
step.nextStepIds?.forEach((id) => childIds.add(id));
|
||||
}
|
||||
|
||||
const rootSteps = steps.filter((step) => !childIds.has(step.id));
|
||||
|
||||
if (rootSteps.length === 0) {
|
||||
throw new WorkflowRunException(
|
||||
'No root step found',
|
||||
WorkflowRunExceptionCode.WORKFLOW_ROOT_STEP_NOT_FOUND,
|
||||
);
|
||||
}
|
||||
|
||||
return rootSteps;
|
||||
};
|
||||
Reference in New Issue
Block a user