@cap-js/process 0.0.0 → 0.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.
Files changed (76) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +635 -0
  3. package/cds-plugin.js +2 -0
  4. package/dist/cds-plugin.js +4 -0
  5. package/dist/cds-plugin.js.map +1 -0
  6. package/dist/lib/api/index.js +23 -0
  7. package/dist/lib/api/index.js.map +1 -0
  8. package/dist/lib/api/local-workflow-store.js +85 -0
  9. package/dist/lib/api/local-workflow-store.js.map +1 -0
  10. package/dist/lib/api/process-api-client.js +103 -0
  11. package/dist/lib/api/process-api-client.js.map +1 -0
  12. package/dist/lib/api/workflow-client.js +174 -0
  13. package/dist/lib/api/workflow-client.js.map +1 -0
  14. package/dist/lib/auth/credentials.js +17 -0
  15. package/dist/lib/auth/credentials.js.map +1 -0
  16. package/dist/lib/auth/index.js +11 -0
  17. package/dist/lib/auth/index.js.map +1 -0
  18. package/dist/lib/auth/token-cache.js +67 -0
  19. package/dist/lib/auth/token-cache.js.map +1 -0
  20. package/dist/lib/auth/token-provider.js +32 -0
  21. package/dist/lib/auth/token-provider.js.map +1 -0
  22. package/dist/lib/build/constants.js +106 -0
  23. package/dist/lib/build/constants.js.map +1 -0
  24. package/dist/lib/build/index.js +22 -0
  25. package/dist/lib/build/index.js.map +1 -0
  26. package/dist/lib/build/plugin.js +126 -0
  27. package/dist/lib/build/plugin.js.map +1 -0
  28. package/dist/lib/build/validation-utils.js +309 -0
  29. package/dist/lib/build/validation-utils.js.map +1 -0
  30. package/dist/lib/build/validations.js +185 -0
  31. package/dist/lib/build/validations.js.map +1 -0
  32. package/dist/lib/constants.js +78 -0
  33. package/dist/lib/constants.js.map +1 -0
  34. package/dist/lib/handlers/annotationCache.js +47 -0
  35. package/dist/lib/handlers/annotationCache.js.map +1 -0
  36. package/dist/lib/handlers/annotationHandlers.js +57 -0
  37. package/dist/lib/handlers/annotationHandlers.js.map +1 -0
  38. package/dist/lib/handlers/index.js +26 -0
  39. package/dist/lib/handlers/index.js.map +1 -0
  40. package/dist/lib/handlers/onDeleteUtils.js +63 -0
  41. package/dist/lib/handlers/onDeleteUtils.js.map +1 -0
  42. package/dist/lib/handlers/processActionHandler.js +55 -0
  43. package/dist/lib/handlers/processActionHandler.js.map +1 -0
  44. package/dist/lib/handlers/processCancel.js +28 -0
  45. package/dist/lib/handlers/processCancel.js.map +1 -0
  46. package/dist/lib/handlers/processResume.js +28 -0
  47. package/dist/lib/handlers/processResume.js.map +1 -0
  48. package/dist/lib/handlers/processService.js +125 -0
  49. package/dist/lib/handlers/processService.js.map +1 -0
  50. package/dist/lib/handlers/processStart.js +156 -0
  51. package/dist/lib/handlers/processStart.js.map +1 -0
  52. package/dist/lib/handlers/processSuspend.js +28 -0
  53. package/dist/lib/handlers/processSuspend.js.map +1 -0
  54. package/dist/lib/handlers/utils.js +124 -0
  55. package/dist/lib/handlers/utils.js.map +1 -0
  56. package/dist/lib/index.js +43 -0
  57. package/dist/lib/index.js.map +1 -0
  58. package/dist/lib/processImport.js +450 -0
  59. package/dist/lib/processImport.js.map +1 -0
  60. package/dist/lib/processImportRegistration.js +27 -0
  61. package/dist/lib/processImportRegistration.js.map +1 -0
  62. package/dist/lib/shared/businessKey-helper.js +27 -0
  63. package/dist/lib/shared/businessKey-helper.js.map +1 -0
  64. package/dist/lib/shared/input-parser.js +650 -0
  65. package/dist/lib/shared/input-parser.js.map +1 -0
  66. package/dist/lib/types/csn-extensions.js +37 -0
  67. package/dist/lib/types/csn-extensions.js.map +1 -0
  68. package/dist/srv/BTPProcessService.js +117 -0
  69. package/dist/srv/BTPProcessService.js.map +1 -0
  70. package/dist/srv/localProcessService.js +152 -0
  71. package/dist/srv/localProcessService.js.map +1 -0
  72. package/package.json +98 -1
  73. package/srv/BTPProcessService.cds +42 -0
  74. package/srv/BTPProcessService.js +2 -0
  75. package/srv/localProcessService.cds +3 -0
  76. package/srv/localProcessService.js +2 -0
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ /**
4
+ * Strongly Typed CSN (Core Schema Notation) Model in TypeScript
5
+ * Based on https://cap.cloud.sap/docs/cds/csn
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.CdsBuiltinType = void 0;
9
+ //
10
+ // ──────────────────────────────────────────────────────────────
11
+ // BUILT-IN CDS TYPES
12
+ // ──────────────────────────────────────────────────────────────
13
+ //
14
+ var CdsBuiltinType;
15
+ (function (CdsBuiltinType) {
16
+ CdsBuiltinType["String"] = "cds.String";
17
+ CdsBuiltinType["LargeString"] = "cds.LargeString";
18
+ CdsBuiltinType["Binary"] = "cds.Binary";
19
+ CdsBuiltinType["LargeBinary"] = "cds.LargeBinary";
20
+ CdsBuiltinType["Boolean"] = "cds.Boolean";
21
+ CdsBuiltinType["Integer"] = "cds.Integer";
22
+ CdsBuiltinType["UInt8"] = "cds.UInt8";
23
+ CdsBuiltinType["UInt16"] = "cds.UInt16";
24
+ CdsBuiltinType["UInt32"] = "cds.UInt32";
25
+ CdsBuiltinType["Integer64"] = "cds.Integer64";
26
+ CdsBuiltinType["Decimal"] = "cds.Decimal";
27
+ CdsBuiltinType["DecimalFloat"] = "cds.DecimalFloat";
28
+ CdsBuiltinType["Double"] = "cds.Double";
29
+ CdsBuiltinType["Date"] = "cds.Date";
30
+ CdsBuiltinType["Time"] = "cds.Time";
31
+ CdsBuiltinType["DateTime"] = "cds.DateTime";
32
+ CdsBuiltinType["Timestamp"] = "cds.Timestamp";
33
+ CdsBuiltinType["UUID"] = "cds.UUID";
34
+ CdsBuiltinType["Association"] = "cds.Association";
35
+ CdsBuiltinType["Composition"] = "cds.Composition";
36
+ })(CdsBuiltinType || (exports.CdsBuiltinType = CdsBuiltinType = {}));
37
+ //# sourceMappingURL=csn-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csn-extensions.js","sourceRoot":"","sources":["../../../lib/types/csn-extensions.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD;;;GAGG;;;AAEH,EAAE;AACF,iEAAiE;AACjE,sBAAsB;AACtB,iEAAiE;AACjE,EAAE;AAEF,IAAY,cAqBX;AArBD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,iDAA+B,CAAA;IAC/B,uCAAqB,CAAA;IACrB,iDAA+B,CAAA;IAC/B,yCAAuB,CAAA;IACvB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;IACrB,uCAAqB,CAAA;IACrB,6CAA2B,CAAA;IAC3B,yCAAuB,CAAA;IACvB,mDAAiC,CAAA;IACjC,uCAAqB,CAAA;IACrB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,2CAAyB,CAAA;IACzB,6CAA2B,CAAA;IAC3B,mCAAiB,CAAA;IACjB,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;AACjC,CAAC,EArBW,cAAc,8BAAd,cAAc,QAqBzB"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const cds_1 = __importDefault(require("@sap/cds"));
7
+ const auth_1 = require("../lib/auth");
8
+ const api_1 = require("../lib/api");
9
+ const lib_1 = require("../lib");
10
+ const LOG = cds_1.default.log(lib_1.PROCESS_LOGGER_PREFIX);
11
+ class ProcessService extends cds_1.default.ApplicationService {
12
+ workflowInstanceClient;
13
+ cachingTokenProvider;
14
+ async init() {
15
+ LOG.debug('Initializing Process Service...');
16
+ const credentials = (0, auth_1.getServiceCredentials)(lib_1.PROCESS_SERVICE);
17
+ const tokenProvider = (0, auth_1.createXsuaaTokenProvider)(credentials);
18
+ this.cachingTokenProvider = new auth_1.CachingTokenProvider(tokenProvider);
19
+ this.workflowInstanceClient = (0, api_1.createWorkflowInstanceClient)(credentials?.endpoints.api, () => this.getToken(cds_1.default.context?.tenant));
20
+ this.on('start', async (request) => {
21
+ const { definitionId, context } = request.data;
22
+ LOG.info('Starting process', definitionId);
23
+ await this.workflowInstanceClient.startWorkflow(definitionId, context);
24
+ });
25
+ this.on('cancel', async (request) => {
26
+ const { businessKey, cascade } = request.data;
27
+ LOG.info('Cancelling process(es)', businessKey);
28
+ const instances = await this.workflowInstanceClient.getWorkflowsByBusinessKey(businessKey, [
29
+ api_1.WorkflowStatus.RUNNING,
30
+ api_1.WorkflowStatus.SUSPENDED,
31
+ ]);
32
+ if (instances.length === 0) {
33
+ LOG.warn(`No running workflow instances found with businessKey: ${businessKey}`);
34
+ return;
35
+ }
36
+ await this.workflowInstanceClient.updateMultipleWorkflowStatus(instances, api_1.WorkflowStatus.CANCELED, cascade);
37
+ });
38
+ this.on('suspend', async (request) => {
39
+ const { businessKey, cascade } = request.data;
40
+ LOG.info('Suspending process(es)', businessKey);
41
+ const instances = await this.workflowInstanceClient.getWorkflowsByBusinessKey(businessKey, [
42
+ api_1.WorkflowStatus.RUNNING,
43
+ ]);
44
+ if (instances.length === 0) {
45
+ LOG.warn(`No running workflow instances found with businessKey: ${businessKey}`);
46
+ return;
47
+ }
48
+ await this.workflowInstanceClient.updateMultipleWorkflowStatus(instances, api_1.WorkflowStatus.SUSPENDED, cascade);
49
+ });
50
+ this.on('resume', async (request) => {
51
+ const { businessKey, cascade } = request.data;
52
+ LOG.info('Resuming process(es)', businessKey);
53
+ const instances = await this.workflowInstanceClient.getWorkflowsByBusinessKey(businessKey, [
54
+ api_1.WorkflowStatus.SUSPENDED,
55
+ ]);
56
+ if (instances.length === 0) {
57
+ LOG.warn(`No suspended workflow instances found with businessKey: ${businessKey}`);
58
+ return;
59
+ }
60
+ await this.workflowInstanceClient.updateMultipleWorkflowStatus(instances, api_1.WorkflowStatus.RUNNING, cascade);
61
+ });
62
+ this.on('getInstancesByBusinessKey', async (request) => {
63
+ const { businessKey } = request.data;
64
+ let { status } = request.data;
65
+ LOG.info('Getting instances for', businessKey);
66
+ if (!businessKey) {
67
+ return request.reject({ status: 400, message: 'Missing required parameter: businessKey' });
68
+ }
69
+ if (!status) {
70
+ status = [
71
+ api_1.WorkflowStatus.RUNNING,
72
+ api_1.WorkflowStatus.SUSPENDED,
73
+ api_1.WorkflowStatus.COMPLETED,
74
+ api_1.WorkflowStatus.ERRONEOUS,
75
+ ];
76
+ }
77
+ const instances = await this.workflowInstanceClient.getWorkflowsByBusinessKey(businessKey, status);
78
+ return instances;
79
+ });
80
+ this.on('getAttributes', async (request) => {
81
+ const { processInstanceId } = request.data;
82
+ LOG.info('Getting attributes for', processInstanceId);
83
+ if (!processInstanceId) {
84
+ return request.reject({
85
+ status: 400,
86
+ message: 'Missing required parameter: processInstanceId',
87
+ });
88
+ }
89
+ const attributes = await this.workflowInstanceClient.getAttributes(processInstanceId);
90
+ return attributes;
91
+ });
92
+ this.on('getOutputs', async (request) => {
93
+ const { processInstanceId } = request.data;
94
+ LOG.info('Getting outputs for', processInstanceId);
95
+ if (!processInstanceId) {
96
+ return request.reject({
97
+ status: 400,
98
+ message: 'Missing required parameter: processInstanceId',
99
+ });
100
+ }
101
+ const outputs = await this.workflowInstanceClient.getOutputs(processInstanceId);
102
+ return outputs;
103
+ });
104
+ return super.init();
105
+ }
106
+ async getToken(tenant) {
107
+ try {
108
+ return await this.cachingTokenProvider.getToken(tenant);
109
+ }
110
+ catch (error) {
111
+ LOG.error('Error fetching token for Process Service:', error);
112
+ throw new Error('Error during token fetching.', { cause: error });
113
+ }
114
+ }
115
+ }
116
+ module.exports = { ProcessService };
117
+ //# sourceMappingURL=BTPProcessService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BTPProcessService.js","sourceRoot":"","sources":["../../srv/BTPProcessService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const cds_1 = __importDefault(require("@sap/cds"));
7
+ const local_workflow_store_1 = require("../lib/api/local-workflow-store");
8
+ const workflow_client_1 = require("../lib/api/workflow-client");
9
+ const lib_1 = require("../lib");
10
+ const LOG = cds_1.default.log(lib_1.PROCESS_LOGGER_PREFIX);
11
+ class ProcessService extends cds_1.default.ApplicationService {
12
+ async init() {
13
+ this.on('start', async (req) => {
14
+ const { definitionId, context } = req.data;
15
+ const businessKey = req.headers['businessKey'];
16
+ LOG.info('Starting process', definitionId);
17
+ LOG.debug(`==============================================================\n` +
18
+ `Process start for ${definitionId} initiated\n` +
19
+ `Context: ${JSON.stringify(context, null, 2)}\n` +
20
+ `==============================================================`);
21
+ local_workflow_store_1.localWorkflowStore.startWorkflow({
22
+ definitionId,
23
+ businessKey,
24
+ context,
25
+ });
26
+ return;
27
+ });
28
+ this.on('cancel', async (req) => {
29
+ const { businessKey } = req.data;
30
+ LOG.info('Cancelling process(es)', businessKey);
31
+ LOG.debug(`==============================================================\n` +
32
+ `Process cancel for ${businessKey} initiated\n` +
33
+ `Context: ${JSON.stringify(req.data, null, 2)}\n` +
34
+ `==============================================================`);
35
+ const instances = local_workflow_store_1.localWorkflowStore.getInstancesByBusinessKey(businessKey, [
36
+ workflow_client_1.WorkflowStatus.RUNNING,
37
+ workflow_client_1.WorkflowStatus.SUSPENDED,
38
+ ]);
39
+ if (instances.length === 0) {
40
+ LOG.warn(`No running workflow instances found with businessKey: ${businessKey}`);
41
+ return;
42
+ }
43
+ const results = local_workflow_store_1.localWorkflowStore.updateMultipleStatus(instances.map((i) => i.id), workflow_client_1.WorkflowStatus.CANCELED);
44
+ const successCount = results.filter((r) => r.success).length;
45
+ LOG.debug(`Cancelled ${successCount}/${instances.length} workflow instance(s) for businessKey: ${businessKey}`);
46
+ return;
47
+ });
48
+ this.on('suspend', async (req) => {
49
+ const { businessKey } = req.data;
50
+ LOG.info('Suspending process(es)', businessKey);
51
+ LOG.debug(`==============================================================\n` +
52
+ `Process suspend for ${businessKey} initiated\n` +
53
+ `Context: ${JSON.stringify(req.data, null, 2)}\n` +
54
+ `==============================================================`);
55
+ const instances = local_workflow_store_1.localWorkflowStore.getInstancesByBusinessKey(businessKey, [
56
+ workflow_client_1.WorkflowStatus.RUNNING,
57
+ ]);
58
+ if (instances.length === 0) {
59
+ LOG.warn(`No running workflow instances found with businessKey: ${businessKey}`);
60
+ return;
61
+ }
62
+ const results = local_workflow_store_1.localWorkflowStore.updateMultipleStatus(instances.map((i) => i.id), workflow_client_1.WorkflowStatus.SUSPENDED);
63
+ const successCount = results.filter((r) => r.success).length;
64
+ LOG.debug(`Suspended ${successCount}/${instances.length} workflow instance(s) for businessKey: ${businessKey}`);
65
+ return;
66
+ });
67
+ this.on('resume', async (req) => {
68
+ const { businessKey } = req.data;
69
+ LOG.info('Resuming process(es)', businessKey);
70
+ LOG.debug(`==============================================================\n` +
71
+ `Process resume for ${businessKey} initiated\n` +
72
+ `Context: ${JSON.stringify(req.data, null, 2)}\n` +
73
+ `==============================================================`);
74
+ const instances = local_workflow_store_1.localWorkflowStore.getInstancesByBusinessKey(businessKey, [
75
+ workflow_client_1.WorkflowStatus.SUSPENDED,
76
+ ]);
77
+ if (instances.length === 0) {
78
+ LOG.warn(`No suspended workflow instances found with businessKey: ${businessKey}`);
79
+ return;
80
+ }
81
+ const results = local_workflow_store_1.localWorkflowStore.updateMultipleStatus(instances.map((i) => i.id), workflow_client_1.WorkflowStatus.RUNNING);
82
+ const successCount = results.filter((r) => r.success).length;
83
+ LOG.debug(`Resumed ${successCount}/${instances.length} workflow instance(s) for businessKey: ${businessKey}`);
84
+ return;
85
+ });
86
+ this.on('getInstancesByBusinessKey', async (req) => {
87
+ const { businessKey } = req.data;
88
+ let { status } = req.data;
89
+ LOG.info('Getting instances for', businessKey);
90
+ LOG.debug(`==============================================================\n` +
91
+ `Get instances by businessKey: ${businessKey}\n` +
92
+ `==============================================================`);
93
+ if (!businessKey) {
94
+ return req.reject({ status: 400, message: 'Missing required parameter: businessKey' });
95
+ }
96
+ if (!status) {
97
+ status = [
98
+ workflow_client_1.WorkflowStatus.RUNNING,
99
+ workflow_client_1.WorkflowStatus.SUSPENDED,
100
+ workflow_client_1.WorkflowStatus.COMPLETED,
101
+ workflow_client_1.WorkflowStatus.ERRONEOUS,
102
+ ];
103
+ }
104
+ const instances = local_workflow_store_1.localWorkflowStore.getInstancesByBusinessKey(businessKey, status);
105
+ LOG.debug(`Found ${instances.length} workflow instance(s) for businessKey: ${businessKey}`);
106
+ return instances;
107
+ });
108
+ this.on('getAttributes', async (req) => {
109
+ const { processInstanceId } = req.data;
110
+ LOG.info('Getting attributes for', processInstanceId);
111
+ LOG.debug(`==============================================================\n` +
112
+ `Get attributes for instance: ${processInstanceId}\n` +
113
+ `==============================================================`);
114
+ if (!processInstanceId) {
115
+ return req.reject({
116
+ status: 400,
117
+ message: 'Missing required parameter: processInstanceId',
118
+ });
119
+ }
120
+ const attributes = local_workflow_store_1.localWorkflowStore.getAttributes(processInstanceId);
121
+ if (attributes === undefined) {
122
+ LOG.warn(`Workflow instance not found: ${processInstanceId}`);
123
+ return req.reject({ status: 404, message: 'Workflow instance not found' });
124
+ }
125
+ LOG.debug(`Retrieved attributes for instance: ${processInstanceId}`);
126
+ return attributes;
127
+ });
128
+ this.on('getOutputs', async (req) => {
129
+ const { processInstanceId } = req.data;
130
+ LOG.info('Getting outputs for', processInstanceId);
131
+ LOG.debug(`==============================================================\n` +
132
+ `Get outputs for instance: ${processInstanceId}\n` +
133
+ `==============================================================`);
134
+ if (!processInstanceId) {
135
+ return req.reject({
136
+ status: 400,
137
+ message: 'Missing required parameter: processInstanceId',
138
+ });
139
+ }
140
+ const outputs = local_workflow_store_1.localWorkflowStore.getOutputs(processInstanceId);
141
+ if (outputs === undefined) {
142
+ LOG.warn(`Workflow instance not found: ${processInstanceId}`);
143
+ return req.reject({ status: 404, message: 'Workflow instance not found' });
144
+ }
145
+ LOG.debug(`Retrieved outputs for instance: ${processInstanceId}`);
146
+ return outputs;
147
+ });
148
+ return super.init();
149
+ }
150
+ }
151
+ module.exports = { ProcessService };
152
+ //# sourceMappingURL=localProcessService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localProcessService.js","sourceRoot":"","sources":["../../srv/localProcessService.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,4 +1,101 @@
1
1
  {
2
2
  "name": "@cap-js/process",
3
- "version": "0.0.0"
3
+ "version": "0.1.0",
4
+ "description": "CAP Plugin to interact with SAP Build Process Automation to manage processes.",
5
+ "main": "cds-plugin.js",
6
+ "files": [
7
+ "cds-plugin.js",
8
+ "dist/",
9
+ "srv/*.cds",
10
+ "srv/*.js"
11
+ ],
12
+ "scripts": {
13
+ "prebuild": "npm run compile",
14
+ "pretest": "npm run compile",
15
+ "test": "jest --silent --testPathIgnorePatterns=/tests/hybrid/programmaticApproach.test.ts",
16
+ "test:watch": "jest --watch",
17
+ "test:hana": "jest tests/integration --silent",
18
+ "test:hybrid": "jest tests/hybrid --silent",
19
+ "clean:types": "rm -rf @cds-models tests/bookshop/@cds-models && npm run cds-typer && npm run cds-typer --prefix tests/bookshop",
20
+ "clean:build": "rm -rf gen tests/bookshop/gen && npm run cds-build && npm run cds-build --prefix tests/bookshop",
21
+ "clean:all": "rm -rf node_modules tests/bookshop/node_modules gen tests/bookshop/gen @cds-models tests/bookshop/@cds-models && npm i && npm run cds-typer && npm run cds-typer --prefix tests/bookshop && npm run cds-build && npm run cds-build --prefix tests/bookshop",
22
+ "build": "npm run cds-build && npm run cds-typer",
23
+ "compile": "tsc -p tsconfig.build.json",
24
+ "cds-build": "cds-tsx build",
25
+ "cds-typer": "npx @cap-js/cds-typer \"*\" --outputDirectory @cds-models",
26
+ "watch": "cds-tsx watch",
27
+ "lint": "npx eslint .",
28
+ "prettier": "npx -y prettier@3 --write .",
29
+ "prettier:check": "npx -y prettier@3 --check .",
30
+ "import:process": "npm run import:process:annotationLifeCycle && npm run import:process:programmaticLifecycle && npm run import:process:programmaticOutput && npm run import:process:importAttributesOutputs && npm run import:process:importComplex && npm run import:process:importSimple",
31
+ "import:process:annotationLifeCycle": "cd tests/bookshop && cds import --from process --name eu12.cdsmunich.capprocesspluginhybridtest.annotation_Lifecycle_Process --force",
32
+ "import:process:programmaticLifecycle": "cd tests/bookshop && cds import --from process --name eu12.cdsmunich.capprocesspluginhybridtest.programmatic_Lifecycle_Process --force",
33
+ "import:process:programmaticOutput": "cd tests/bookshop && cds import --from process --name eu12.cdsmunich.capprocesspluginhybridtest.programmatic_Output_Process --force",
34
+ "import:process:importAttributesOutputs": "cd tests/bookshop && cds import --from process --name eu12.cdsmunich.capprocesspluginhybridtest.importProcess_Attributes_And_Outputs --force",
35
+ "import:process:importComplex": "cd tests/bookshop && cds import --from process --name eu12.cdsmunich.capprocesspluginhybridtest.importProcess_Complex_Inputs --force",
36
+ "import:process:importSimple": "cd tests/bookshop && cds import --from process --name eu12.cdsmunich.capprocesspluginhybridtest.importProcess_Simple_Inputs --force"
37
+ },
38
+ "keywords": [],
39
+ "author": "SAP SE (https://www.sap.com)",
40
+ "repository": "cap-js/process",
41
+ "homepage": "https://cap.cloud.sap",
42
+ "license": "Apache-2.0",
43
+ "type": "commonjs",
44
+ "peerDependencies": {
45
+ "@sap/cds": ">=9"
46
+ },
47
+ "engines": {
48
+ "node": ">=20.0.0"
49
+ },
50
+ "imports": {
51
+ "#cds-models/*": "./@cds-models/*/index.js"
52
+ },
53
+ "workspaces": [
54
+ "tests/bookshop",
55
+ "tests/sample/status-management"
56
+ ],
57
+ "dependencies": {
58
+ "@sap-cloud-sdk/connectivity": "^4.5.1",
59
+ "@sap-cloud-sdk/http-client": "^4.5.1",
60
+ "@sap-cloud-sdk/resilience": "^4.5.1"
61
+ },
62
+ "cds": {
63
+ "requires": {
64
+ "ProcessService": {
65
+ "[development]": {
66
+ "kind": "local-process-service"
67
+ },
68
+ "[hybrid]": {
69
+ "kind": "deployed-process-service"
70
+ },
71
+ "[production]": {
72
+ "kind": "deployed-process-service"
73
+ }
74
+ },
75
+ "kinds": {
76
+ "local-process-service": {
77
+ "model": "@cap-js/process/srv/localProcessService",
78
+ "outbox": true
79
+ },
80
+ "deployed-process-service": {
81
+ "model": "@cap-js/process/srv/BTPProcessService",
82
+ "outbox": true,
83
+ "vcap": {
84
+ "tag": "process"
85
+ }
86
+ }
87
+ }
88
+ }
89
+ },
90
+ "devDependencies": {
91
+ "@cap-js/cds-test": "^0.4",
92
+ "@cap-js/cds-types": "^0.16.0",
93
+ "@types/jest": "^30.0.0",
94
+ "@types/node": "^25.5.0",
95
+ "jest": "^30.3.0",
96
+ "ts-jest": "^29.4.6",
97
+ "tsx": "^4",
98
+ "typescript": "^5",
99
+ "typescript-eslint": "^8.57.0"
100
+ }
4
101
  }
