400 workflows webhooks trigger (#11041)
https://github.com/user-attachments/assets/dc0ece22-4d87-417f-b9e1-a11c3fd52ce8
This commit is contained in:
@ -59,6 +59,7 @@ export class WorkflowSchemaWorkspaceService {
|
||||
objectMetadataRepository: this.objectMetadataRepository,
|
||||
});
|
||||
}
|
||||
case WorkflowTriggerType.WEBHOOK:
|
||||
case WorkflowTriggerType.CRON: {
|
||||
return {};
|
||||
}
|
||||
|
||||
@ -10,7 +10,9 @@ export enum WorkflowTriggerExceptionCode {
|
||||
INVALID_INPUT = 'INVALID_INPUT',
|
||||
INVALID_WORKFLOW_TRIGGER = 'INVALID_WORKFLOW_TRIGGER',
|
||||
INVALID_WORKFLOW_VERSION = 'INVALID_WORKFLOW_VERSION',
|
||||
INVALID_WORKFLOW_STATUS = 'INVALID_WORKFLOW_STATUS',
|
||||
INVALID_ACTION_TYPE = 'INVALID_ACTION_TYPE',
|
||||
NOT_FOUND = 'NOT_FOUND',
|
||||
FORBIDDEN = 'FORBIDDEN',
|
||||
INTERNAL_ERROR = 'INTERNAL_ERROR',
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ export enum WorkflowTriggerType {
|
||||
DATABASE_EVENT = 'DATABASE_EVENT',
|
||||
MANUAL = 'MANUAL',
|
||||
CRON = 'CRON',
|
||||
WEBHOOK = 'WEBHOOK',
|
||||
}
|
||||
|
||||
type BaseWorkflowTriggerSettings = {
|
||||
@ -58,9 +59,14 @@ export type WorkflowCronTrigger = BaseTrigger & {
|
||||
) & { outputSchema: object };
|
||||
};
|
||||
|
||||
export type WorkflowWebhookTrigger = BaseTrigger & {
|
||||
type: WorkflowTriggerType.WEBHOOK;
|
||||
};
|
||||
|
||||
export type WorkflowManualTriggerSettings = WorkflowManualTrigger['settings'];
|
||||
|
||||
export type WorkflowTrigger =
|
||||
| WorkflowDatabaseEventTrigger
|
||||
| WorkflowManualTrigger
|
||||
| WorkflowCronTrigger;
|
||||
| WorkflowCronTrigger
|
||||
| WorkflowWebhookTrigger;
|
||||
|
||||
@ -69,6 +69,7 @@ function assertTriggerSettingsAreValid(
|
||||
assertDatabaseEventTriggerSettingsAreValid(settings);
|
||||
break;
|
||||
case WorkflowTriggerType.MANUAL:
|
||||
case WorkflowTriggerType.WEBHOOK:
|
||||
break;
|
||||
case WorkflowTriggerType.CRON:
|
||||
assertCronTriggerSettingsAreValid(settings);
|
||||
|
||||
@ -4,11 +4,9 @@ import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { EntityManager, Repository } from 'typeorm';
|
||||
|
||||
import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action';
|
||||
import { buildCreatedByFromFullNameMetadata } from 'src/engine/core-modules/actor/utils/build-created-by-from-full-name-metadata.util';
|
||||
import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
|
||||
import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
|
||||
import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
|
||||
import { User } from 'src/engine/core-modules/user/user.entity';
|
||||
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||
import { ScopedWorkspaceContextFactory } from 'src/engine/twenty-orm/factories/scoped-workspace-context.factory';
|
||||
import { WorkspaceRepository } from 'src/engine/twenty-orm/repository/workspace.repository';
|
||||
@ -37,6 +35,7 @@ import { WorkflowTriggerType } from 'src/modules/workflow/workflow-trigger/types
|
||||
import { assertVersionCanBeActivated } from 'src/modules/workflow/workflow-trigger/utils/assert-version-can-be-activated.util';
|
||||
import { computeCronPatternFromSchedule } from 'src/modules/workflow/workflow-trigger/utils/compute-cron-pattern-from-schedule';
|
||||
import { assertNever } from 'src/utils/assert';
|
||||
import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
|
||||
|
||||
@Injectable()
|
||||
export class WorkflowTriggerWorkspaceService {
|
||||
@ -66,12 +65,15 @@ export class WorkflowTriggerWorkspaceService {
|
||||
return workspaceId;
|
||||
}
|
||||
|
||||
async runWorkflowVersion(
|
||||
workflowVersionId: string,
|
||||
payload: object,
|
||||
workspaceMemberId: string,
|
||||
{ firstName, lastName }: User,
|
||||
) {
|
||||
async runWorkflowVersion({
|
||||
workflowVersionId,
|
||||
payload,
|
||||
createdBy,
|
||||
}: {
|
||||
workflowVersionId: string;
|
||||
payload: object;
|
||||
createdBy: ActorMetadata;
|
||||
}) {
|
||||
await this.workflowCommonWorkspaceService.getWorkflowVersionOrFail(
|
||||
workflowVersionId,
|
||||
);
|
||||
@ -80,10 +82,7 @@ export class WorkflowTriggerWorkspaceService {
|
||||
this.getWorkspaceId(),
|
||||
workflowVersionId,
|
||||
payload,
|
||||
buildCreatedByFromFullNameMetadata({
|
||||
fullNameMetadata: { firstName, lastName },
|
||||
workspaceMemberId,
|
||||
}),
|
||||
createdBy,
|
||||
);
|
||||
}
|
||||
|
||||
@ -342,6 +341,7 @@ export class WorkflowTriggerWorkspaceService {
|
||||
|
||||
return;
|
||||
case WorkflowTriggerType.MANUAL:
|
||||
case WorkflowTriggerType.WEBHOOK:
|
||||
return;
|
||||
case WorkflowTriggerType.CRON: {
|
||||
const pattern = computeCronPatternFromSchedule(workflowVersion.trigger);
|
||||
@ -384,6 +384,7 @@ export class WorkflowTriggerWorkspaceService {
|
||||
|
||||
return;
|
||||
case WorkflowTriggerType.MANUAL:
|
||||
case WorkflowTriggerType.WEBHOOK:
|
||||
return;
|
||||
case WorkflowTriggerType.CRON:
|
||||
await this.messageQueueService.removeCron({
|
||||
|
||||
Reference in New Issue
Block a user