Update workflow version struct (#6716)

We want to avoid the nested structure of active pieces. Steps to execute
will now be separated from the trigger. It will be an array executed
sequentially.

For now a step can only be an action. But at some point it will also be
a branch or a loop
This commit is contained in:
Thomas Trompette
2024-08-22 17:59:16 +02:00
committed by GitHub
parent 579c2ebcea
commit 0a7700351f
18 changed files with 131 additions and 114 deletions

View File

@ -21,6 +21,7 @@ import {
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
import { WorkflowStep } from 'src/modules/workflow/common/types/workflow-step.type';
import { WorkflowTrigger } from 'src/modules/workflow/common/types/workflow-trigger.type';
@WorkspaceEntity({
@ -51,11 +52,19 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
type: FieldMetadataType.RAW_JSON,
label: 'Version trigger',
description: 'Json object to provide trigger',
icon: 'IconPlayerPlay',
})
@WorkspaceIsNullable()
trigger: WorkflowTrigger | null;
@WorkspaceField({
standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.steps,
type: FieldMetadataType.RAW_JSON,
label: 'Version steps',
description: 'Json object to provide steps',
})
@WorkspaceIsNullable()
steps: WorkflowStep[] | null;
// Relations
@WorkspaceRelation({
standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.workflow,

View File

@ -1,20 +0,0 @@
import { WorkflowCodeSettingsType } from 'src/modules/workflow/common/types/workflow-settings.type';
export enum WorkflowActionType {
CODE = 'CODE',
}
type CommonWorkflowAction = {
name: string;
displayName: string;
valid: boolean;
};
type WorkflowCodeAction = CommonWorkflowAction & {
type: WorkflowActionType.CODE;
settings: WorkflowCodeSettingsType;
};
export type WorkflowAction = WorkflowCodeAction & {
nextAction: WorkflowAction;
};

View File

@ -1,4 +1,4 @@
type WorkflowBaseSettingsType = {
type BaseWorkflowSettings = {
errorHandlingOptions: {
retryOnFailure: {
value: boolean;
@ -9,6 +9,6 @@ type WorkflowBaseSettingsType = {
};
};
export type WorkflowCodeSettingsType = WorkflowBaseSettingsType & {
export type WorkflowCodeSettings = BaseWorkflowSettings & {
serverlessFunctionId: string;
};

View File

@ -0,0 +1,18 @@
import { WorkflowCodeSettings } from 'src/modules/workflow/common/types/workflow-settings.type';
export enum WorkflowStepType {
CODE_ACTION = 'CODE_ACTION',
}
type BaseWorkflowStep = {
id: string;
name: string;
valid: boolean;
};
export type WorkflowCodeStep = BaseWorkflowStep & {
type: WorkflowStepType.CODE_ACTION;
settings: WorkflowCodeSettings;
};
export type WorkflowStep = WorkflowCodeStep;

View File

@ -1,20 +1,17 @@
import { WorkflowAction } from 'src/modules/workflow/common/types/workflow-action.type';
export enum WorkflowTriggerType {
DATABASE_EVENT = 'DATABASE_EVENT',
}
type BaseTrigger = {
name: string;
type: WorkflowTriggerType;
input?: object;
nextAction?: WorkflowAction;
};
export type WorkflowDatabaseEventTrigger = BaseTrigger & {
type: WorkflowTriggerType.DATABASE_EVENT;
settings: {
eventName: string;
triggerName: string;
};
};