@@ -0,0 +1,42 @@
1
+ @open
2
+ type AnyType {}
3
+ type AttributesReturn : many AnyType;
4
+ type InstancesReturn : many AnyType;
5
+
6
+ @protocol: 'none'
7
+ @impl: './BTPProcessService'
8
+ service ProcessService {
9
+
10
+ event start {
11
+ @mandatory definitionId : String(256);
12
+ context : AnyType
13
+ }
14
+
15
+ event cancel {
16
+ @mandatory businessKey : String(256);
17
+ cascade : Boolean
18
+ }
19
+
20
+ event suspend {
21
+ @mandatory businessKey : String(256);
22
+ cascade : Boolean
23
+ }
24
+
25
+ event resume {
26
+ @mandatory businessKey : String(256);
27
+ cascade : Boolean
28
+ }
29
+
30
+ function getAttributes(
31
+ @mandatory processInstanceId : String(256)
32
+ )returns AttributesReturn;
33
+
34
+ function getOutputs(
35
+ @mandatory processInstanceId : String(256)
36
+ )returns AnyType;
37
+
38
+ function getInstancesByBusinessKey(
39
+ @mandatory businessKey : String(256),
40
+ status : many String(256)
41
+ )returns InstancesReturn;
42
+ }
@@ -0,0 +1,2 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
2
+ module.exports = require('../dist/srv/BTPProcessService');
@@ -0,0 +1,3 @@
1
+ using ProcessService as service from './BTPProcessService';
2
+
3
+ annotate service with @impl: './localProcessService';
@@ -0,0 +1,2 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
2
+ module.exports = require('../dist/srv/localProcessService');