@quanticjs/workflow-kogito 2.1.0
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/dist/KogitoClient.d.ts +19 -0
- package/dist/KogitoClient.js +49 -0
- package/dist/KogitoWorkflowEngine.d.ts +13 -0
- package/dist/KogitoWorkflowEngine.js +46 -0
- package/dist/KogitoWorkflowModule.d.ts +9 -0
- package/dist/KogitoWorkflowModule.js +43 -0
- package/dist/WorkflowCallbackService.d.ts +12 -0
- package/dist/WorkflowCallbackService.js +33 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +11 -0
- package/package.json +43 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { HttpService } from '@nestjs/axios';
|
|
2
|
+
export interface KogitoProcessInstance {
|
|
3
|
+
id: string;
|
|
4
|
+
processId: string;
|
|
5
|
+
state: number;
|
|
6
|
+
variables: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export declare class KogitoClient {
|
|
9
|
+
private readonly httpService;
|
|
10
|
+
private readonly logger;
|
|
11
|
+
constructor(httpService: HttpService);
|
|
12
|
+
startProcess(processId: string, variables: Record<string, unknown>): Promise<{
|
|
13
|
+
id: string;
|
|
14
|
+
}>;
|
|
15
|
+
signalProcess(processId: string, instanceId: string, signal: string, data?: unknown): Promise<void>;
|
|
16
|
+
updateVariables(processId: string, instanceId: string, variables: Record<string, unknown>): Promise<void>;
|
|
17
|
+
abortProcess(processId: string, instanceId: string): Promise<void>;
|
|
18
|
+
getProcessInstance(processId: string, instanceId: string): Promise<KogitoProcessInstance>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
var KogitoClient_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.KogitoClient = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const axios_1 = require("@nestjs/axios");
|
|
16
|
+
const rxjs_1 = require("rxjs");
|
|
17
|
+
let KogitoClient = KogitoClient_1 = class KogitoClient {
|
|
18
|
+
httpService;
|
|
19
|
+
logger = new common_1.Logger(KogitoClient_1.name);
|
|
20
|
+
constructor(httpService) {
|
|
21
|
+
this.httpService = httpService;
|
|
22
|
+
}
|
|
23
|
+
async startProcess(processId, variables) {
|
|
24
|
+
const { data } = await (0, rxjs_1.firstValueFrom)(this.httpService.post(`/${processId}`, variables));
|
|
25
|
+
this.logger.log(`Started process ${processId}, instance: ${data.id}`);
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
async signalProcess(processId, instanceId, signal, data) {
|
|
29
|
+
await (0, rxjs_1.firstValueFrom)(this.httpService.post(`/${processId}/${instanceId}/${signal}`, data ?? {}));
|
|
30
|
+
this.logger.log(`Signaled process ${processId}/${instanceId} with ${signal}`);
|
|
31
|
+
}
|
|
32
|
+
async updateVariables(processId, instanceId, variables) {
|
|
33
|
+
await (0, rxjs_1.firstValueFrom)(this.httpService.put(`/${processId}/${instanceId}`, variables));
|
|
34
|
+
this.logger.log(`Updated variables for ${processId}/${instanceId}`);
|
|
35
|
+
}
|
|
36
|
+
async abortProcess(processId, instanceId) {
|
|
37
|
+
await (0, rxjs_1.firstValueFrom)(this.httpService.delete(`/${processId}/${instanceId}`));
|
|
38
|
+
this.logger.log(`Aborted process ${processId}/${instanceId}`);
|
|
39
|
+
}
|
|
40
|
+
async getProcessInstance(processId, instanceId) {
|
|
41
|
+
const { data } = await (0, rxjs_1.firstValueFrom)(this.httpService.get(`/${processId}/${instanceId}`));
|
|
42
|
+
return data;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.KogitoClient = KogitoClient;
|
|
46
|
+
exports.KogitoClient = KogitoClient = KogitoClient_1 = __decorate([
|
|
47
|
+
(0, common_1.Injectable)(),
|
|
48
|
+
__metadata("design:paramtypes", [axios_1.HttpService])
|
|
49
|
+
], KogitoClient);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WorkflowEngine, WorkflowStartResult } from '@quanticjs/core';
|
|
2
|
+
import { KogitoClient } from './KogitoClient';
|
|
3
|
+
export declare class KogitoWorkflowEngine implements WorkflowEngine {
|
|
4
|
+
private readonly kogitoClient;
|
|
5
|
+
private readonly logger;
|
|
6
|
+
constructor(kogitoClient: KogitoClient);
|
|
7
|
+
startProcess(processDefinitionId: string, command: object, metadata: {
|
|
8
|
+
commandType: string;
|
|
9
|
+
correlationId?: string;
|
|
10
|
+
}): Promise<WorkflowStartResult>;
|
|
11
|
+
signalProcess(_processInstanceId: string, _signal: string, _data?: unknown): Promise<void>;
|
|
12
|
+
abortProcess(_processInstanceId: string): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
var KogitoWorkflowEngine_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.KogitoWorkflowEngine = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const KogitoClient_1 = require("./KogitoClient");
|
|
16
|
+
let KogitoWorkflowEngine = KogitoWorkflowEngine_1 = class KogitoWorkflowEngine {
|
|
17
|
+
kogitoClient;
|
|
18
|
+
logger = new common_1.Logger(KogitoWorkflowEngine_1.name);
|
|
19
|
+
constructor(kogitoClient) {
|
|
20
|
+
this.kogitoClient = kogitoClient;
|
|
21
|
+
}
|
|
22
|
+
async startProcess(processDefinitionId, command, metadata) {
|
|
23
|
+
const variables = {
|
|
24
|
+
...JSON.parse(JSON.stringify(command)),
|
|
25
|
+
__commandType: metadata.commandType,
|
|
26
|
+
};
|
|
27
|
+
const { id: processInstanceId } = await this.kogitoClient.startProcess(processDefinitionId, variables);
|
|
28
|
+
this.logger.log(`Workflow started: process=${processInstanceId}, definition=${processDefinitionId}`);
|
|
29
|
+
return {
|
|
30
|
+
workflowInstanceId: processInstanceId,
|
|
31
|
+
processInstanceId,
|
|
32
|
+
status: 'STARTED',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async signalProcess(_processInstanceId, _signal, _data) {
|
|
36
|
+
throw new Error('signalProcess is not supported — this package only starts Kogito processes');
|
|
37
|
+
}
|
|
38
|
+
async abortProcess(_processInstanceId) {
|
|
39
|
+
throw new Error('abortProcess is not supported — this package only starts Kogito processes');
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
exports.KogitoWorkflowEngine = KogitoWorkflowEngine;
|
|
43
|
+
exports.KogitoWorkflowEngine = KogitoWorkflowEngine = KogitoWorkflowEngine_1 = __decorate([
|
|
44
|
+
(0, common_1.Injectable)(),
|
|
45
|
+
__metadata("design:paramtypes", [KogitoClient_1.KogitoClient])
|
|
46
|
+
], KogitoWorkflowEngine);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DynamicModule } from '@nestjs/common';
|
|
2
|
+
export interface KogitoWorkflowModuleOptions {
|
|
3
|
+
url: string;
|
|
4
|
+
requestTimeout?: number;
|
|
5
|
+
callbackSecret?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class KogitoWorkflowModule {
|
|
8
|
+
static forRoot(options: KogitoWorkflowModuleOptions): DynamicModule;
|
|
9
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
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 KogitoWorkflowModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.KogitoWorkflowModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const axios_1 = require("@nestjs/axios");
|
|
13
|
+
const core_1 = require("@quanticjs/core");
|
|
14
|
+
const KogitoClient_1 = require("./KogitoClient");
|
|
15
|
+
const KogitoWorkflowEngine_1 = require("./KogitoWorkflowEngine");
|
|
16
|
+
const WorkflowCallbackService_1 = require("./WorkflowCallbackService");
|
|
17
|
+
let KogitoWorkflowModule = KogitoWorkflowModule_1 = class KogitoWorkflowModule {
|
|
18
|
+
static forRoot(options) {
|
|
19
|
+
return {
|
|
20
|
+
module: KogitoWorkflowModule_1,
|
|
21
|
+
imports: [
|
|
22
|
+
axios_1.HttpModule.register({
|
|
23
|
+
baseURL: options.url,
|
|
24
|
+
timeout: options.requestTimeout ?? 10000,
|
|
25
|
+
}),
|
|
26
|
+
],
|
|
27
|
+
providers: [
|
|
28
|
+
KogitoClient_1.KogitoClient,
|
|
29
|
+
{
|
|
30
|
+
provide: core_1.WORKFLOW_ENGINE,
|
|
31
|
+
useClass: KogitoWorkflowEngine_1.KogitoWorkflowEngine,
|
|
32
|
+
},
|
|
33
|
+
WorkflowCallbackService_1.WorkflowCallbackService,
|
|
34
|
+
],
|
|
35
|
+
exports: [core_1.WORKFLOW_ENGINE, KogitoClient_1.KogitoClient, WorkflowCallbackService_1.WorkflowCallbackService],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.KogitoWorkflowModule = KogitoWorkflowModule;
|
|
40
|
+
exports.KogitoWorkflowModule = KogitoWorkflowModule = KogitoWorkflowModule_1 = __decorate([
|
|
41
|
+
(0, common_1.Global)(),
|
|
42
|
+
(0, common_1.Module)({})
|
|
43
|
+
], KogitoWorkflowModule);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CommandBus } from '@nestjs/cqrs';
|
|
2
|
+
export interface KogitoCallbackPayload {
|
|
3
|
+
processInstanceId: string;
|
|
4
|
+
processId: string;
|
|
5
|
+
variables: Record<string, unknown>;
|
|
6
|
+
}
|
|
7
|
+
export declare class WorkflowCallbackService {
|
|
8
|
+
private readonly commandBus;
|
|
9
|
+
private readonly logger;
|
|
10
|
+
constructor(commandBus: CommandBus);
|
|
11
|
+
handle<T>(CommandClass: new (...args: any[]) => object, payload: KogitoCallbackPayload): Promise<T>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
var WorkflowCallbackService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.WorkflowCallbackService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const cqrs_1 = require("@nestjs/cqrs");
|
|
16
|
+
let WorkflowCallbackService = WorkflowCallbackService_1 = class WorkflowCallbackService {
|
|
17
|
+
commandBus;
|
|
18
|
+
logger = new common_1.Logger(WorkflowCallbackService_1.name);
|
|
19
|
+
constructor(commandBus) {
|
|
20
|
+
this.commandBus = commandBus;
|
|
21
|
+
}
|
|
22
|
+
async handle(CommandClass, payload) {
|
|
23
|
+
const { __commandType, ...variables } = payload.variables;
|
|
24
|
+
const command = Object.assign(new CommandClass(), variables);
|
|
25
|
+
this.logger.log(`Workflow callback: process=${payload.processId}, instance=${payload.processInstanceId}, dispatching=${CommandClass.name}`);
|
|
26
|
+
return this.commandBus.execute(command);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
exports.WorkflowCallbackService = WorkflowCallbackService;
|
|
30
|
+
exports.WorkflowCallbackService = WorkflowCallbackService = WorkflowCallbackService_1 = __decorate([
|
|
31
|
+
(0, common_1.Injectable)(),
|
|
32
|
+
__metadata("design:paramtypes", [cqrs_1.CommandBus])
|
|
33
|
+
], WorkflowCallbackService);
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { KogitoWorkflowModule } from './KogitoWorkflowModule';
|
|
2
|
+
export type { KogitoWorkflowModuleOptions } from './KogitoWorkflowModule';
|
|
3
|
+
export { KogitoClient } from './KogitoClient';
|
|
4
|
+
export type { KogitoProcessInstance } from './KogitoClient';
|
|
5
|
+
export { KogitoWorkflowEngine } from './KogitoWorkflowEngine';
|
|
6
|
+
export { WorkflowCallbackService } from './WorkflowCallbackService';
|
|
7
|
+
export type { KogitoCallbackPayload } from './WorkflowCallbackService';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowCallbackService = exports.KogitoWorkflowEngine = exports.KogitoClient = exports.KogitoWorkflowModule = void 0;
|
|
4
|
+
var KogitoWorkflowModule_1 = require("./KogitoWorkflowModule");
|
|
5
|
+
Object.defineProperty(exports, "KogitoWorkflowModule", { enumerable: true, get: function () { return KogitoWorkflowModule_1.KogitoWorkflowModule; } });
|
|
6
|
+
var KogitoClient_1 = require("./KogitoClient");
|
|
7
|
+
Object.defineProperty(exports, "KogitoClient", { enumerable: true, get: function () { return KogitoClient_1.KogitoClient; } });
|
|
8
|
+
var KogitoWorkflowEngine_1 = require("./KogitoWorkflowEngine");
|
|
9
|
+
Object.defineProperty(exports, "KogitoWorkflowEngine", { enumerable: true, get: function () { return KogitoWorkflowEngine_1.KogitoWorkflowEngine; } });
|
|
10
|
+
var WorkflowCallbackService_1 = require("./WorkflowCallbackService");
|
|
11
|
+
Object.defineProperty(exports, "WorkflowCallbackService", { enumerable: true, get: function () { return WorkflowCallbackService_1.WorkflowCallbackService; } });
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quanticjs/workflow-kogito",
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Kogito workflow engine adapter for @quanticjs/workflow",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"test": "jest --config jest.config.js",
|
|
13
|
+
"clean": "rm -rf dist"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"nestjs",
|
|
17
|
+
"cqrs",
|
|
18
|
+
"kogito",
|
|
19
|
+
"workflow",
|
|
20
|
+
"bpmn"
|
|
21
|
+
],
|
|
22
|
+
"author": "turkelk",
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@nestjs/axios": "^4.0.0",
|
|
26
|
+
"@quanticjs/core": "^2.1.0",
|
|
27
|
+
"axios": "^1.6.0"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"@nestjs/common": "^10.0.0 || ^11.0.0",
|
|
31
|
+
"@nestjs/core": "^10.0.0 || ^11.0.0",
|
|
32
|
+
"reflect-metadata": "^0.1.13 || ^0.2.0"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"registry": "https://registry.npmjs.org",
|
|
36
|
+
"access": "public"
|
|
37
|
+
},
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://github.com/quanticjs/quanticjs-backend.git",
|
|
41
|
+
"directory": "packages/workflow-kogito"
|
|
42
|
+
}
|
|
43
|
+
}
|