@venturialstd/workflow 0.1.156 → 0.1.158
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +238 -238
- package/dist/dtos/apply-workflow-graph-delta.dto.d.ts +19 -0
- package/dist/dtos/apply-workflow-graph-delta.dto.d.ts.map +1 -0
- package/dist/dtos/apply-workflow-graph-delta.dto.js +92 -0
- package/dist/dtos/apply-workflow-graph-delta.dto.js.map +1 -0
- package/dist/dtos/create-workflow-job.dto.d.ts +10 -0
- package/dist/dtos/create-workflow-job.dto.d.ts.map +1 -0
- package/dist/dtos/create-workflow-job.dto.js +58 -0
- package/dist/dtos/create-workflow-job.dto.js.map +1 -0
- package/dist/dtos/index.d.ts +3 -0
- package/dist/dtos/index.d.ts.map +1 -1
- package/dist/dtos/index.js +3 -0
- package/dist/dtos/index.js.map +1 -1
- package/dist/dtos/update-workflow-job.dto.d.ts +8 -0
- package/dist/dtos/update-workflow-job.dto.d.ts.map +1 -0
- package/dist/dtos/update-workflow-job.dto.js +46 -0
- package/dist/dtos/update-workflow-job.dto.js.map +1 -0
- package/dist/entities/workflow-job.entity.d.ts +17 -0
- package/dist/entities/workflow-job.entity.d.ts.map +1 -0
- package/dist/entities/workflow-job.entity.js +108 -0
- package/dist/entities/workflow-job.entity.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/index.d.ts +1 -0
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +5 -1
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/jobs/adapters/ioredis-lock.adapter.d.ts +4 -0
- package/dist/modules/jobs/adapters/ioredis-lock.adapter.d.ts.map +1 -0
- package/dist/modules/jobs/adapters/ioredis-lock.adapter.js +33 -0
- package/dist/modules/jobs/adapters/ioredis-lock.adapter.js.map +1 -0
- package/dist/modules/jobs/controllers/workflow-job.controller.d.ts +21 -0
- package/dist/modules/jobs/controllers/workflow-job.controller.d.ts.map +1 -0
- package/dist/modules/jobs/controllers/workflow-job.controller.js +130 -0
- package/dist/modules/jobs/controllers/workflow-job.controller.js.map +1 -0
- package/dist/modules/jobs/jobs-nest.module.d.ts +25 -0
- package/dist/modules/jobs/jobs-nest.module.d.ts.map +1 -0
- package/dist/modules/jobs/jobs-nest.module.js +188 -0
- package/dist/modules/jobs/jobs-nest.module.js.map +1 -0
- package/dist/modules/jobs/processors/workflow-job.processor.d.ts +28 -0
- package/dist/modules/jobs/processors/workflow-job.processor.d.ts.map +1 -0
- package/dist/modules/jobs/processors/workflow-job.processor.js +147 -0
- package/dist/modules/jobs/processors/workflow-job.processor.js.map +1 -0
- package/dist/modules/jobs/services/distributed-lock.service.d.ts +15 -0
- package/dist/modules/jobs/services/distributed-lock.service.d.ts.map +1 -0
- package/dist/modules/jobs/services/distributed-lock.service.js +49 -0
- package/dist/modules/jobs/services/distributed-lock.service.js.map +1 -0
- package/dist/modules/jobs/services/index.d.ts +4 -0
- package/dist/modules/jobs/services/index.d.ts.map +1 -0
- package/dist/modules/jobs/services/index.js +20 -0
- package/dist/modules/jobs/services/index.js.map +1 -0
- package/dist/modules/jobs/services/job-scheduler.service.d.ts +38 -0
- package/dist/modules/jobs/services/job-scheduler.service.d.ts.map +1 -0
- package/dist/modules/jobs/services/job-scheduler.service.js +112 -0
- package/dist/modules/jobs/services/job-scheduler.service.js.map +1 -0
- package/dist/modules/jobs/services/workflow-job.service.d.ts +26 -0
- package/dist/modules/jobs/services/workflow-job.service.d.ts.map +1 -0
- package/dist/modules/jobs/services/workflow-job.service.js +148 -0
- package/dist/modules/jobs/services/workflow-job.service.js.map +1 -0
- package/dist/modules/schedule/schedule-nest.module.d.ts +7 -0
- package/dist/modules/schedule/schedule-nest.module.d.ts.map +1 -0
- package/dist/modules/schedule/schedule-nest.module.js +36 -0
- package/dist/modules/schedule/schedule-nest.module.js.map +1 -0
- package/dist/modules/schedule/schedule.module.d.ts +3 -0
- package/dist/modules/schedule/schedule.module.d.ts.map +1 -0
- package/dist/modules/schedule/schedule.module.js +14 -0
- package/dist/modules/schedule/schedule.module.js.map +1 -0
- package/dist/modules/schedule/services/index.d.ts +2 -0
- package/dist/modules/schedule/services/index.d.ts.map +1 -0
- package/dist/modules/schedule/services/index.js +18 -0
- package/dist/modules/schedule/services/index.js.map +1 -0
- package/dist/modules/schedule/services/schedule-trigger.service.d.ts +13 -0
- package/dist/modules/schedule/services/schedule-trigger.service.d.ts.map +1 -0
- package/dist/modules/schedule/services/schedule-trigger.service.js +95 -0
- package/dist/modules/schedule/services/schedule-trigger.service.js.map +1 -0
- package/dist/modules/schedule/triggers/index.d.ts +2 -0
- package/dist/modules/schedule/triggers/index.d.ts.map +1 -0
- package/dist/modules/schedule/triggers/index.js +18 -0
- package/dist/modules/schedule/triggers/index.js.map +1 -0
- package/dist/modules/schedule/triggers/schedule.trigger.d.ts +9 -0
- package/dist/modules/schedule/triggers/schedule.trigger.d.ts.map +1 -0
- package/dist/modules/schedule/triggers/schedule.trigger.js +102 -0
- package/dist/modules/schedule/triggers/schedule.trigger.js.map +1 -0
- package/dist/services/workflow-bulk-credential.service.d.ts.map +1 -1
- package/dist/services/workflow-bulk-credential.service.js +15 -1
- package/dist/services/workflow-bulk-credential.service.js.map +1 -1
- package/dist/services/workflow-graph-delta.service.d.ts +18 -0
- package/dist/services/workflow-graph-delta.service.d.ts.map +1 -0
- package/dist/services/workflow-graph-delta.service.js +139 -0
- package/dist/services/workflow-graph-delta.service.js.map +1 -0
- package/dist/workflow-core.module.d.ts.map +1 -1
- package/dist/workflow-core.module.js +6 -0
- package/dist/workflow-core.module.js.map +1 -1
- package/package.json +118 -115
package/README.md
CHANGED
|
@@ -1,238 +1,238 @@
|
|
|
1
|
-
# Workflow Module
|
|
2
|
-
|
|
3
|
-
A comprehensive workflow management module for Venturial that handles workflow creation, execution, and session management.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- **Workflow Management**: Create, update, and manage workflows with nodes and edges
|
|
8
|
-
- **Node Types**: Support for multiple node types (Chatbot, AI, Conditional, Twilio)
|
|
9
|
-
- **Execution Tracking**: Track workflow executions with status and data
|
|
10
|
-
- **Session Management**: Persistent sessions for multi-step workflows
|
|
11
|
-
- **Execution Modes**: Support for single-run and persistent session workflows
|
|
12
|
-
|
|
13
|
-
## Installation
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
npm install @venturialstd/workflow
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Entities
|
|
20
|
-
|
|
21
|
-
### Workflow
|
|
22
|
-
Main workflow entity containing:
|
|
23
|
-
- `name`: Workflow name
|
|
24
|
-
- `active`: Whether the workflow is active
|
|
25
|
-
- `executionMode`: `single` or `persistent`
|
|
26
|
-
- `status`: `active`, `inactive`, or `draft`
|
|
27
|
-
- Relationships to nodes, edges, executions, and sessions
|
|
28
|
-
|
|
29
|
-
### WorkflowNode
|
|
30
|
-
Represents a node in the workflow:
|
|
31
|
-
- `nodeId`: ReactFlow node identifier
|
|
32
|
-
- `type`: Node type (chatbot, ai, conditional, twilio)
|
|
33
|
-
- `actionType`: Specific trigger or action identifier
|
|
34
|
-
- `properties`: Node-specific properties (JSONB)
|
|
35
|
-
- `position`: Node position on canvas (x, y)
|
|
36
|
-
|
|
37
|
-
### WorkflowEdge
|
|
38
|
-
Represents connections between nodes:
|
|
39
|
-
- `edgeId`: ReactFlow edge identifier
|
|
40
|
-
- `source`: Source node ID
|
|
41
|
-
- `target`: Target node ID
|
|
42
|
-
- `sourceHandle` / `targetHandle`: Handle identifiers
|
|
43
|
-
|
|
44
|
-
### WorkflowExecution
|
|
45
|
-
Tracks individual workflow runs:
|
|
46
|
-
- `status`: `pending`, `running`, `completed`, `failed`, `cancelled`
|
|
47
|
-
- `sessionId`: Optional session ID for persistent workflows
|
|
48
|
-
- `currentNodeId`: Current node being executed
|
|
49
|
-
- `inputData` / `outputData` / `errorData`: Execution data
|
|
50
|
-
|
|
51
|
-
### WorkflowSession
|
|
52
|
-
Manages persistent workflow sessions:
|
|
53
|
-
- `userId`: Optional user identifier
|
|
54
|
-
- `externalId`: External identifier (phone, email, etc.)
|
|
55
|
-
- `currentNodeId`: Current node in session
|
|
56
|
-
- `context`: Session context/variables (JSONB)
|
|
57
|
-
- `history`: Array of node execution history
|
|
58
|
-
|
|
59
|
-
### WorkflowModuleCredential
|
|
60
|
-
Stores credentials for workflow modules:
|
|
61
|
-
- `moduleId`: Module identifier (e.g., 'twilio', 'ai')
|
|
62
|
-
- `name`: User-defined name for this credential set
|
|
63
|
-
- `credentials`: Encrypted credential values (JSONB)
|
|
64
|
-
- `organizationId`: Optional organization scope
|
|
65
|
-
- `userId`: Optional user scope
|
|
66
|
-
- `isActive`: Whether the credential is active
|
|
67
|
-
|
|
68
|
-
## Services
|
|
69
|
-
|
|
70
|
-
All services extend `TypeOrmCrudService` and provide CRUD operations via `@dataui/crud`.
|
|
71
|
-
|
|
72
|
-
### WorkflowService
|
|
73
|
-
- `getWorkflowsByOrganization(organizationId)`
|
|
74
|
-
- `getActiveWorkflows(organizationId?)`
|
|
75
|
-
- `activateWorkflow(workflowId)`
|
|
76
|
-
- `deactivateWorkflow(workflowId)`
|
|
77
|
-
- `getWorkflowWithNodesAndEdges(workflowId)`
|
|
78
|
-
|
|
79
|
-
### WorkflowNodeService
|
|
80
|
-
- `getNodesByWorkflowId(workflowId)`
|
|
81
|
-
- `getNodeByNodeId(workflowId, nodeId)`
|
|
82
|
-
- `updateNodeProperties(id, properties)`
|
|
83
|
-
- `updateNodePosition(id, position)`
|
|
84
|
-
|
|
85
|
-
### WorkflowEdgeService
|
|
86
|
-
- `getEdgesByWorkflowId(workflowId)`
|
|
87
|
-
- `getEdgeByEdgeId(workflowId, edgeId)`
|
|
88
|
-
- `getEdgesBySourceNode(workflowId, sourceNodeId)`
|
|
89
|
-
- `getEdgesByTargetNode(workflowId, targetNodeId)`
|
|
90
|
-
|
|
91
|
-
### WorkflowExecutionService
|
|
92
|
-
- `getExecutionsByWorkflowId(workflowId)`
|
|
93
|
-
- `getExecutionsBySessionId(sessionId)`
|
|
94
|
-
- `getActiveExecutions(workflowId?)`
|
|
95
|
-
- `startExecution(executionId)`
|
|
96
|
-
- `completeExecution(executionId, outputData?)`
|
|
97
|
-
- `failExecution(executionId, errorMessage, errorData?)`
|
|
98
|
-
- `updateCurrentNode(executionId, currentNodeId)`
|
|
99
|
-
|
|
100
|
-
### WorkflowSessionService
|
|
101
|
-
- `getSessionsByWorkflowId(workflowId)`
|
|
102
|
-
- `getActiveSessions(workflowId?)`
|
|
103
|
-
- `getSessionByExternalId(workflowId, externalId)`
|
|
104
|
-
- `getSessionByUserId(workflowId, userId)`
|
|
105
|
-
- `updateSessionContext(sessionId, context)`
|
|
106
|
-
- `addToSessionHistory(sessionId, nodeId, data?)`
|
|
107
|
-
- `deactivateSession(sessionId)`
|
|
108
|
-
|
|
109
|
-
### WorkflowModuleCredentialService
|
|
110
|
-
- `getCredentialsByModule(moduleId, organizationId?, userId?)`
|
|
111
|
-
- `getCredentialByName(moduleId, name, organizationId?, userId?)`
|
|
112
|
-
- `getActiveCredentials(moduleId, organizationId?)`
|
|
113
|
-
- `updateCredential(id, credentials)`
|
|
114
|
-
- `activateCredential(id)`
|
|
115
|
-
- `deactivateCredential(id)`
|
|
116
|
-
|
|
117
|
-
## Usage
|
|
118
|
-
|
|
119
|
-
### Import the Module
|
|
120
|
-
|
|
121
|
-
```typescript
|
|
122
|
-
import { WorkflowModule } from '@venturialstd/workflow';
|
|
123
|
-
|
|
124
|
-
@Module({
|
|
125
|
-
imports: [WorkflowModule],
|
|
126
|
-
})
|
|
127
|
-
export class AppModule {}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Use Services
|
|
131
|
-
|
|
132
|
-
```typescript
|
|
133
|
-
import { WorkflowService } from '@venturialstd/workflow';
|
|
134
|
-
|
|
135
|
-
@Injectable()
|
|
136
|
-
export class MyService {
|
|
137
|
-
constructor(private workflowService: WorkflowService) {}
|
|
138
|
-
|
|
139
|
-
async createWorkflow(data: CreateWorkflowDto) {
|
|
140
|
-
return this.workflowService.create(data);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Constants
|
|
146
|
-
|
|
147
|
-
### Execution Modes
|
|
148
|
-
- `EXECUTION_MODE.SINGLE`: One-time execution
|
|
149
|
-
- `EXECUTION_MODE.PERSISTENT`: Maintains session state
|
|
150
|
-
|
|
151
|
-
### Node Types
|
|
152
|
-
- `NODE_TYPE.CHATBOT`
|
|
153
|
-
- `NODE_TYPE.AI`
|
|
154
|
-
- `NODE_TYPE.CONDITIONAL`
|
|
155
|
-
- `NODE_TYPE.TWILIO`
|
|
156
|
-
|
|
157
|
-
### Node Categories
|
|
158
|
-
- `NODE_CATEGORY.TRIGGER`
|
|
159
|
-
- `NODE_CATEGORY.ACTION`
|
|
160
|
-
|
|
161
|
-
### Workflow Status
|
|
162
|
-
- `WORKFLOW_STATUS.ACTIVE`
|
|
163
|
-
- `WORKFLOW_STATUS.INACTIVE`
|
|
164
|
-
- `WORKFLOW_STATUS.DRAFT`
|
|
165
|
-
|
|
166
|
-
### Execution Status
|
|
167
|
-
- `EXECUTION_STATUS.PENDING`
|
|
168
|
-
- `EXECUTION_STATUS.RUNNING`
|
|
169
|
-
- `EXECUTION_STATUS.COMPLETED`
|
|
170
|
-
- `EXECUTION_STATUS.FAILED`
|
|
171
|
-
- `EXECUTION_STATUS.CANCELLED`
|
|
172
|
-
|
|
173
|
-
## DTOs
|
|
174
|
-
|
|
175
|
-
All DTOs follow the `Create*Dto` pattern:
|
|
176
|
-
- `CreateWorkflowDto`
|
|
177
|
-
- `CreateWorkflowNodeDto`
|
|
178
|
-
- `CreateWorkflowEdgeDto`
|
|
179
|
-
- `CreateWorkflowExecutionDto`
|
|
180
|
-
- `CreateWorkflowSessionDto`
|
|
181
|
-
- `CreateWorkflowModuleCredentialDto`
|
|
182
|
-
- `UpdateWorkflowModuleCredentialDto`
|
|
183
|
-
|
|
184
|
-
## Database Schema
|
|
185
|
-
|
|
186
|
-
The module uses PostgreSQL with JSONB columns for flexible data storage:
|
|
187
|
-
- Node properties stored as JSONB
|
|
188
|
-
- Edge data stored as JSONB
|
|
189
|
-
- Execution input/output/error data as JSONB
|
|
190
|
-
- Session context and history as JSONB
|
|
191
|
-
- Module credentials stored as JSONB (should be encrypted at application level)
|
|
192
|
-
|
|
193
|
-
## Module Credentials
|
|
194
|
-
|
|
195
|
-
Each module can define required credential fields. Users can create multiple credential sets per module:
|
|
196
|
-
|
|
197
|
-
### Defining Credential Fields in Modules
|
|
198
|
-
|
|
199
|
-
Modules can define `credentialFields` in their module definition:
|
|
200
|
-
|
|
201
|
-
```typescript
|
|
202
|
-
credentialFields: [
|
|
203
|
-
{
|
|
204
|
-
id: 'apiKey',
|
|
205
|
-
name: 'API Key',
|
|
206
|
-
description: 'API key for the service',
|
|
207
|
-
type: FIELD_TYPE.STRING,
|
|
208
|
-
validation: { required: true },
|
|
209
|
-
sensitive: true, // Will be encrypted/masked
|
|
210
|
-
required: true,
|
|
211
|
-
},
|
|
212
|
-
]
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### Managing Credentials
|
|
216
|
-
|
|
217
|
-
```typescript
|
|
218
|
-
// Create credentials for a module
|
|
219
|
-
const credential = await credentialService.create({
|
|
220
|
-
moduleId: 'twilio',
|
|
221
|
-
name: 'Production Twilio',
|
|
222
|
-
credentials: {
|
|
223
|
-
accountSid: 'AC...',
|
|
224
|
-
authToken: '...',
|
|
225
|
-
},
|
|
226
|
-
organizationId: 'org-123',
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
// Get all credentials for a module
|
|
230
|
-
const credentials = await credentialService.getCredentialsByModule(
|
|
231
|
-
'twilio',
|
|
232
|
-
'org-123'
|
|
233
|
-
);
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
## License
|
|
237
|
-
|
|
238
|
-
Part of the Venturial Core NPM package.
|
|
1
|
+
# Workflow Module
|
|
2
|
+
|
|
3
|
+
A comprehensive workflow management module for Venturial that handles workflow creation, execution, and session management.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Workflow Management**: Create, update, and manage workflows with nodes and edges
|
|
8
|
+
- **Node Types**: Support for multiple node types (Chatbot, AI, Conditional, Twilio)
|
|
9
|
+
- **Execution Tracking**: Track workflow executions with status and data
|
|
10
|
+
- **Session Management**: Persistent sessions for multi-step workflows
|
|
11
|
+
- **Execution Modes**: Support for single-run and persistent session workflows
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @venturialstd/workflow
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Entities
|
|
20
|
+
|
|
21
|
+
### Workflow
|
|
22
|
+
Main workflow entity containing:
|
|
23
|
+
- `name`: Workflow name
|
|
24
|
+
- `active`: Whether the workflow is active
|
|
25
|
+
- `executionMode`: `single` or `persistent`
|
|
26
|
+
- `status`: `active`, `inactive`, or `draft`
|
|
27
|
+
- Relationships to nodes, edges, executions, and sessions
|
|
28
|
+
|
|
29
|
+
### WorkflowNode
|
|
30
|
+
Represents a node in the workflow:
|
|
31
|
+
- `nodeId`: ReactFlow node identifier
|
|
32
|
+
- `type`: Node type (chatbot, ai, conditional, twilio)
|
|
33
|
+
- `actionType`: Specific trigger or action identifier
|
|
34
|
+
- `properties`: Node-specific properties (JSONB)
|
|
35
|
+
- `position`: Node position on canvas (x, y)
|
|
36
|
+
|
|
37
|
+
### WorkflowEdge
|
|
38
|
+
Represents connections between nodes:
|
|
39
|
+
- `edgeId`: ReactFlow edge identifier
|
|
40
|
+
- `source`: Source node ID
|
|
41
|
+
- `target`: Target node ID
|
|
42
|
+
- `sourceHandle` / `targetHandle`: Handle identifiers
|
|
43
|
+
|
|
44
|
+
### WorkflowExecution
|
|
45
|
+
Tracks individual workflow runs:
|
|
46
|
+
- `status`: `pending`, `running`, `completed`, `failed`, `cancelled`
|
|
47
|
+
- `sessionId`: Optional session ID for persistent workflows
|
|
48
|
+
- `currentNodeId`: Current node being executed
|
|
49
|
+
- `inputData` / `outputData` / `errorData`: Execution data
|
|
50
|
+
|
|
51
|
+
### WorkflowSession
|
|
52
|
+
Manages persistent workflow sessions:
|
|
53
|
+
- `userId`: Optional user identifier
|
|
54
|
+
- `externalId`: External identifier (phone, email, etc.)
|
|
55
|
+
- `currentNodeId`: Current node in session
|
|
56
|
+
- `context`: Session context/variables (JSONB)
|
|
57
|
+
- `history`: Array of node execution history
|
|
58
|
+
|
|
59
|
+
### WorkflowModuleCredential
|
|
60
|
+
Stores credentials for workflow modules:
|
|
61
|
+
- `moduleId`: Module identifier (e.g., 'twilio', 'ai')
|
|
62
|
+
- `name`: User-defined name for this credential set
|
|
63
|
+
- `credentials`: Encrypted credential values (JSONB)
|
|
64
|
+
- `organizationId`: Optional organization scope
|
|
65
|
+
- `userId`: Optional user scope
|
|
66
|
+
- `isActive`: Whether the credential is active
|
|
67
|
+
|
|
68
|
+
## Services
|
|
69
|
+
|
|
70
|
+
All services extend `TypeOrmCrudService` and provide CRUD operations via `@dataui/crud`.
|
|
71
|
+
|
|
72
|
+
### WorkflowService
|
|
73
|
+
- `getWorkflowsByOrganization(organizationId)`
|
|
74
|
+
- `getActiveWorkflows(organizationId?)`
|
|
75
|
+
- `activateWorkflow(workflowId)`
|
|
76
|
+
- `deactivateWorkflow(workflowId)`
|
|
77
|
+
- `getWorkflowWithNodesAndEdges(workflowId)`
|
|
78
|
+
|
|
79
|
+
### WorkflowNodeService
|
|
80
|
+
- `getNodesByWorkflowId(workflowId)`
|
|
81
|
+
- `getNodeByNodeId(workflowId, nodeId)`
|
|
82
|
+
- `updateNodeProperties(id, properties)`
|
|
83
|
+
- `updateNodePosition(id, position)`
|
|
84
|
+
|
|
85
|
+
### WorkflowEdgeService
|
|
86
|
+
- `getEdgesByWorkflowId(workflowId)`
|
|
87
|
+
- `getEdgeByEdgeId(workflowId, edgeId)`
|
|
88
|
+
- `getEdgesBySourceNode(workflowId, sourceNodeId)`
|
|
89
|
+
- `getEdgesByTargetNode(workflowId, targetNodeId)`
|
|
90
|
+
|
|
91
|
+
### WorkflowExecutionService
|
|
92
|
+
- `getExecutionsByWorkflowId(workflowId)`
|
|
93
|
+
- `getExecutionsBySessionId(sessionId)`
|
|
94
|
+
- `getActiveExecutions(workflowId?)`
|
|
95
|
+
- `startExecution(executionId)`
|
|
96
|
+
- `completeExecution(executionId, outputData?)`
|
|
97
|
+
- `failExecution(executionId, errorMessage, errorData?)`
|
|
98
|
+
- `updateCurrentNode(executionId, currentNodeId)`
|
|
99
|
+
|
|
100
|
+
### WorkflowSessionService
|
|
101
|
+
- `getSessionsByWorkflowId(workflowId)`
|
|
102
|
+
- `getActiveSessions(workflowId?)`
|
|
103
|
+
- `getSessionByExternalId(workflowId, externalId)`
|
|
104
|
+
- `getSessionByUserId(workflowId, userId)`
|
|
105
|
+
- `updateSessionContext(sessionId, context)`
|
|
106
|
+
- `addToSessionHistory(sessionId, nodeId, data?)`
|
|
107
|
+
- `deactivateSession(sessionId)`
|
|
108
|
+
|
|
109
|
+
### WorkflowModuleCredentialService
|
|
110
|
+
- `getCredentialsByModule(moduleId, organizationId?, userId?)`
|
|
111
|
+
- `getCredentialByName(moduleId, name, organizationId?, userId?)`
|
|
112
|
+
- `getActiveCredentials(moduleId, organizationId?)`
|
|
113
|
+
- `updateCredential(id, credentials)`
|
|
114
|
+
- `activateCredential(id)`
|
|
115
|
+
- `deactivateCredential(id)`
|
|
116
|
+
|
|
117
|
+
## Usage
|
|
118
|
+
|
|
119
|
+
### Import the Module
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
import { WorkflowModule } from '@venturialstd/workflow';
|
|
123
|
+
|
|
124
|
+
@Module({
|
|
125
|
+
imports: [WorkflowModule],
|
|
126
|
+
})
|
|
127
|
+
export class AppModule {}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Use Services
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
import { WorkflowService } from '@venturialstd/workflow';
|
|
134
|
+
|
|
135
|
+
@Injectable()
|
|
136
|
+
export class MyService {
|
|
137
|
+
constructor(private workflowService: WorkflowService) {}
|
|
138
|
+
|
|
139
|
+
async createWorkflow(data: CreateWorkflowDto) {
|
|
140
|
+
return this.workflowService.create(data);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Constants
|
|
146
|
+
|
|
147
|
+
### Execution Modes
|
|
148
|
+
- `EXECUTION_MODE.SINGLE`: One-time execution
|
|
149
|
+
- `EXECUTION_MODE.PERSISTENT`: Maintains session state
|
|
150
|
+
|
|
151
|
+
### Node Types
|
|
152
|
+
- `NODE_TYPE.CHATBOT`
|
|
153
|
+
- `NODE_TYPE.AI`
|
|
154
|
+
- `NODE_TYPE.CONDITIONAL`
|
|
155
|
+
- `NODE_TYPE.TWILIO`
|
|
156
|
+
|
|
157
|
+
### Node Categories
|
|
158
|
+
- `NODE_CATEGORY.TRIGGER`
|
|
159
|
+
- `NODE_CATEGORY.ACTION`
|
|
160
|
+
|
|
161
|
+
### Workflow Status
|
|
162
|
+
- `WORKFLOW_STATUS.ACTIVE`
|
|
163
|
+
- `WORKFLOW_STATUS.INACTIVE`
|
|
164
|
+
- `WORKFLOW_STATUS.DRAFT`
|
|
165
|
+
|
|
166
|
+
### Execution Status
|
|
167
|
+
- `EXECUTION_STATUS.PENDING`
|
|
168
|
+
- `EXECUTION_STATUS.RUNNING`
|
|
169
|
+
- `EXECUTION_STATUS.COMPLETED`
|
|
170
|
+
- `EXECUTION_STATUS.FAILED`
|
|
171
|
+
- `EXECUTION_STATUS.CANCELLED`
|
|
172
|
+
|
|
173
|
+
## DTOs
|
|
174
|
+
|
|
175
|
+
All DTOs follow the `Create*Dto` pattern:
|
|
176
|
+
- `CreateWorkflowDto`
|
|
177
|
+
- `CreateWorkflowNodeDto`
|
|
178
|
+
- `CreateWorkflowEdgeDto`
|
|
179
|
+
- `CreateWorkflowExecutionDto`
|
|
180
|
+
- `CreateWorkflowSessionDto`
|
|
181
|
+
- `CreateWorkflowModuleCredentialDto`
|
|
182
|
+
- `UpdateWorkflowModuleCredentialDto`
|
|
183
|
+
|
|
184
|
+
## Database Schema
|
|
185
|
+
|
|
186
|
+
The module uses PostgreSQL with JSONB columns for flexible data storage:
|
|
187
|
+
- Node properties stored as JSONB
|
|
188
|
+
- Edge data stored as JSONB
|
|
189
|
+
- Execution input/output/error data as JSONB
|
|
190
|
+
- Session context and history as JSONB
|
|
191
|
+
- Module credentials stored as JSONB (should be encrypted at application level)
|
|
192
|
+
|
|
193
|
+
## Module Credentials
|
|
194
|
+
|
|
195
|
+
Each module can define required credential fields. Users can create multiple credential sets per module:
|
|
196
|
+
|
|
197
|
+
### Defining Credential Fields in Modules
|
|
198
|
+
|
|
199
|
+
Modules can define `credentialFields` in their module definition:
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
credentialFields: [
|
|
203
|
+
{
|
|
204
|
+
id: 'apiKey',
|
|
205
|
+
name: 'API Key',
|
|
206
|
+
description: 'API key for the service',
|
|
207
|
+
type: FIELD_TYPE.STRING,
|
|
208
|
+
validation: { required: true },
|
|
209
|
+
sensitive: true, // Will be encrypted/masked
|
|
210
|
+
required: true,
|
|
211
|
+
},
|
|
212
|
+
]
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Managing Credentials
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
// Create credentials for a module
|
|
219
|
+
const credential = await credentialService.create({
|
|
220
|
+
moduleId: 'twilio',
|
|
221
|
+
name: 'Production Twilio',
|
|
222
|
+
credentials: {
|
|
223
|
+
accountSid: 'AC...',
|
|
224
|
+
authToken: '...',
|
|
225
|
+
},
|
|
226
|
+
organizationId: 'org-123',
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
// Get all credentials for a module
|
|
230
|
+
const credentials = await credentialService.getCredentialsByModule(
|
|
231
|
+
'twilio',
|
|
232
|
+
'org-123'
|
|
233
|
+
);
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## License
|
|
237
|
+
|
|
238
|
+
Part of the Venturial Core NPM package.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CreateWorkflowEdgeDto } from './create-workflow-edge.dto';
|
|
2
|
+
import { CreateWorkflowNodeDto } from './create-workflow-node.dto';
|
|
3
|
+
export declare class UpdateWorkflowNodeItemDto {
|
|
4
|
+
nodeId: string;
|
|
5
|
+
data: Partial<Omit<CreateWorkflowNodeDto, 'workflowId' | 'nodeId'>>;
|
|
6
|
+
}
|
|
7
|
+
export declare class UpdateWorkflowEdgeItemDto {
|
|
8
|
+
edgeId: string;
|
|
9
|
+
data: Partial<Omit<CreateWorkflowEdgeDto, 'workflowId' | 'edgeId'>>;
|
|
10
|
+
}
|
|
11
|
+
export declare class ApplyWorkflowGraphDeltaDto {
|
|
12
|
+
nodesToCreate?: CreateWorkflowNodeDto[];
|
|
13
|
+
nodesToUpdate?: UpdateWorkflowNodeItemDto[];
|
|
14
|
+
nodeIdsToDelete?: string[];
|
|
15
|
+
edgesToCreate?: CreateWorkflowEdgeDto[];
|
|
16
|
+
edgesToUpdate?: UpdateWorkflowEdgeItemDto[];
|
|
17
|
+
edgeIdsToDelete?: string[];
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=apply-workflow-graph-delta.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-workflow-graph-delta.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/apply-workflow-graph-delta.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,qBAAa,yBAAyB;IAGpC,MAAM,EAAE,MAAM,CAAC;IAGf,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC;CACrE;AAGD,qBAAa,yBAAyB;IAGpC,MAAM,EAAE,MAAM,CAAC;IAGf,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC;CACrE;AAMD,qBAAa,0BAA0B;IAKrC,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAMxC,aAAa,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAK5C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAM3B,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAMxC,aAAa,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAK5C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ApplyWorkflowGraphDeltaDto = exports.UpdateWorkflowEdgeItemDto = exports.UpdateWorkflowNodeItemDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const create_workflow_edge_dto_1 = require("./create-workflow-edge.dto");
|
|
16
|
+
const create_workflow_node_dto_1 = require("./create-workflow-node.dto");
|
|
17
|
+
class UpdateWorkflowNodeItemDto {
|
|
18
|
+
nodeId;
|
|
19
|
+
data;
|
|
20
|
+
}
|
|
21
|
+
exports.UpdateWorkflowNodeItemDto = UpdateWorkflowNodeItemDto;
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, class_validator_1.IsString)(),
|
|
24
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], UpdateWorkflowNodeItemDto.prototype, "nodeId", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, class_validator_1.IsObject)(),
|
|
29
|
+
__metadata("design:type", Object)
|
|
30
|
+
], UpdateWorkflowNodeItemDto.prototype, "data", void 0);
|
|
31
|
+
class UpdateWorkflowEdgeItemDto {
|
|
32
|
+
edgeId;
|
|
33
|
+
data;
|
|
34
|
+
}
|
|
35
|
+
exports.UpdateWorkflowEdgeItemDto = UpdateWorkflowEdgeItemDto;
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_validator_1.IsString)(),
|
|
38
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], UpdateWorkflowEdgeItemDto.prototype, "edgeId", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, class_validator_1.IsObject)(),
|
|
43
|
+
__metadata("design:type", Object)
|
|
44
|
+
], UpdateWorkflowEdgeItemDto.prototype, "data", void 0);
|
|
45
|
+
class ApplyWorkflowGraphDeltaDto {
|
|
46
|
+
nodesToCreate;
|
|
47
|
+
nodesToUpdate;
|
|
48
|
+
nodeIdsToDelete;
|
|
49
|
+
edgesToCreate;
|
|
50
|
+
edgesToUpdate;
|
|
51
|
+
edgeIdsToDelete;
|
|
52
|
+
}
|
|
53
|
+
exports.ApplyWorkflowGraphDeltaDto = ApplyWorkflowGraphDeltaDto;
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, class_validator_1.IsOptional)(),
|
|
56
|
+
(0, class_validator_1.IsArray)(),
|
|
57
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
58
|
+
(0, class_transformer_1.Type)(() => create_workflow_node_dto_1.CreateWorkflowNodeDto),
|
|
59
|
+
__metadata("design:type", Array)
|
|
60
|
+
], ApplyWorkflowGraphDeltaDto.prototype, "nodesToCreate", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, class_validator_1.IsOptional)(),
|
|
63
|
+
(0, class_validator_1.IsArray)(),
|
|
64
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
65
|
+
(0, class_transformer_1.Type)(() => UpdateWorkflowNodeItemDto),
|
|
66
|
+
__metadata("design:type", Array)
|
|
67
|
+
], ApplyWorkflowGraphDeltaDto.prototype, "nodesToUpdate", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, class_validator_1.IsOptional)(),
|
|
70
|
+
(0, class_validator_1.IsArray)(),
|
|
71
|
+
__metadata("design:type", Array)
|
|
72
|
+
], ApplyWorkflowGraphDeltaDto.prototype, "nodeIdsToDelete", void 0);
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, class_validator_1.IsOptional)(),
|
|
75
|
+
(0, class_validator_1.IsArray)(),
|
|
76
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
77
|
+
(0, class_transformer_1.Type)(() => create_workflow_edge_dto_1.CreateWorkflowEdgeDto),
|
|
78
|
+
__metadata("design:type", Array)
|
|
79
|
+
], ApplyWorkflowGraphDeltaDto.prototype, "edgesToCreate", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, class_validator_1.IsOptional)(),
|
|
82
|
+
(0, class_validator_1.IsArray)(),
|
|
83
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
84
|
+
(0, class_transformer_1.Type)(() => UpdateWorkflowEdgeItemDto),
|
|
85
|
+
__metadata("design:type", Array)
|
|
86
|
+
], ApplyWorkflowGraphDeltaDto.prototype, "edgesToUpdate", void 0);
|
|
87
|
+
__decorate([
|
|
88
|
+
(0, class_validator_1.IsOptional)(),
|
|
89
|
+
(0, class_validator_1.IsArray)(),
|
|
90
|
+
__metadata("design:type", Array)
|
|
91
|
+
], ApplyWorkflowGraphDeltaDto.prototype, "edgeIdsToDelete", void 0);
|
|
92
|
+
//# sourceMappingURL=apply-workflow-graph-delta.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-workflow-graph-delta.dto.js","sourceRoot":"","sources":["../../src/dtos/apply-workflow-graph-delta.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAyC;AACzC,qDAAsG;AAEtG,yEAAmE;AACnE,yEAAmE;AAGnE,MAAa,yBAAyB;IAGpC,MAAM,CAAS;IAGf,IAAI,CAAgE;CACrE;AAPD,8DAOC;AAJC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;yDACE;AAGf;IADC,IAAA,0BAAQ,GAAE;;uDACyD;AAItE,MAAa,yBAAyB;IAGpC,MAAM,CAAS;IAGf,IAAI,CAAgE;CACrE;AAPD,8DAOC;AAJC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;yDACE;AAGf;IADC,IAAA,0BAAQ,GAAE;;uDACyD;AAOtE,MAAa,0BAA0B;IAKrC,aAAa,CAA2B;IAMxC,aAAa,CAA+B;IAK5C,eAAe,CAAY;IAM3B,aAAa,CAA2B;IAMxC,aAAa,CAA+B;IAK5C,eAAe,CAAY;CAC5B;AAlCD,gEAkCC;AA7BC;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,gDAAqB,CAAC;;iEACM;AAMxC;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC;;iEACM;AAK5C;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;;mEACiB;AAM3B;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,gDAAqB,CAAC;;iEACM;AAMxC;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC;;iEACM;AAK5C;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;;mEACiB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class CreateWorkflowJobDto {
|
|
2
|
+
workflowId: string;
|
|
3
|
+
triggerNodeId?: string;
|
|
4
|
+
name: string;
|
|
5
|
+
cronExpression: string;
|
|
6
|
+
timezone?: string;
|
|
7
|
+
isActive?: boolean;
|
|
8
|
+
payload?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=create-workflow-job.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-workflow-job.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/create-workflow-job.dto.ts"],"names":[],"mappings":"AAEA,qBAAa,oBAAoB;IAG/B,UAAU,EAAE,MAAM,CAAC;IAInB,aAAa,CAAC,EAAE,MAAM,CAAC;IAIvB,IAAI,EAAE,MAAM,CAAC;IAIb,cAAc,EAAE,MAAM,CAAC;IAIvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAIlB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CreateWorkflowJobDto = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
class CreateWorkflowJobDto {
|
|
15
|
+
workflowId;
|
|
16
|
+
triggerNodeId;
|
|
17
|
+
name;
|
|
18
|
+
cronExpression;
|
|
19
|
+
timezone;
|
|
20
|
+
isActive;
|
|
21
|
+
payload;
|
|
22
|
+
}
|
|
23
|
+
exports.CreateWorkflowJobDto = CreateWorkflowJobDto;
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_validator_1.IsString)(),
|
|
26
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], CreateWorkflowJobDto.prototype, "workflowId", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_validator_1.IsString)(),
|
|
31
|
+
(0, class_validator_1.IsOptional)(),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], CreateWorkflowJobDto.prototype, "triggerNodeId", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, class_validator_1.IsString)(),
|
|
36
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], CreateWorkflowJobDto.prototype, "name", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, class_validator_1.IsString)(),
|
|
41
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], CreateWorkflowJobDto.prototype, "cronExpression", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, class_validator_1.IsString)(),
|
|
46
|
+
(0, class_validator_1.IsOptional)(),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], CreateWorkflowJobDto.prototype, "timezone", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, class_validator_1.IsBoolean)(),
|
|
51
|
+
(0, class_validator_1.IsOptional)(),
|
|
52
|
+
__metadata("design:type", Boolean)
|
|
53
|
+
], CreateWorkflowJobDto.prototype, "isActive", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, class_validator_1.IsOptional)(),
|
|
56
|
+
__metadata("design:type", Object)
|
|
57
|
+
], CreateWorkflowJobDto.prototype, "payload", void 0);
|
|
58
|
+
//# sourceMappingURL=create-workflow-job.dto.js.map
|