@quanticjs/workflow 2.0.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/QuanticWorkflowModule.d.ts +4 -0
- package/dist/QuanticWorkflowModule.js +32 -0
- package/dist/WorkflowBehavior.d.ts +10 -0
- package/dist/WorkflowBehavior.js +61 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +7 -0
- package/package.json +26 -0
|
@@ -0,0 +1,32 @@
|
|
|
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 QuanticWorkflowModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.QuanticWorkflowModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const core_1 = require("@quanticjs/core");
|
|
13
|
+
const WorkflowBehavior_1 = require("./WorkflowBehavior");
|
|
14
|
+
let QuanticWorkflowModule = QuanticWorkflowModule_1 = class QuanticWorkflowModule {
|
|
15
|
+
static forRoot() {
|
|
16
|
+
return {
|
|
17
|
+
module: QuanticWorkflowModule_1,
|
|
18
|
+
providers: [
|
|
19
|
+
WorkflowBehavior_1.WorkflowBehavior,
|
|
20
|
+
{ provide: core_1.PIPELINE_BEHAVIOR, useExisting: WorkflowBehavior_1.WorkflowBehavior, multi: true },
|
|
21
|
+
],
|
|
22
|
+
exports: [
|
|
23
|
+
WorkflowBehavior_1.WorkflowBehavior,
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.QuanticWorkflowModule = QuanticWorkflowModule;
|
|
29
|
+
exports.QuanticWorkflowModule = QuanticWorkflowModule = QuanticWorkflowModule_1 = __decorate([
|
|
30
|
+
(0, common_1.Global)(),
|
|
31
|
+
(0, common_1.Module)({})
|
|
32
|
+
], QuanticWorkflowModule);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Result, PipelineBehavior, PipelineScope } from '@quanticjs/core';
|
|
2
|
+
import type { WorkflowEngine } from '@quanticjs/core';
|
|
3
|
+
export declare class WorkflowBehavior implements PipelineBehavior {
|
|
4
|
+
private readonly engine?;
|
|
5
|
+
readonly order: 50;
|
|
6
|
+
readonly scope: PipelineScope;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
constructor(engine?: WorkflowEngine | undefined);
|
|
9
|
+
execute<T>(command: object, next: () => Promise<Result<T>>): Promise<Result<T>>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var WorkflowBehavior_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.WorkflowBehavior = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const core_1 = require("@quanticjs/core");
|
|
19
|
+
let WorkflowBehavior = WorkflowBehavior_1 = class WorkflowBehavior {
|
|
20
|
+
engine;
|
|
21
|
+
order = core_1.BehaviorOrder.WORKFLOW;
|
|
22
|
+
scope = 'command';
|
|
23
|
+
logger = new common_1.Logger(WorkflowBehavior_1.name);
|
|
24
|
+
constructor(engine) {
|
|
25
|
+
this.engine = engine;
|
|
26
|
+
}
|
|
27
|
+
async execute(command, next) {
|
|
28
|
+
const metadata = (0, core_1.getWorkflowMetadata)(command.constructor);
|
|
29
|
+
if (!metadata) {
|
|
30
|
+
return next();
|
|
31
|
+
}
|
|
32
|
+
if (!this.engine) {
|
|
33
|
+
this.logger.debug('No WorkflowEngine provided, skipping workflow behavior');
|
|
34
|
+
return next();
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const result = await this.engine.startProcess(metadata.processDefinitionId, command, { commandType: command.constructor.name });
|
|
38
|
+
return core_1.Result.success(result);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
const fallback = metadata.fallback ?? 'throw';
|
|
42
|
+
this.logger.warn(`Workflow start failed for "${metadata.processDefinitionId}", applying fallback: ${fallback}`, error.message);
|
|
43
|
+
switch (fallback) {
|
|
44
|
+
case 'skip':
|
|
45
|
+
return next();
|
|
46
|
+
case 'queue':
|
|
47
|
+
return core_1.Result.failure(core_1.ErrorType.InternalError, `Workflow queuing not available without companion package: ${error.message}`);
|
|
48
|
+
case 'throw':
|
|
49
|
+
default:
|
|
50
|
+
return core_1.Result.failure(core_1.ErrorType.InternalError, `Workflow start failed: ${error.message}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
exports.WorkflowBehavior = WorkflowBehavior;
|
|
56
|
+
exports.WorkflowBehavior = WorkflowBehavior = WorkflowBehavior_1 = __decorate([
|
|
57
|
+
(0, common_1.Injectable)(),
|
|
58
|
+
__param(0, (0, common_1.Optional)()),
|
|
59
|
+
__param(0, (0, common_1.Inject)(core_1.WORKFLOW_ENGINE)),
|
|
60
|
+
__metadata("design:paramtypes", [Object])
|
|
61
|
+
], WorkflowBehavior);
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QuanticWorkflowModule = exports.WorkflowBehavior = void 0;
|
|
4
|
+
var WorkflowBehavior_1 = require("./WorkflowBehavior");
|
|
5
|
+
Object.defineProperty(exports, "WorkflowBehavior", { enumerable: true, get: function () { return WorkflowBehavior_1.WorkflowBehavior; } });
|
|
6
|
+
var QuanticWorkflowModule_1 = require("./QuanticWorkflowModule");
|
|
7
|
+
Object.defineProperty(exports, "QuanticWorkflowModule", { enumerable: true, get: function () { return QuanticWorkflowModule_1.QuanticWorkflowModule; } });
|
package/package.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quanticjs/workflow",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Workflow engine integration for quanticjs — pipeline behavior for external BPM engines",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"registry": "https://registry.npmjs.org",
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc -p tsconfig.json",
|
|
17
|
+
"test": "jest --passWithNoTests",
|
|
18
|
+
"clean": "rm -rf dist"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@quanticjs/core": "^2.0.0"
|
|
22
|
+
},
|
|
23
|
+
"peerDependencies": {
|
|
24
|
+
"@nestjs/common": "^11.0.0"
|
|
25
|
+
}
|
|
26
|
+
}
|