Trigger workflow on database event (#6480)
- Add global listener on database event - Fetch event listener associated - Trigger associated workflow Also updated the runner so it expects the input to be in the payload rather than the trigger
This commit is contained in:
@ -11,7 +11,7 @@ import { TimelineMessagingModule } from 'src/engine/core-modules/messaging/timel
|
||||
import { OpenApiModule } from 'src/engine/core-modules/open-api/open-api.module';
|
||||
import { PostgresCredentialsModule } from 'src/engine/core-modules/postgres-credentials/postgres-credentials.module';
|
||||
import { UserModule } from 'src/engine/core-modules/user/user.module';
|
||||
import { WorkflowTriggerModule } from 'src/engine/core-modules/workflow/workflow-trigger.module';
|
||||
import { WorkflowTriggerCoreModule } from 'src/engine/core-modules/workflow/core-workflow-trigger.module';
|
||||
import { WorkspaceModule } from 'src/engine/core-modules/workspace/workspace.module';
|
||||
|
||||
import { AnalyticsModule } from './analytics/analytics.module';
|
||||
@ -35,7 +35,7 @@ import { FileModule } from './file/file.module';
|
||||
WorkspaceModule,
|
||||
AISQLQueryModule,
|
||||
PostgresCredentialsModule,
|
||||
WorkflowTriggerModule,
|
||||
WorkflowTriggerCoreModule,
|
||||
],
|
||||
exports: [
|
||||
AnalyticsModule,
|
||||
|
||||
@ -2,11 +2,11 @@ import { Module } from '@nestjs/common';
|
||||
|
||||
import { WorkflowTriggerResolver } from 'src/engine/core-modules/workflow/workflow-trigger.resolver';
|
||||
import { WorkflowCommonModule } from 'src/modules/workflow/common/workflow-common.module';
|
||||
import { WorkflowTriggerService } from 'src/modules/workflow/workflow-trigger/workflow-trigger.service';
|
||||
import { WorkflowRunnerModule } from 'src/modules/workflow/workflow-runner/workflow-runner.module';
|
||||
import { WorkflowTriggerService } from 'src/modules/workflow/workflow-trigger/workflow-trigger.service';
|
||||
|
||||
@Module({
|
||||
imports: [WorkflowCommonModule, WorkflowRunnerModule],
|
||||
providers: [WorkflowTriggerService, WorkflowTriggerResolver],
|
||||
})
|
||||
export class WorkflowTriggerModule {}
|
||||
export class WorkflowTriggerCoreModule {}
|
||||
@ -0,0 +1,18 @@
|
||||
import { Field, InputType } from '@nestjs/graphql';
|
||||
|
||||
import graphqlTypeJson from 'graphql-type-json';
|
||||
|
||||
@InputType()
|
||||
export class RunWorkflowVersionInput {
|
||||
@Field(() => String, {
|
||||
description: 'Workflow version ID',
|
||||
nullable: false,
|
||||
})
|
||||
workflowVersionId: string;
|
||||
|
||||
@Field(() => graphqlTypeJson, {
|
||||
description: 'Execution result in JSON format',
|
||||
nullable: true,
|
||||
})
|
||||
payload?: JSON;
|
||||
}
|
||||
@ -1,12 +1,13 @@
|
||||
import { UseGuards } from '@nestjs/common';
|
||||
import { Args, Mutation, Resolver } from '@nestjs/graphql';
|
||||
|
||||
import { RunWorkflowVersionInput } from 'src/engine/core-modules/workflow/dtos/run-workflow-version-input.dto';
|
||||
import { WorkflowTriggerResultDTO } from 'src/engine/core-modules/workflow/dtos/workflow-trigger-result.dto';
|
||||
import { workflowTriggerGraphqlApiExceptionHandler } from 'src/engine/core-modules/workflow/utils/workflow-trigger-graphql-api-exception-handler.util';
|
||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
|
||||
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
|
||||
import { WorkflowTriggerService } from 'src/modules/workflow/workflow-trigger/workflow-trigger.service';
|
||||
import { WorkflowTriggerResultDTO } from 'src/engine/core-modules/workflow/dtos/workflow-trigger-result.dto';
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Resolver()
|
||||
@ -31,15 +32,16 @@ export class WorkflowTriggerResolver {
|
||||
}
|
||||
|
||||
@Mutation(() => WorkflowTriggerResultDTO)
|
||||
async triggerWorkflow(
|
||||
async runWorkflowVersion(
|
||||
@AuthWorkspace() { id: workspaceId }: Workspace,
|
||||
@Args('workflowVersionId') workflowVersionId: string,
|
||||
@Args('input') { workflowVersionId, payload }: RunWorkflowVersionInput,
|
||||
) {
|
||||
try {
|
||||
return {
|
||||
result: await this.workflowTriggerService.runWorkflow(
|
||||
result: await this.workflowTriggerService.runWorkflowVersion(
|
||||
workspaceId,
|
||||
workflowVersionId,
|
||||
payload ?? {},
|
||||
),
|
||||
};
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user