@acorex-platform/module-background-job-management-client 0.0.21

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 (15) hide show
  1. package/fesm2022/acorex-platform-module-background-job-management-client-background-job-command-error.util-BzDLhWRP.mjs +66 -0
  2. package/fesm2022/acorex-platform-module-background-job-management-client-background-job-command-error.util-BzDLhWRP.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-background-job-management-client-cancel-background-job.command-OZPzjIow.mjs +52 -0
  4. package/fesm2022/acorex-platform-module-background-job-management-client-cancel-background-job.command-OZPzjIow.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-background-job-management-client-contracts.mjs +122 -0
  6. package/fesm2022/acorex-platform-module-background-job-management-client-contracts.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-background-job-management-client-retry-background-job.command-BdJ_PC_y.mjs +32 -0
  8. package/fesm2022/acorex-platform-module-background-job-management-client-retry-background-job.command-BdJ_PC_y.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-background-job-management-client-run-schedule-now.command-orzJ7ZmD.mjs +98 -0
  10. package/fesm2022/acorex-platform-module-background-job-management-client-run-schedule-now.command-orzJ7ZmD.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-background-job-management-client.mjs +416 -0
  12. package/fesm2022/acorex-platform-module-background-job-management-client.mjs.map +1 -0
  13. package/package.json +28 -0
  14. package/types/acorex-platform-module-background-job-management-client-contracts.d.ts +114 -0
  15. package/types/acorex-platform-module-background-job-management-client.d.ts +60 -0
@@ -0,0 +1,66 @@
1
+ import { extractRequestErrorInfo } from '@acorex-platform/framework-client/common';
2
+ import { AXP_BACKGROUND_JOB_ERROR_CODES } from '@acorex-platform/framework-shared/background-job';
3
+
4
+ const ROOT = '@background-job-management';
5
+ const BackgroundJobCommandI18n = {
6
+ errors: {
7
+ notFound: `${ROOT}:jobs.errors.not-found`,
8
+ retryInvalidStatus: `${ROOT}:jobs.errors.retry-invalid-status`,
9
+ notDeadLettered: `${ROOT}:jobs.errors.not-dead-lettered`,
10
+ },
11
+ retry: {
12
+ success: `${ROOT}:jobs.commands.retry.messages.success`,
13
+ failed: `${ROOT}:jobs.commands.retry.messages.failed`,
14
+ },
15
+ cancel: {
16
+ completed: `${ROOT}:jobs.commands.cancel.messages.completed`,
17
+ requested: `${ROOT}:jobs.commands.cancel.messages.requested`,
18
+ failed: `${ROOT}:jobs.commands.cancel.messages.failed`,
19
+ },
20
+ runNow: {
21
+ successTitle: `${ROOT}:schedules.commands.run-now.messages.success.title`,
22
+ successDescription: `${ROOT}:schedules.commands.run-now.messages.success.description`,
23
+ failedTitle: `${ROOT}:schedules.commands.run-now.messages.failed.title`,
24
+ failedDescription: `${ROOT}:schedules.commands.run-now.messages.failed.description`,
25
+ },
26
+ };
27
+
28
+ const JOB_STATUS_I18N_ROOT = '@background-job-management:jobs.entities.background-job.states';
29
+ const ERROR_I18N_BY_CODE = {
30
+ [AXP_BACKGROUND_JOB_ERROR_CODES.NOT_FOUND]: BackgroundJobCommandI18n.errors.notFound,
31
+ [AXP_BACKGROUND_JOB_ERROR_CODES.RETRY_INVALID_STATUS]: BackgroundJobCommandI18n.errors.retryInvalidStatus,
32
+ [AXP_BACKGROUND_JOB_ERROR_CODES.NOT_DEAD_LETTERED]: BackgroundJobCommandI18n.errors.notDeadLettered,
33
+ };
34
+ async function translateJobStatus(translationService, status) {
35
+ if (!status) {
36
+ return undefined;
37
+ }
38
+ const statusKey = `${JOB_STATUS_I18N_ROOT}.${status}`;
39
+ const translated = await translationService.translateAsync(statusKey);
40
+ return translated === statusKey ? status : translated;
41
+ }
42
+ async function resolveBackgroundJobCommandError(translationService, error, fallbackKey) {
43
+ const httpInfo = extractRequestErrorInfo(error);
44
+ if (httpInfo?.code) {
45
+ const messageKey = ERROR_I18N_BY_CODE[httpInfo.code];
46
+ if (messageKey) {
47
+ const statusLabel = await translateJobStatus(translationService, httpInfo.params?.['status']);
48
+ const params = {
49
+ ...(httpInfo.params ?? {}),
50
+ ...(statusLabel ? { status: statusLabel } : {}),
51
+ };
52
+ const displayText = await translationService.translateAsync(messageKey, {
53
+ params: Object.keys(params).length > 0 ? params : undefined,
54
+ });
55
+ return { messageKeyOrText: messageKey, displayText };
56
+ }
57
+ }
58
+ if (httpInfo?.message) {
59
+ return { messageKeyOrText: httpInfo.message, displayText: httpInfo.message };
60
+ }
61
+ const displayText = await translationService.translateAsync(fallbackKey);
62
+ return { messageKeyOrText: fallbackKey, displayText };
63
+ }
64
+
65
+ export { BackgroundJobCommandI18n as B, resolveBackgroundJobCommandError as r };
66
+ //# sourceMappingURL=acorex-platform-module-background-job-management-client-background-job-command-error.util-BzDLhWRP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-background-job-management-client-background-job-command-error.util-BzDLhWRP.mjs","sources":["../../../../libs/modules/background-job-management/client/src/lib/commands/background-job-command.i18n.ts","../../../../libs/modules/background-job-management/client/src/lib/commands/background-job-command-error.util.ts"],"sourcesContent":["const ROOT = '@background-job-management';\n\nexport const BackgroundJobCommandI18n = {\n errors: {\n notFound: `${ROOT}:jobs.errors.not-found`,\n retryInvalidStatus: `${ROOT}:jobs.errors.retry-invalid-status`,\n notDeadLettered: `${ROOT}:jobs.errors.not-dead-lettered`,\n },\n retry: {\n success: `${ROOT}:jobs.commands.retry.messages.success`,\n failed: `${ROOT}:jobs.commands.retry.messages.failed`,\n },\n cancel: {\n completed: `${ROOT}:jobs.commands.cancel.messages.completed`,\n requested: `${ROOT}:jobs.commands.cancel.messages.requested`,\n failed: `${ROOT}:jobs.commands.cancel.messages.failed`,\n },\n runNow: {\n successTitle: `${ROOT}:schedules.commands.run-now.messages.success.title`,\n successDescription: `${ROOT}:schedules.commands.run-now.messages.success.description`,\n failedTitle: `${ROOT}:schedules.commands.run-now.messages.failed.title`,\n failedDescription: `${ROOT}:schedules.commands.run-now.messages.failed.description`,\n },\n} as const;\n","import { extractRequestErrorInfo } from '@acorex-platform/framework-client/common';\nimport { AXP_BACKGROUND_JOB_ERROR_CODES } from '@acorex-platform/framework-shared/background-job';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { BackgroundJobCommandI18n } from './background-job-command.i18n';\n\nconst JOB_STATUS_I18N_ROOT = '@background-job-management:jobs.entities.background-job.states';\n\nconst ERROR_I18N_BY_CODE: Record<string, string> = {\n [AXP_BACKGROUND_JOB_ERROR_CODES.NOT_FOUND]: BackgroundJobCommandI18n.errors.notFound,\n [AXP_BACKGROUND_JOB_ERROR_CODES.RETRY_INVALID_STATUS]: BackgroundJobCommandI18n.errors.retryInvalidStatus,\n [AXP_BACKGROUND_JOB_ERROR_CODES.NOT_DEAD_LETTERED]: BackgroundJobCommandI18n.errors.notDeadLettered,\n};\n\nasync function translateJobStatus(\n translationService: AXTranslationService,\n status: string | undefined,\n): Promise<string | undefined> {\n if (!status) {\n return undefined;\n }\n\n const statusKey = `${JOB_STATUS_I18N_ROOT}.${status}`;\n const translated = await translationService.translateAsync(statusKey);\n return translated === statusKey ? status : translated;\n}\n\nexport async function resolveBackgroundJobCommandError(\n translationService: AXTranslationService,\n error: unknown,\n fallbackKey: string,\n): Promise<{ messageKeyOrText: string; displayText: string }> {\n const httpInfo = extractRequestErrorInfo(error);\n if (httpInfo?.code) {\n const messageKey = ERROR_I18N_BY_CODE[httpInfo.code];\n if (messageKey) {\n const statusLabel = await translateJobStatus(translationService, httpInfo.params?.['status']);\n const params = {\n ...(httpInfo.params ?? {}),\n ...(statusLabel ? { status: statusLabel } : {}),\n };\n const displayText = await translationService.translateAsync(messageKey, {\n params: Object.keys(params).length > 0 ? params : undefined,\n });\n return { messageKeyOrText: messageKey, displayText };\n }\n }\n\n if (httpInfo?.message) {\n return { messageKeyOrText: httpInfo.message, displayText: httpInfo.message };\n }\n\n const displayText = await translationService.translateAsync(fallbackKey);\n return { messageKeyOrText: fallbackKey, displayText };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { AXTranslationService } from '@acorex/core/translation';
4
+ import { AXPBackgroundJobManagementClient } from './acorex-platform-module-background-job-management-client.mjs';
5
+ import { B as BackgroundJobCommandI18n, r as resolveBackgroundJobCommandError } from './acorex-platform-module-background-job-management-client-background-job-command-error.util-BzDLhWRP.mjs';
6
+
7
+ class CancelBackgroundJobCommand {
8
+ constructor() {
9
+ this.client = inject(AXPBackgroundJobManagementClient);
10
+ this.translationService = inject(AXTranslationService);
11
+ }
12
+ async execute(raw) {
13
+ const wrapped = raw;
14
+ const input = (wrapped?.options ?? raw);
15
+ try {
16
+ const result = await this.client.cancelJob(input.jobId, input.reason);
17
+ const messageKey = result.status === 'cancelled'
18
+ ? BackgroundJobCommandI18n.cancel.completed
19
+ : BackgroundJobCommandI18n.cancel.requested;
20
+ return result.success
21
+ ? {
22
+ success: true,
23
+ kind: 'object',
24
+ data: { status: result.status },
25
+ message: {
26
+ text: messageKey,
27
+ type: result.status === 'cancelled' ? 'success' : 'warning',
28
+ },
29
+ }
30
+ : {
31
+ success: false,
32
+ message: {
33
+ text: messageKey,
34
+ type: 'warning',
35
+ details: { status: result.status },
36
+ },
37
+ };
38
+ }
39
+ catch (error) {
40
+ const { messageKeyOrText } = await resolveBackgroundJobCommandError(this.translationService, error, BackgroundJobCommandI18n.cancel.failed);
41
+ return { success: false, message: { text: messageKeyOrText } };
42
+ }
43
+ }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CancelBackgroundJobCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
45
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CancelBackgroundJobCommand }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CancelBackgroundJobCommand, decorators: [{
48
+ type: Injectable
49
+ }] });
50
+
51
+ export { CancelBackgroundJobCommand };
52
+ //# sourceMappingURL=acorex-platform-module-background-job-management-client-cancel-background-job.command-OZPzjIow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-background-job-management-client-cancel-background-job.command-OZPzjIow.mjs","sources":["../../../../libs/modules/background-job-management/client/src/lib/commands/cancel-background-job.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPBackgroundJobManagementClient } from '../background-job-management-client.port';\nimport { resolveBackgroundJobCommandError } from './background-job-command-error.util';\nimport { BackgroundJobCommandI18n } from './background-job-command.i18n';\n\nexport interface CancelBackgroundJobInput {\n jobId: string;\n reason?: string;\n}\n\n@Injectable()\nexport class CancelBackgroundJobCommand implements AXPCommand<CancelBackgroundJobInput, { status: string }> {\n private readonly client = inject(AXPBackgroundJobManagementClient);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(raw: unknown): AXPCommandExecuteResultPromise<{ status: string }> {\n const wrapped = raw as { options?: CancelBackgroundJobInput } & Record<string, unknown>;\n const input = (wrapped?.options ?? raw) as CancelBackgroundJobInput;\n\n try {\n const result = await this.client.cancelJob(input.jobId, input.reason);\n const messageKey =\n result.status === 'cancelled'\n ? BackgroundJobCommandI18n.cancel.completed\n : BackgroundJobCommandI18n.cancel.requested;\n return result.success\n ? {\n success: true,\n kind: 'object',\n data: { status: result.status },\n message: {\n text: messageKey,\n type: result.status === 'cancelled' ? 'success' : 'warning',\n },\n }\n : {\n success: false,\n message: {\n text: messageKey,\n type: 'warning',\n details: { status: result.status },\n },\n };\n } catch (error) {\n const { messageKeyOrText } = await resolveBackgroundJobCommandError(\n this.translationService,\n error,\n BackgroundJobCommandI18n.cancel.failed,\n );\n return { success: false, message: { text: messageKeyOrText } };\n }\n }\n}\n"],"names":[],"mappings":";;;;;;MAca,0BAA0B,CAAA;AADvC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACjD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAuCnE,IAAA;IArCC,MAAM,OAAO,CAAC,GAAY,EAAA;QACxB,MAAM,OAAO,GAAG,GAAuE;QACvF,MAAM,KAAK,IAAI,OAAO,EAAE,OAAO,IAAI,GAAG,CAA6B;AAEnE,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;AACrE,YAAA,MAAM,UAAU,GACd,MAAM,CAAC,MAAM,KAAK;AAChB,kBAAE,wBAAwB,CAAC,MAAM,CAAC;AAClC,kBAAE,wBAAwB,CAAC,MAAM,CAAC,SAAS;YAC/C,OAAO,MAAM,CAAC;AACZ,kBAAE;AACE,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;AAC/B,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,IAAI,EAAE,MAAM,CAAC,MAAM,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS;AAC5D,qBAAA;AACF;AACH,kBAAE;AACE,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;AACnC,qBAAA;iBACF;QACP;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,gCAAgC,CACjE,IAAI,CAAC,kBAAkB,EACvB,KAAK,EACL,wBAAwB,CAAC,MAAM,CAAC,MAAM,CACvC;AACD,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE;QAChE;IACF;8GAxCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;;;"}
@@ -0,0 +1,122 @@
1
+ const AXPBackgroundJobManagementMenuKeys = {
2
+ Root: 'background-job-management:menu',
3
+ Jobs: 'background-job-management:jobs',
4
+ Schedules: 'background-job-management:schedules',
5
+ };
6
+
7
+ /**
8
+ * Administration capabilities used by this module.
9
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
10
+ */
11
+ const AXPAdministrationPermissionKeys = {
12
+ Access: 'Administration:Permission:Access',
13
+ MaintainUsersAndRoles: 'Administration:Permission:MaintainUsersAndRoles',
14
+ ManageSessions: 'Administration:Permission:ManageSessions',
15
+ MaintainPolicies: 'Administration:Permission:MaintainPolicies',
16
+ ViewIntegrations: 'Administration:Permission:ViewIntegrations',
17
+ MaintainConnections: 'Administration:Permission:MaintainConnections',
18
+ MaintainWorkflows: 'Administration:Permission:MaintainWorkflows',
19
+ ManageWorkflowActions: 'Administration:Permission:ManageWorkflowActions',
20
+ ViewRules: 'Administration:Permission:ViewRules',
21
+ MaintainRules: 'Administration:Permission:MaintainRules',
22
+ ManageRuleActions: 'Administration:Permission:ManageRuleActions',
23
+ MaintainAi: 'Administration:Permission:MaintainAi',
24
+ UseAiAssist: 'Administration:Permission:UseAiAssist',
25
+ MaintainDashboards: 'Administration:Permission:MaintainDashboards',
26
+ ViewJobs: 'Administration:Permission:ViewJobs',
27
+ ManageJobActions: 'Administration:Permission:ManageJobActions',
28
+ ViewObservability: 'Administration:Permission:ViewObservability',
29
+ MaintainObservability: 'Administration:Permission:MaintainObservability',
30
+ };
31
+ /**
32
+ * @deprecated Prefer {@link AXPAdministrationPermissionKeys}.
33
+ * Legacy nested shape kept so existing imports compile during migration.
34
+ */
35
+ const AXMBackgroundJobPermissionKeys = {
36
+ Job: {
37
+ View: AXPAdministrationPermissionKeys.ViewJobs,
38
+ Cancel: AXPAdministrationPermissionKeys.ManageJobActions,
39
+ Retry: AXPAdministrationPermissionKeys.ManageJobActions,
40
+ Delete: AXPAdministrationPermissionKeys.ManageJobActions,
41
+ ReplayDeadLetter: AXPAdministrationPermissionKeys.ManageJobActions,
42
+ },
43
+ Schedule: {
44
+ View: AXPAdministrationPermissionKeys.ViewJobs,
45
+ Manage: AXPAdministrationPermissionKeys.ManageJobActions,
46
+ },
47
+ Dashboard: {
48
+ View: AXPAdministrationPermissionKeys.ViewJobs,
49
+ },
50
+ };
51
+
52
+ //#region ---- Background job management settings ----
53
+ var AXPBackgroundJobManagementSettings;
54
+ (function (AXPBackgroundJobManagementSettings) {
55
+ AXPBackgroundJobManagementSettings["RetentionEnabled"] = "BackgroundJobManagement:Setting:Retention.Enabled";
56
+ AXPBackgroundJobManagementSettings["RetentionDefaultDays"] = "BackgroundJobManagement:Setting:Retention.DefaultDays";
57
+ AXPBackgroundJobManagementSettings["RetentionDeadLetterDays"] = "BackgroundJobManagement:Setting:Retention.DeadLetterDays";
58
+ AXPBackgroundJobManagementSettings["RetentionBatchSize"] = "BackgroundJobManagement:Setting:Retention.BatchSize";
59
+ AXPBackgroundJobManagementSettings["RetentionPurgeCron"] = "BackgroundJobManagement:Setting:Retention.PurgeCron";
60
+ })(AXPBackgroundJobManagementSettings || (AXPBackgroundJobManagementSettings = {}));
61
+ const AXP_BACKGROUND_JOB_RETENTION_SETTING_DEFAULTS = {
62
+ [AXPBackgroundJobManagementSettings.RetentionEnabled]: true,
63
+ [AXPBackgroundJobManagementSettings.RetentionDefaultDays]: 30,
64
+ [AXPBackgroundJobManagementSettings.RetentionDeadLetterDays]: 90,
65
+ [AXPBackgroundJobManagementSettings.RetentionBatchSize]: 500,
66
+ [AXPBackgroundJobManagementSettings.RetentionPurgeCron]: '0 3 * * *',
67
+ };
68
+ //#endregion
69
+
70
+ const config = {
71
+ i18n: 'background-job-management',
72
+ module: 'BackgroundJobManagement',
73
+ };
74
+ const RootConfig = {
75
+ config,
76
+ module: {
77
+ route: 'background-job-management',
78
+ name: config.module,
79
+ title: '@background-job-management:module.title',
80
+ icon: 'fa-light fa-gears',
81
+ },
82
+ entities: {
83
+ backgroundJob: {
84
+ name: 'BackgroundJob',
85
+ fullName: `${config.module}.BackgroundJob`,
86
+ title: '@background-job-management:jobs.entities.background-job.title',
87
+ titlePlural: '@background-job-management:jobs.entities.background-job.plural',
88
+ icon: 'fa-light fa-list-check',
89
+ },
90
+ backgroundJobAttempt: {
91
+ name: 'BackgroundJobAttempt',
92
+ fullName: `${config.module}.BackgroundJobAttempt`,
93
+ title: '@background-job-management:attempts.entities.background-job-attempt.title',
94
+ titlePlural: '@background-job-management:attempts.entities.background-job-attempt.plural',
95
+ icon: 'fa-light fa-rotate',
96
+ },
97
+ backgroundJobSchedule: {
98
+ name: 'BackgroundJobSchedule',
99
+ fullName: `${config.module}.BackgroundJobSchedule`,
100
+ title: '@background-job-management:schedules.entities.background-job-schedule.title',
101
+ titlePlural: '@background-job-management:schedules.entities.background-job-schedule.plural',
102
+ icon: 'fa-light fa-calendar-clock',
103
+ },
104
+ },
105
+ queries: {
106
+ dashboard: {
107
+ jobsByStatusBar: `${config.module}:Dashboard:JobsByStatusBar`,
108
+ jobSchedulesByStatusBar: `${config.module}:Dashboard:JobSchedulesByStatusBar`,
109
+ },
110
+ },
111
+ };
112
+
113
+ //#endregion
114
+
115
+ //#region ---- Contracts barrel ----
116
+
117
+ /**
118
+ * Generated bundle index. Do not edit.
119
+ */
120
+
121
+ export { AXMBackgroundJobPermissionKeys, AXPAdministrationPermissionKeys, AXPBackgroundJobManagementMenuKeys, AXPBackgroundJobManagementSettings, AXP_BACKGROUND_JOB_RETENTION_SETTING_DEFAULTS, RootConfig };
122
+ //# sourceMappingURL=acorex-platform-module-background-job-management-client-contracts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-background-job-management-client-contracts.mjs","sources":["../../../../libs/modules/background-job-management/contracts/src/menu.keys.ts","../../../../libs/modules/background-job-management/contracts/src/permission.keys.ts","../../../../libs/modules/background-job-management/contracts/src/settings.keys.ts","../../../../libs/modules/background-job-management/contracts/src/root-config.ts","../../../../libs/modules/background-job-management/contracts/src/entities/background-job-schedule/background-job-schedule.types.ts","../../../../libs/modules/background-job-management/contracts/src/index.ts","../../../../libs/modules/background-job-management/contracts/src/acorex-platform-module-background-job-management-client-contracts.ts"],"sourcesContent":["export const AXPBackgroundJobManagementMenuKeys = {\n Root: 'background-job-management:menu',\n Jobs: 'background-job-management:jobs',\n Schedules: 'background-job-management:schedules',\n} as const;\n","/**\n * Administration capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPAdministrationPermissionKeys = {\n Access: 'Administration:Permission:Access',\n MaintainUsersAndRoles: 'Administration:Permission:MaintainUsersAndRoles',\n ManageSessions: 'Administration:Permission:ManageSessions',\n MaintainPolicies: 'Administration:Permission:MaintainPolicies',\n ViewIntegrations: 'Administration:Permission:ViewIntegrations',\n MaintainConnections: 'Administration:Permission:MaintainConnections',\n MaintainWorkflows: 'Administration:Permission:MaintainWorkflows',\n ManageWorkflowActions: 'Administration:Permission:ManageWorkflowActions',\n ViewRules: 'Administration:Permission:ViewRules',\n MaintainRules: 'Administration:Permission:MaintainRules',\n ManageRuleActions: 'Administration:Permission:ManageRuleActions',\n MaintainAi: 'Administration:Permission:MaintainAi',\n UseAiAssist: 'Administration:Permission:UseAiAssist',\n MaintainDashboards: 'Administration:Permission:MaintainDashboards',\n ViewJobs: 'Administration:Permission:ViewJobs',\n ManageJobActions: 'Administration:Permission:ManageJobActions',\n ViewObservability: 'Administration:Permission:ViewObservability',\n MaintainObservability: 'Administration:Permission:MaintainObservability',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPAdministrationPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMBackgroundJobPermissionKeys = {\n Job: {\n View: AXPAdministrationPermissionKeys.ViewJobs,\n Cancel: AXPAdministrationPermissionKeys.ManageJobActions,\n Retry: AXPAdministrationPermissionKeys.ManageJobActions,\n Delete: AXPAdministrationPermissionKeys.ManageJobActions,\n ReplayDeadLetter: AXPAdministrationPermissionKeys.ManageJobActions,\n },\n Schedule: {\n View: AXPAdministrationPermissionKeys.ViewJobs,\n Manage: AXPAdministrationPermissionKeys.ManageJobActions,\n },\n Dashboard: {\n View: AXPAdministrationPermissionKeys.ViewJobs,\n },\n} as const;\n","//#region ---- Background job management settings ----\n\nexport enum AXPBackgroundJobManagementSettings {\n RetentionEnabled = 'BackgroundJobManagement:Setting:Retention.Enabled',\n RetentionDefaultDays = 'BackgroundJobManagement:Setting:Retention.DefaultDays',\n RetentionDeadLetterDays = 'BackgroundJobManagement:Setting:Retention.DeadLetterDays',\n RetentionBatchSize = 'BackgroundJobManagement:Setting:Retention.BatchSize',\n RetentionPurgeCron = 'BackgroundJobManagement:Setting:Retention.PurgeCron',\n}\n\nexport const AXP_BACKGROUND_JOB_RETENTION_SETTING_DEFAULTS = {\n [AXPBackgroundJobManagementSettings.RetentionEnabled]: true,\n [AXPBackgroundJobManagementSettings.RetentionDefaultDays]: 30,\n [AXPBackgroundJobManagementSettings.RetentionDeadLetterDays]: 90,\n [AXPBackgroundJobManagementSettings.RetentionBatchSize]: 500,\n [AXPBackgroundJobManagementSettings.RetentionPurgeCron]: '0 3 * * *',\n} as const;\n\n//#endregion\n","const config = {\n i18n: 'background-job-management',\n module: 'BackgroundJobManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'background-job-management',\n name: config.module,\n title: '@background-job-management:module.title',\n icon: 'fa-light fa-gears',\n },\n entities: {\n backgroundJob: {\n name: 'BackgroundJob',\n fullName: `${config.module}.BackgroundJob`,\n title: '@background-job-management:jobs.entities.background-job.title',\n titlePlural: '@background-job-management:jobs.entities.background-job.plural',\n icon: 'fa-light fa-list-check',\n },\n backgroundJobAttempt: {\n name: 'BackgroundJobAttempt',\n fullName: `${config.module}.BackgroundJobAttempt`,\n title: '@background-job-management:attempts.entities.background-job-attempt.title',\n titlePlural: '@background-job-management:attempts.entities.background-job-attempt.plural',\n icon: 'fa-light fa-rotate',\n },\n backgroundJobSchedule: {\n name: 'BackgroundJobSchedule',\n fullName: `${config.module}.BackgroundJobSchedule`,\n title: '@background-job-management:schedules.entities.background-job-schedule.title',\n titlePlural: '@background-job-management:schedules.entities.background-job-schedule.plural',\n icon: 'fa-light fa-calendar-clock',\n },\n },\n queries: {\n dashboard: {\n jobsByStatusBar: `${config.module}:Dashboard:JobsByStatusBar`,\n jobSchedulesByStatusBar: `${config.module}:Dashboard:JobSchedulesByStatusBar`,\n },\n },\n} as const;\n","import type { AXPBackgroundJobSchedule } from '@acorex-platform/framework-shared/background-job';\n\n//#region ---- Background job schedule model ----\n\nexport type AXMBackgroundJobManagementBackgroundJobScheduleEntityModel = AXPBackgroundJobSchedule;\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { AXTranslationService } from '@acorex/core/translation';
4
+ import { AXPBackgroundJobManagementClient } from './acorex-platform-module-background-job-management-client.mjs';
5
+ import { B as BackgroundJobCommandI18n, r as resolveBackgroundJobCommandError } from './acorex-platform-module-background-job-management-client-background-job-command-error.util-BzDLhWRP.mjs';
6
+
7
+ class RetryBackgroundJobCommand {
8
+ constructor() {
9
+ this.client = inject(AXPBackgroundJobManagementClient);
10
+ this.translationService = inject(AXTranslationService);
11
+ }
12
+ async execute(raw) {
13
+ const wrapped = raw;
14
+ const input = (wrapped?.options ?? raw);
15
+ try {
16
+ const result = await this.client.retryJob(input.jobId);
17
+ return { success: true, kind: 'object', data: { jobId: result.jobId }, message: { text: BackgroundJobCommandI18n.retry.success } };
18
+ }
19
+ catch (error) {
20
+ const { messageKeyOrText } = await resolveBackgroundJobCommandError(this.translationService, error, BackgroundJobCommandI18n.retry.failed);
21
+ return { success: false, message: { text: messageKeyOrText } };
22
+ }
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RetryBackgroundJobCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RetryBackgroundJobCommand }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RetryBackgroundJobCommand, decorators: [{
28
+ type: Injectable
29
+ }] });
30
+
31
+ export { RetryBackgroundJobCommand };
32
+ //# sourceMappingURL=acorex-platform-module-background-job-management-client-retry-background-job.command-BdJ_PC_y.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-background-job-management-client-retry-background-job.command-BdJ_PC_y.mjs","sources":["../../../../libs/modules/background-job-management/client/src/lib/commands/retry-background-job.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPBackgroundJobManagementClient } from '../background-job-management-client.port';\nimport { resolveBackgroundJobCommandError } from './background-job-command-error.util';\nimport { BackgroundJobCommandI18n } from './background-job-command.i18n';\n\nexport interface RetryBackgroundJobInput {\n jobId: string;\n}\n\n@Injectable()\nexport class RetryBackgroundJobCommand implements AXPCommand<RetryBackgroundJobInput, { jobId: string }> {\n private readonly client = inject(AXPBackgroundJobManagementClient);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(raw: unknown): AXPCommandExecuteResultPromise<{ jobId: string }> {\n const wrapped = raw as { options?: RetryBackgroundJobInput } & Record<string, unknown>;\n const input = (wrapped?.options ?? raw) as RetryBackgroundJobInput;\n\n try {\n const result = await this.client.retryJob(input.jobId);\n return { success: true, kind: 'object', data: { jobId: result.jobId }, message: { text: BackgroundJobCommandI18n.retry.success } };\n } catch (error) {\n const { messageKeyOrText } = await resolveBackgroundJobCommandError(\n this.translationService,\n error,\n BackgroundJobCommandI18n.retry.failed,\n );\n return { success: false, message: { text: messageKeyOrText } };\n }\n }\n}\n"],"names":[],"mappings":";;;;;;MAaa,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACjD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAkBnE,IAAA;IAhBC,MAAM,OAAO,CAAC,GAAY,EAAA;QACxB,MAAM,OAAO,GAAG,GAAsE;QACtF,MAAM,KAAK,IAAI,OAAO,EAAE,OAAO,IAAI,GAAG,CAA4B;AAElE,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AACtD,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;QACpI;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,gCAAgC,CACjE,IAAI,CAAC,kBAAkB,EACvB,KAAK,EACL,wBAAwB,CAAC,KAAK,CAAC,MAAM,CACtC;AACD,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE;QAChE;IACF;8GAnBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;;;"}
@@ -0,0 +1,98 @@
1
+ import { AXPSettingsService, AXPCommonSettings } from '@acorex-platform/framework-client/common';
2
+ import { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';
3
+ import * as i0 from '@angular/core';
4
+ import { inject, Injectable } from '@angular/core';
5
+ import { AXToastService } from '@acorex/components/toast';
6
+ import { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';
7
+ import { RootConfig } from '@acorex-platform/module-background-job-management-client/contracts';
8
+ import { AXPBackgroundJobManagementClient } from './acorex-platform-module-background-job-management-client.mjs';
9
+ import { B as BackgroundJobCommandI18n, r as resolveBackgroundJobCommandError } from './acorex-platform-module-background-job-management-client-background-job-command-error.util-BzDLhWRP.mjs';
10
+
11
+ //#endregion
12
+ //#region ----- Command -----
13
+ class RunScheduleNowCommand {
14
+ constructor() {
15
+ //#region ----- Services & Dependencies -----
16
+ this.client = inject(AXPBackgroundJobManagementClient);
17
+ this.entityEvents = inject(AXPEntityBroadcastService);
18
+ this.translationService = inject(AXTranslationService);
19
+ this.toastService = inject(AXToastService);
20
+ this.settingsService = inject(AXPSettingsService);
21
+ //#endregion
22
+ //#region ----- Constants -----
23
+ this.scheduleEntityRef = RootConfig.entities.backgroundJobSchedule.fullName;
24
+ }
25
+ //#endregion
26
+ //#region ----- Execute -----
27
+ async execute(raw) {
28
+ const payload = raw;
29
+ const input = (payload?.options ?? raw);
30
+ const scheduleName = this.resolveScheduleName(payload?.data, input.scheduleId);
31
+ try {
32
+ const result = await this.client.runScheduleNow(input.scheduleId);
33
+ this.entityEvents.publishLayoutRefresh(this.scheduleEntityRef);
34
+ this.entityEvents.publishDataReload(this.scheduleEntityRef);
35
+ await this.showToast('success', BackgroundJobCommandI18n.runNow.successTitle, BackgroundJobCommandI18n.runNow.successDescription, {
36
+ name: scheduleName,
37
+ });
38
+ return { success: true, kind: 'object', data: { jobId: result.jobId } };
39
+ }
40
+ catch (error) {
41
+ const { messageKeyOrText, displayText } = await resolveBackgroundJobCommandError(this.translationService, error, BackgroundJobCommandI18n.runNow.failedDescription);
42
+ const content = messageKeyOrText === BackgroundJobCommandI18n.runNow.failedDescription
43
+ ? BackgroundJobCommandI18n.runNow.failedDescription
44
+ : displayText;
45
+ await this.showToast('danger', BackgroundJobCommandI18n.runNow.failedTitle, content, {
46
+ name: scheduleName,
47
+ });
48
+ return { success: false };
49
+ }
50
+ }
51
+ //#endregion
52
+ //#region ----- Toast & Labels -----
53
+ resolveScheduleName(data, scheduleId) {
54
+ const row = data;
55
+ if (!row) {
56
+ return scheduleId;
57
+ }
58
+ const title = row.title;
59
+ if (typeof title === 'string' && title.trim()) {
60
+ return title.trim();
61
+ }
62
+ if (title && typeof title === 'object') {
63
+ const resolved = resolveMultiLanguageString(title, this.translationService.getActiveLang())?.trim();
64
+ if (resolved) {
65
+ return resolved;
66
+ }
67
+ }
68
+ const commandKey = row.command?.key;
69
+ if (typeof commandKey === 'string' && commandKey.trim()) {
70
+ return commandKey.trim();
71
+ }
72
+ return scheduleId;
73
+ }
74
+ async showToast(color, titleKey, contentKeyOrText, params) {
75
+ const enabled = await this.settingsService.get(AXPCommonSettings.EnableOperationToasts);
76
+ if (!enabled) {
77
+ return;
78
+ }
79
+ const title = await this.translationService.translateAsync(titleKey);
80
+ const content = contentKeyOrText.startsWith('@')
81
+ ? await this.translationService.translateAsync(contentKeyOrText, { params })
82
+ : contentKeyOrText;
83
+ this.toastService.show({
84
+ color,
85
+ title,
86
+ content,
87
+ timeOut: color === 'success' ? 4000 : 5000,
88
+ });
89
+ }
90
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RunScheduleNowCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
91
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RunScheduleNowCommand }); }
92
+ }
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RunScheduleNowCommand, decorators: [{
94
+ type: Injectable
95
+ }] });
96
+
97
+ export { RunScheduleNowCommand };
98
+ //# sourceMappingURL=acorex-platform-module-background-job-management-client-run-schedule-now.command-orzJ7ZmD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-background-job-management-client-run-schedule-now.command-orzJ7ZmD.mjs","sources":["../../../../libs/modules/background-job-management/client/src/lib/commands/run-schedule-now.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { Injectable, inject } from '@angular/core';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { RootConfig } from '@acorex-platform/module-background-job-management-client/contracts';\nimport { AXPBackgroundJobManagementClient } from '../background-job-management-client.port';\nimport { resolveBackgroundJobCommandError } from './background-job-command-error.util';\nimport { BackgroundJobCommandI18n } from './background-job-command.i18n';\n\n//#region ----- Types -----\n\nexport interface RunScheduleNowInput {\n scheduleId: string;\n}\n\ntype RunScheduleNowRaw = {\n options?: RunScheduleNowInput;\n data?: Record<string, unknown>;\n};\n\n//#endregion\n\n//#region ----- Command -----\n\n@Injectable()\nexport class RunScheduleNowCommand implements AXPCommand<RunScheduleNowInput, { jobId: string }> {\n //#region ----- Services & Dependencies -----\n\n private readonly client = inject(AXPBackgroundJobManagementClient);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ----- Constants -----\n\n private readonly scheduleEntityRef = RootConfig.entities.backgroundJobSchedule.fullName;\n\n //#endregion\n\n //#region ----- Execute -----\n\n async execute(raw: unknown): AXPCommandExecuteResultPromise<{ jobId: string }> {\n const payload = raw as RunScheduleNowRaw;\n const input = (payload?.options ?? raw) as RunScheduleNowInput;\n const scheduleName = this.resolveScheduleName(payload?.data, input.scheduleId);\n\n try {\n const result = await this.client.runScheduleNow(input.scheduleId);\n this.entityEvents.publishLayoutRefresh(this.scheduleEntityRef);\n this.entityEvents.publishDataReload(this.scheduleEntityRef);\n await this.showToast('success', BackgroundJobCommandI18n.runNow.successTitle, BackgroundJobCommandI18n.runNow.successDescription, {\n name: scheduleName,\n });\n return { success: true, kind: 'object', data: { jobId: result.jobId } };\n } catch (error) {\n const { messageKeyOrText, displayText } = await resolveBackgroundJobCommandError(\n this.translationService,\n error,\n BackgroundJobCommandI18n.runNow.failedDescription,\n );\n const content =\n messageKeyOrText === BackgroundJobCommandI18n.runNow.failedDescription\n ? BackgroundJobCommandI18n.runNow.failedDescription\n : displayText;\n await this.showToast('danger', BackgroundJobCommandI18n.runNow.failedTitle, content, {\n name: scheduleName,\n });\n return { success: false };\n }\n }\n\n //#endregion\n\n //#region ----- Toast & Labels -----\n\n private resolveScheduleName(data: unknown, scheduleId: string): string {\n const row = data as { title?: unknown; command?: { key?: string } } | null | undefined;\n if (!row) {\n return scheduleId;\n }\n\n const title = row.title;\n if (typeof title === 'string' && title.trim()) {\n return title.trim();\n }\n if (title && typeof title === 'object') {\n const resolved = resolveMultiLanguageString(title as never, this.translationService.getActiveLang())?.trim();\n if (resolved) {\n return resolved;\n }\n }\n\n const commandKey = row.command?.key;\n if (typeof commandKey === 'string' && commandKey.trim()) {\n return commandKey.trim();\n }\n\n return scheduleId;\n }\n\n private async showToast(\n color: 'success' | 'danger',\n titleKey: string,\n contentKeyOrText: string,\n params: { name: string },\n ): Promise<void> {\n const enabled = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enabled) {\n return;\n }\n\n const title = await this.translationService.translateAsync(titleKey);\n const content = contentKeyOrText.startsWith('@')\n ? await this.translationService.translateAsync(contentKeyOrText, { params })\n : contentKeyOrText;\n\n this.toastService.show({\n color,\n title,\n content,\n timeOut: color === 'success' ? 4000 : 5000,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,416 @@
1
+ import { AXP_BACKGROUND_JOB_SCHEDULE_STATUS_DEFINITION_KEY, AXP_BACKGROUND_JOB_SCHEDULE_STATUS_ACTIVE, AXP_BACKGROUND_JOB_STATUS_DEFINITION_KEY, AXP_BACKGROUND_JOB_STATUS_CREATED, AXPBackgroundJobCommandKeys } from '@acorex-platform/framework-shared/background-job';
2
+ import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
3
+ import { AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/common';
4
+ import { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';
5
+ import { provideCommandSetups } from '@acorex-platform/framework-client/runtime';
6
+ import * as i0 from '@angular/core';
7
+ import { inject, Injectable, NgModule } from '@angular/core';
8
+ import { AXPStatusProvider, AXPWidgetsList } from '@acorex-platform/framework-shared/core';
9
+ import { RootConfig, AXPAdministrationPermissionKeys, AXPBackgroundJobManagementMenuKeys, AXPBackgroundJobManagementSettings } from '@acorex-platform/module-background-job-management-client/contracts';
10
+ import { AXPCommonMenuKeys, AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';
11
+ import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
12
+ import { firstValueFrom } from 'rxjs';
13
+
14
+ //#region ---- Client port ----
15
+ /**
16
+ * Client-side port for the background-job-management server API.
17
+ * Bound to the HTTP implementation by the gateway package.
18
+ */
19
+ class AXPBackgroundJobManagementClient {
20
+ }
21
+ //#endregion
22
+
23
+ const I18N$1 = '@background-job-management:schedules.entities.background-job-schedule';
24
+ //#region ---- Job schedule status provider ----
25
+ class AXMBackgroundJobScheduleStatusProvider extends AXPStatusProvider {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.key = AXP_BACKGROUND_JOB_SCHEDULE_STATUS_DEFINITION_KEY;
29
+ this.defaultStatus = AXP_BACKGROUND_JOB_SCHEDULE_STATUS_ACTIVE;
30
+ this.statuses = [
31
+ {
32
+ name: 'active',
33
+ title: `${I18N$1}.status.active`,
34
+ color: 'success',
35
+ generateView: true,
36
+ isInitial: true,
37
+ },
38
+ {
39
+ name: 'pause',
40
+ title: `${I18N$1}.status.pause`,
41
+ color: 'warning',
42
+ generateView: true,
43
+ },
44
+ {
45
+ name: 'disabled',
46
+ title: `${I18N$1}.status.disabled`,
47
+ color: 'danger',
48
+ generateView: true,
49
+ isFinal: true,
50
+ },
51
+ ];
52
+ this.transitions = [
53
+ { from: 'active', to: 'pause', title: `${I18N$1}.transitions.pause` },
54
+ { from: 'pause', to: 'active', title: `${I18N$1}.transitions.resume` },
55
+ { from: 'active', to: 'disabled', title: `${I18N$1}.transitions.disable` },
56
+ { from: 'disabled', to: 'active', title: `${I18N$1}.transitions.enable` },
57
+ { from: 'pause', to: 'disabled', title: `${I18N$1}.transitions.disable` },
58
+ { from: 'disabled', to: 'pause', title: `${I18N$1}.transitions.pause` },
59
+ ];
60
+ }
61
+ }
62
+ //#endregion
63
+
64
+ const I18N = '@background-job-management:jobs.entities.background-job';
65
+ //#region ---- Background job status provider ----
66
+ /**
67
+ * Engine-managed lifecycle for logical jobs (`BackgroundJob`).
68
+ * Read-only in the UI — transitions are performed by the execution engine and job commands.
69
+ */
70
+ class AXMBackgroundJobStatusProvider extends AXPStatusProvider {
71
+ constructor() {
72
+ super(...arguments);
73
+ this.key = AXP_BACKGROUND_JOB_STATUS_DEFINITION_KEY;
74
+ this.defaultStatus = AXP_BACKGROUND_JOB_STATUS_CREATED;
75
+ this.statuses = [
76
+ {
77
+ name: 'created',
78
+ title: `${I18N}.states.created`,
79
+ color: 'secondary',
80
+ generateView: true,
81
+ isInitial: true,
82
+ },
83
+ {
84
+ name: 'scheduled',
85
+ title: `${I18N}.states.scheduled`,
86
+ color: 'info',
87
+ generateView: true,
88
+ },
89
+ {
90
+ name: 'queued',
91
+ title: `${I18N}.states.queued`,
92
+ color: 'warning',
93
+ generateView: true,
94
+ },
95
+ {
96
+ name: 'running',
97
+ title: `${I18N}.states.running`,
98
+ color: 'primary',
99
+ generateView: true,
100
+ },
101
+ {
102
+ name: 'paused',
103
+ title: `${I18N}.states.paused`,
104
+ color: 'warning',
105
+ generateView: true,
106
+ },
107
+ {
108
+ name: 'completed',
109
+ title: `${I18N}.states.completed`,
110
+ color: 'success',
111
+ generateView: true,
112
+ isFinal: true,
113
+ },
114
+ {
115
+ name: 'failed',
116
+ title: `${I18N}.states.failed`,
117
+ color: 'danger',
118
+ generateView: true,
119
+ isFinal: true,
120
+ },
121
+ {
122
+ name: 'cancelled',
123
+ title: `${I18N}.states.cancelled`,
124
+ color: 'warning',
125
+ generateView: true,
126
+ isFinal: true,
127
+ },
128
+ {
129
+ name: 'dead-lettered',
130
+ title: `${I18N}.states.dead-lettered`,
131
+ color: 'danger',
132
+ generateView: true,
133
+ isFinal: true,
134
+ },
135
+ ];
136
+ this.transitions = [];
137
+ }
138
+ }
139
+ //#endregion
140
+
141
+ /** Background Job Management module manifest. */
142
+ const BackgroundJobManagementManifest = {
143
+ name: RootConfig.module.name,
144
+ version: '1.0.0',
145
+ title: RootConfig.module.title,
146
+ icon: RootConfig.module.icon,
147
+ i18n: RootConfig.config.i18n,
148
+ type: 'platform',
149
+ domain: 'platform',
150
+ };
151
+
152
+ class AXMBackgroundJobManagementMenuProvider {
153
+ constructor() {
154
+ this.entityService = inject(AXPEntityService);
155
+ this.sessionService = inject(AXPSessionService);
156
+ }
157
+ async provide(context) {
158
+ const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);
159
+ if (!isAuthorized) {
160
+ return;
161
+ }
162
+ const module = RootConfig.module;
163
+ const viewJobsPolicy = {
164
+ features: [module.name],
165
+ permissions: [AXPAdministrationPermissionKeys.ViewJobs],
166
+ };
167
+ const monitoringMenu = context.find(AXPCommonMenuKeys.Monitoring);
168
+ if (!monitoringMenu.exists) {
169
+ context.find(AXPCommonMenuKeys.Administration).addItems([
170
+ {
171
+ name: AXPCommonMenuKeys.Monitoring,
172
+ priority: 12,
173
+ text: '@general:menus.monitoring.title',
174
+ icon: 'fa-light fa-chart-line',
175
+ type: 'menu',
176
+ children: [],
177
+ },
178
+ ]);
179
+ }
180
+ context.find(AXPCommonMenuKeys.Monitoring).addItems([
181
+ {
182
+ name: AXPBackgroundJobManagementMenuKeys.Jobs,
183
+ text: '@background-job-management:jobs.menus.jobs.title',
184
+ path: this.entityService.createPath(module.name, RootConfig.entities.backgroundJob.name),
185
+ priority: 2,
186
+ icon: RootConfig.entities.backgroundJob.icon,
187
+ policy: viewJobsPolicy,
188
+ },
189
+ ]);
190
+ context.find(AXPCommonMenuKeys.Administration).addItems([
191
+ {
192
+ name: AXPBackgroundJobManagementMenuKeys.Schedules,
193
+ text: '@background-job-management:schedules.menus.schedules.title',
194
+ path: this.entityService.createPath(module.name, RootConfig.entities.backgroundJobSchedule.name),
195
+ priority: 16,
196
+ icon: RootConfig.entities.backgroundJobSchedule.icon,
197
+ policy: viewJobsPolicy,
198
+ },
199
+ ]);
200
+ }
201
+ }
202
+
203
+ //#endregion
204
+ //#region ---- Permission Definition Provider ----
205
+ /**
206
+ * Registers Jobs section capabilities under Administration.
207
+ */
208
+ class AXMBackgroundJobManagementPermissionProvider {
209
+ async define(context) {
210
+ const keys = AXPAdministrationPermissionKeys;
211
+ const groups = AXPCommonPermissionGroupKeys;
212
+ const P = '@common:administration.permissions';
213
+ const G = '@common:permission-groups';
214
+ context.addGroup(groups.Administration.Root, `${G}.administration.title`, `${G}.administration.description`, { order: 120 });
215
+ context
216
+ .addGroup(groups.Administration.Jobs, `${G}.administration-jobs.title`, `${G}.administration-jobs.description`, { parent: groups.Administration.Root, order: 70 })
217
+ .addPermission(keys.ViewJobs, `${P}.view-jobs.title`, `${P}.view-jobs.description`)
218
+ .endPermission()
219
+ .addPermission(keys.ManageJobActions, `${P}.manage-job-actions.title`, `${P}.manage-job-actions.description`)
220
+ .endPermission()
221
+ .endGroup();
222
+ }
223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMBackgroundJobManagementPermissionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
224
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMBackgroundJobManagementPermissionProvider }); }
225
+ }
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMBackgroundJobManagementPermissionProvider, decorators: [{
227
+ type: Injectable
228
+ }] });
229
+
230
+ //#region ---- Background job management settings ----
231
+ class AXMBackgroundJobManagementSettingProvider {
232
+ async provide(context) {
233
+ const retentionEnabled = `{{ context.eval('${AXPBackgroundJobManagementSettings.RetentionEnabled}') }}`;
234
+ context
235
+ .addGroup('background-job-management', '@background-job-management:settings.group.title', '@background-job-management:settings.group.description', 'fa-light fa-gears', undefined, 850)
236
+ .addSection('retention', '@background-job-management:settings.retention.title', '@background-job-management:settings.retention.description')
237
+ .addSetting({
238
+ key: AXPBackgroundJobManagementSettings.RetentionEnabled,
239
+ title: '@background-job-management:settings.retention.items.enabled.title',
240
+ description: '@background-job-management:settings.retention.items.enabled.description',
241
+ scope: 'P',
242
+ overridableAt: [],
243
+ isInherited: false,
244
+ defaultValue: true,
245
+ widget: { type: AXPWidgetsList.Editors.ToggleSwitch },
246
+ })
247
+ .addSetting({
248
+ key: AXPBackgroundJobManagementSettings.RetentionDefaultDays,
249
+ title: '@background-job-management:settings.retention.items.default-days.title',
250
+ description: '@background-job-management:settings.retention.items.default-days.description',
251
+ scope: 'P',
252
+ overridableAt: [],
253
+ isInherited: false,
254
+ defaultValue: 30,
255
+ widget: {
256
+ type: AXPWidgetsList.Editors.NumberBox,
257
+ options: { minValue: 1, maxValue: 365, visibility: retentionEnabled },
258
+ },
259
+ validationRules: [{ rule: 'required' }],
260
+ })
261
+ .addSetting({
262
+ key: AXPBackgroundJobManagementSettings.RetentionDeadLetterDays,
263
+ title: '@background-job-management:settings.retention.items.dead-letter-days.title',
264
+ description: '@background-job-management:settings.retention.items.dead-letter-days.description',
265
+ scope: 'P',
266
+ overridableAt: [],
267
+ isInherited: false,
268
+ defaultValue: 90,
269
+ widget: {
270
+ type: AXPWidgetsList.Editors.NumberBox,
271
+ options: { minValue: 1, maxValue: 730, visibility: retentionEnabled },
272
+ },
273
+ validationRules: [{ rule: 'required' }],
274
+ })
275
+ .addSetting({
276
+ key: AXPBackgroundJobManagementSettings.RetentionBatchSize,
277
+ title: '@background-job-management:settings.retention.items.batch-size.title',
278
+ description: '@background-job-management:settings.retention.items.batch-size.description',
279
+ scope: 'P',
280
+ overridableAt: [],
281
+ isInherited: false,
282
+ defaultValue: 500,
283
+ widget: {
284
+ type: AXPWidgetsList.Editors.NumberBox,
285
+ options: { minValue: 1, maxValue: 5000, visibility: retentionEnabled },
286
+ },
287
+ validationRules: [{ rule: 'required' }],
288
+ })
289
+ .addSetting({
290
+ key: AXPBackgroundJobManagementSettings.RetentionPurgeCron,
291
+ title: '@background-job-management:settings.retention.items.purge-cron.title',
292
+ description: '@background-job-management:settings.retention.items.purge-cron.description',
293
+ scope: 'P',
294
+ overridableAt: [],
295
+ isInherited: false,
296
+ defaultValue: '0 3 * * *',
297
+ widget: {
298
+ type: AXPWidgetsList.Editors.TextBox,
299
+ options: { visibility: retentionEnabled },
300
+ },
301
+ validationRules: [{ rule: 'required' }],
302
+ })
303
+ .endSection()
304
+ .endGroup();
305
+ }
306
+ }
307
+ //#endregion
308
+
309
+ class AXMBackgroundJobManagementModule {
310
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMBackgroundJobManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
311
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMBackgroundJobManagementModule }); }
312
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMBackgroundJobManagementModule, providers: [
313
+ provideCommandSetups([
314
+ {
315
+ key: AXPBackgroundJobCommandKeys.JobCancel,
316
+ command: () => import('./acorex-platform-module-background-job-management-client-cancel-background-job.command-OZPzjIow.mjs').then((c) => c.CancelBackgroundJobCommand),
317
+ },
318
+ {
319
+ key: AXPBackgroundJobCommandKeys.JobRetry,
320
+ command: () => import('./acorex-platform-module-background-job-management-client-retry-background-job.command-BdJ_PC_y.mjs').then((c) => c.RetryBackgroundJobCommand),
321
+ },
322
+ {
323
+ key: AXPBackgroundJobCommandKeys.ScheduleRunNow,
324
+ command: () => import('./acorex-platform-module-background-job-management-client-run-schedule-now.command-orzJ7ZmD.mjs').then((c) => c.RunScheduleNowCommand),
325
+ },
326
+ ]),
327
+ {
328
+ provide: AXP_STATUS_PROVIDERS,
329
+ useClass: AXMBackgroundJobScheduleStatusProvider,
330
+ multi: true,
331
+ },
332
+ {
333
+ provide: AXP_STATUS_PROVIDERS,
334
+ useClass: AXMBackgroundJobStatusProvider,
335
+ multi: true,
336
+ },
337
+ {
338
+ provide: AXP_MENU_PROVIDER,
339
+ useClass: AXMBackgroundJobManagementMenuProvider,
340
+ multi: true,
341
+ },
342
+ {
343
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
344
+ useClass: AXMBackgroundJobManagementPermissionProvider,
345
+ multi: true,
346
+ },
347
+ {
348
+ provide: AXP_SETTING_DEFINITION_PROVIDER,
349
+ useClass: AXMBackgroundJobManagementSettingProvider,
350
+ multi: true,
351
+ },
352
+ {
353
+ provide: AXP_MODULE_MANIFEST_PROVIDER,
354
+ useValue: BackgroundJobManagementManifest,
355
+ multi: true,
356
+ },
357
+ ] }); }
358
+ }
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMBackgroundJobManagementModule, decorators: [{
360
+ type: NgModule,
361
+ args: [{
362
+ providers: [
363
+ provideCommandSetups([
364
+ {
365
+ key: AXPBackgroundJobCommandKeys.JobCancel,
366
+ command: () => import('./acorex-platform-module-background-job-management-client-cancel-background-job.command-OZPzjIow.mjs').then((c) => c.CancelBackgroundJobCommand),
367
+ },
368
+ {
369
+ key: AXPBackgroundJobCommandKeys.JobRetry,
370
+ command: () => import('./acorex-platform-module-background-job-management-client-retry-background-job.command-BdJ_PC_y.mjs').then((c) => c.RetryBackgroundJobCommand),
371
+ },
372
+ {
373
+ key: AXPBackgroundJobCommandKeys.ScheduleRunNow,
374
+ command: () => import('./acorex-platform-module-background-job-management-client-run-schedule-now.command-orzJ7ZmD.mjs').then((c) => c.RunScheduleNowCommand),
375
+ },
376
+ ]),
377
+ {
378
+ provide: AXP_STATUS_PROVIDERS,
379
+ useClass: AXMBackgroundJobScheduleStatusProvider,
380
+ multi: true,
381
+ },
382
+ {
383
+ provide: AXP_STATUS_PROVIDERS,
384
+ useClass: AXMBackgroundJobStatusProvider,
385
+ multi: true,
386
+ },
387
+ {
388
+ provide: AXP_MENU_PROVIDER,
389
+ useClass: AXMBackgroundJobManagementMenuProvider,
390
+ multi: true,
391
+ },
392
+ {
393
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
394
+ useClass: AXMBackgroundJobManagementPermissionProvider,
395
+ multi: true,
396
+ },
397
+ {
398
+ provide: AXP_SETTING_DEFINITION_PROVIDER,
399
+ useClass: AXMBackgroundJobManagementSettingProvider,
400
+ multi: true,
401
+ },
402
+ {
403
+ provide: AXP_MODULE_MANIFEST_PROVIDER,
404
+ useValue: BackgroundJobManagementManifest,
405
+ multi: true,
406
+ },
407
+ ],
408
+ }]
409
+ }] });
410
+
411
+ /**
412
+ * Generated bundle index. Do not edit.
413
+ */
414
+
415
+ export { AXMBackgroundJobManagementMenuProvider, AXMBackgroundJobManagementModule, AXMBackgroundJobManagementPermissionProvider, AXPBackgroundJobManagementClient, BackgroundJobManagementManifest };
416
+ //# sourceMappingURL=acorex-platform-module-background-job-management-client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-background-job-management-client.mjs","sources":["../../../../libs/modules/background-job-management/client/src/lib/background-job-management-client.port.ts","../../../../libs/modules/background-job-management/client/src/lib/features/background-job-schedule-status.provider.ts","../../../../libs/modules/background-job-management/client/src/lib/features/background-job-status.provider.ts","../../../../libs/modules/background-job-management/client/src/lib/manifest.ts","../../../../libs/modules/background-job-management/client/src/lib/menu.provider.ts","../../../../libs/modules/background-job-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/background-job-management/client/src/lib/settings.provider.ts","../../../../libs/modules/background-job-management/client/src/lib/background-job-management.module.ts","../../../../libs/modules/background-job-management/client/src/acorex-platform-module-background-job-management-client.ts"],"sourcesContent":["import type {\n AXPBackgroundJob,\n AXPBackgroundJobAttempt,\n AXPBackgroundJobSchedule,\n AXPCancelBackgroundJobResult,\n AXPCreateBackgroundJobRequest,\n AXPCreateBackgroundJobResult,\n AXPRetryBackgroundJobResult,\n} from '@acorex-platform/framework-shared/background-job';\n\n//#region ---- Client port ----\n\n/**\n * Client-side port for the background-job-management server API.\n * Bound to the HTTP implementation by the gateway package.\n */\nexport abstract class AXPBackgroundJobManagementClient {\n abstract createJob(request: AXPCreateBackgroundJobRequest): Promise<AXPCreateBackgroundJobResult>;\n abstract getJob(jobId: string): Promise<AXPBackgroundJob | null>;\n abstract listAttempts(jobId: string): Promise<AXPBackgroundJobAttempt[]>;\n abstract cancelJob(jobId: string, reason?: string): Promise<AXPCancelBackgroundJobResult>;\n abstract retryJob(jobId: string): Promise<AXPRetryBackgroundJobResult>;\n abstract deleteJob(jobId: string): Promise<{ success: boolean }>;\n abstract replayDeadLetter(jobId: string): Promise<{ jobId: string }>;\n abstract upsertSchedule(schedule: Partial<AXPBackgroundJobSchedule>): Promise<AXPBackgroundJobSchedule>;\n abstract enableSchedule(scheduleId: string): Promise<{ success: boolean }>;\n abstract disableSchedule(scheduleId: string): Promise<{ success: boolean }>;\n abstract runScheduleNow(scheduleId: string): Promise<AXPCreateBackgroundJobResult>;\n abstract deleteSchedule(scheduleId: string): Promise<{ success: boolean }>;\n}\n\n//#endregion\n","import { AXStyleColorType } from '@acorex/cdk/common';\nimport {\n AXP_BACKGROUND_JOB_SCHEDULE_STATUS_ACTIVE,\n AXP_BACKGROUND_JOB_SCHEDULE_STATUS_DEFINITION_KEY,\n type AXPBackgroundJobScheduleStatus,\n} from '@acorex-platform/framework-shared/background-job';\nimport { AXPStatusProvider, AXPStatusTransition } from '@acorex-platform/framework-shared/core';\n\nconst I18N = '@background-job-management:schedules.entities.background-job-schedule';\n\n//#region ---- Job schedule status provider ----\n\nexport class AXMBackgroundJobScheduleStatusProvider extends AXPStatusProvider {\n readonly key = AXP_BACKGROUND_JOB_SCHEDULE_STATUS_DEFINITION_KEY;\n\n readonly defaultStatus: AXPBackgroundJobScheduleStatus = AXP_BACKGROUND_JOB_SCHEDULE_STATUS_ACTIVE;\n\n readonly statuses = [\n {\n name: 'active' as const,\n title: `${I18N}.status.active`,\n color: 'success' as AXStyleColorType,\n generateView: true,\n isInitial: true,\n },\n {\n name: 'pause' as const,\n title: `${I18N}.status.pause`,\n color: 'warning' as AXStyleColorType,\n generateView: true,\n },\n {\n name: 'disabled' as const,\n title: `${I18N}.status.disabled`,\n color: 'danger' as AXStyleColorType,\n generateView: true,\n isFinal: true,\n },\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n { from: 'active', to: 'pause', title: `${I18N}.transitions.pause` },\n { from: 'pause', to: 'active', title: `${I18N}.transitions.resume` },\n { from: 'active', to: 'disabled', title: `${I18N}.transitions.disable` },\n { from: 'disabled', to: 'active', title: `${I18N}.transitions.enable` },\n { from: 'pause', to: 'disabled', title: `${I18N}.transitions.disable` },\n { from: 'disabled', to: 'pause', title: `${I18N}.transitions.pause` },\n ];\n}\n\n//#endregion\n","import { AXStyleColorType } from '@acorex/cdk/common';\nimport {\n AXP_BACKGROUND_JOB_STATUS_CREATED,\n AXP_BACKGROUND_JOB_STATUS_DEFINITION_KEY,\n type AXPBackgroundJobStatus,\n} from '@acorex-platform/framework-shared/background-job';\nimport { AXPStatusProvider } from '@acorex-platform/framework-shared/core';\n\nconst I18N = '@background-job-management:jobs.entities.background-job';\n\n//#region ---- Background job status provider ----\n\n/**\n * Engine-managed lifecycle for logical jobs (`BackgroundJob`).\n * Read-only in the UI — transitions are performed by the execution engine and job commands.\n */\nexport class AXMBackgroundJobStatusProvider extends AXPStatusProvider {\n readonly key = AXP_BACKGROUND_JOB_STATUS_DEFINITION_KEY;\n\n readonly defaultStatus: AXPBackgroundJobStatus = AXP_BACKGROUND_JOB_STATUS_CREATED;\n\n readonly statuses = [\n {\n name: 'created' as const,\n title: `${I18N}.states.created`,\n color: 'secondary' as AXStyleColorType,\n generateView: true,\n isInitial: true,\n },\n {\n name: 'scheduled' as const,\n title: `${I18N}.states.scheduled`,\n color: 'info' as AXStyleColorType,\n generateView: true,\n },\n {\n name: 'queued' as const,\n title: `${I18N}.states.queued`,\n color: 'warning' as AXStyleColorType,\n generateView: true,\n },\n {\n name: 'running' as const,\n title: `${I18N}.states.running`,\n color: 'primary' as AXStyleColorType,\n generateView: true,\n },\n {\n name: 'paused' as const,\n title: `${I18N}.states.paused`,\n color: 'warning' as AXStyleColorType,\n generateView: true,\n },\n {\n name: 'completed' as const,\n title: `${I18N}.states.completed`,\n color: 'success' as AXStyleColorType,\n generateView: true,\n isFinal: true,\n },\n {\n name: 'failed' as const,\n title: `${I18N}.states.failed`,\n color: 'danger' as AXStyleColorType,\n generateView: true,\n isFinal: true,\n },\n {\n name: 'cancelled' as const,\n title: `${I18N}.states.cancelled`,\n color: 'warning' as AXStyleColorType,\n generateView: true,\n isFinal: true,\n },\n {\n name: 'dead-lettered' as const,\n title: `${I18N}.states.dead-lettered`,\n color: 'danger' as AXStyleColorType,\n generateView: true,\n isFinal: true,\n },\n ];\n\n readonly transitions = [];\n}\n\n//#endregion\n","import { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-background-job-management-client/contracts';\n\n/** Background Job Management module manifest. */\nexport const BackgroundJobManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'platform',\n domain: 'platform',\n};\n","import { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport {\n AXPAdministrationPermissionKeys,\n AXPBackgroundJobManagementMenuKeys,\n RootConfig,\n} from '@acorex-platform/module-background-job-management-client/contracts';\n\nexport class AXMBackgroundJobManagementMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n\n const module = RootConfig.module;\n const viewJobsPolicy = {\n features: [module.name],\n permissions: [AXPAdministrationPermissionKeys.ViewJobs],\n };\n\n const monitoringMenu = context.find(AXPCommonMenuKeys.Monitoring);\n if (!monitoringMenu.exists) {\n context.find(AXPCommonMenuKeys.Administration).addItems([\n {\n name: AXPCommonMenuKeys.Monitoring,\n priority: 12,\n text: '@general:menus.monitoring.title',\n icon: 'fa-light fa-chart-line',\n type: 'menu',\n children: [],\n },\n ]);\n }\n\n context.find(AXPCommonMenuKeys.Monitoring).addItems([\n {\n name: AXPBackgroundJobManagementMenuKeys.Jobs,\n text: '@background-job-management:jobs.menus.jobs.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.backgroundJob.name),\n priority: 2,\n icon: RootConfig.entities.backgroundJob.icon,\n policy: viewJobsPolicy,\n },\n ]);\n\n context.find(AXPCommonMenuKeys.Administration).addItems([\n {\n name: AXPBackgroundJobManagementMenuKeys.Schedules,\n text: '@background-job-management:schedules.menus.schedules.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.backgroundJobSchedule.name),\n priority: 16,\n icon: RootConfig.entities.backgroundJobSchedule.icon,\n policy: viewJobsPolicy,\n },\n ]);\n }\n}\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport { AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPAdministrationPermissionKeys } from '@acorex-platform/module-background-job-management-client/contracts';\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers Jobs section capabilities under Administration.\n */\n@Injectable()\nexport class AXMBackgroundJobManagementPermissionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPAdministrationPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:administration.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.Administration.Root, `${G}.administration.title`, `${G}.administration.description`, { order: 120 });\n\n context\n .addGroup(\n groups.Administration.Jobs,\n `${G}.administration-jobs.title`,\n `${G}.administration-jobs.description`,\n { parent: groups.Administration.Root, order: 70 },\n )\n .addPermission(keys.ViewJobs, `${P}.view-jobs.title`, `${P}.view-jobs.description`)\n .endPermission()\n .addPermission(keys.ManageJobActions, `${P}.manage-job-actions.title`, `${P}.manage-job-actions.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPBackgroundJobManagementSettings,\n} from '@acorex-platform/module-background-job-management-client/contracts';\n\n//#region ---- Background job management settings ----\n\nexport class AXMBackgroundJobManagementSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n const retentionEnabled = `{{ context.eval('${AXPBackgroundJobManagementSettings.RetentionEnabled}') }}`;\n\n context\n .addGroup(\n 'background-job-management',\n '@background-job-management:settings.group.title',\n '@background-job-management:settings.group.description',\n 'fa-light fa-gears',\n undefined,\n 850,\n )\n .addSection(\n 'retention',\n '@background-job-management:settings.retention.title',\n '@background-job-management:settings.retention.description',\n )\n .addSetting({\n key: AXPBackgroundJobManagementSettings.RetentionEnabled,\n title: '@background-job-management:settings.retention.items.enabled.title',\n description: '@background-job-management:settings.retention.items.enabled.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: true,\n widget: { type: AXPWidgetsList.Editors.ToggleSwitch },\n })\n .addSetting({\n key: AXPBackgroundJobManagementSettings.RetentionDefaultDays,\n title: '@background-job-management:settings.retention.items.default-days.title',\n description: '@background-job-management:settings.retention.items.default-days.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: 30,\n widget: {\n type: AXPWidgetsList.Editors.NumberBox,\n options: { minValue: 1, maxValue: 365, visibility: retentionEnabled },\n },\n validationRules: [{ rule: 'required' }],\n })\n .addSetting({\n key: AXPBackgroundJobManagementSettings.RetentionDeadLetterDays,\n title: '@background-job-management:settings.retention.items.dead-letter-days.title',\n description: '@background-job-management:settings.retention.items.dead-letter-days.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: 90,\n widget: {\n type: AXPWidgetsList.Editors.NumberBox,\n options: { minValue: 1, maxValue: 730, visibility: retentionEnabled },\n },\n validationRules: [{ rule: 'required' }],\n })\n .addSetting({\n key: AXPBackgroundJobManagementSettings.RetentionBatchSize,\n title: '@background-job-management:settings.retention.items.batch-size.title',\n description: '@background-job-management:settings.retention.items.batch-size.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: 500,\n widget: {\n type: AXPWidgetsList.Editors.NumberBox,\n options: { minValue: 1, maxValue: 5000, visibility: retentionEnabled },\n },\n validationRules: [{ rule: 'required' }],\n })\n .addSetting({\n key: AXPBackgroundJobManagementSettings.RetentionPurgeCron,\n title: '@background-job-management:settings.retention.items.purge-cron.title',\n description: '@background-job-management:settings.retention.items.purge-cron.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: '0 3 * * *',\n widget: {\n type: AXPWidgetsList.Editors.TextBox,\n options: { visibility: retentionEnabled },\n },\n validationRules: [{ rule: 'required' }],\n })\n .endSection()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXPBackgroundJobCommandKeys } from '@acorex-platform/framework-shared/background-job';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\nimport { AXMBackgroundJobScheduleStatusProvider } from './features/background-job-schedule-status.provider';\nimport { AXMBackgroundJobStatusProvider } from './features/background-job-status.provider';\n\nimport { BackgroundJobManagementManifest } from './manifest';\nimport { AXMBackgroundJobManagementMenuProvider } from './menu.provider';\nimport { AXMBackgroundJobManagementPermissionProvider } from './permission-definition.provider';\nimport { AXMBackgroundJobManagementSettingProvider } from './settings.provider';\n\n@NgModule({\n providers: [\n provideCommandSetups([\n {\n key: AXPBackgroundJobCommandKeys.JobCancel,\n command: () => import('./commands/cancel-background-job.command').then((c) => c.CancelBackgroundJobCommand),\n },\n {\n key: AXPBackgroundJobCommandKeys.JobRetry,\n command: () => import('./commands/retry-background-job.command').then((c) => c.RetryBackgroundJobCommand),\n },\n {\n key: AXPBackgroundJobCommandKeys.ScheduleRunNow,\n command: () => import('./commands/run-schedule-now.command').then((c) => c.RunScheduleNowCommand),\n },\n ]),\n \n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMBackgroundJobScheduleStatusProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMBackgroundJobStatusProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMBackgroundJobManagementMenuProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMBackgroundJobManagementPermissionProvider,\n multi: true,\n },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMBackgroundJobManagementSettingProvider,\n multi: true,\n },\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: BackgroundJobManagementManifest,\n multi: true,\n },\n ],\n})\nexport class AXMBackgroundJobManagementModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["I18N"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@acorex-platform/module-background-job-management-client",
3
+ "version": "0.0.21",
4
+ "sideEffects": false,
5
+ "peerDependencies": {
6
+ "@angular/common": "^21.0.0",
7
+ "@angular/core": "^21.0.0"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "^2.3.0"
11
+ },
12
+ "module": "fesm2022/acorex-platform-module-background-job-management-client.mjs",
13
+ "typings": "types/acorex-platform-module-background-job-management-client.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/acorex-platform-module-background-job-management-client.d.ts",
20
+ "default": "./fesm2022/acorex-platform-module-background-job-management-client.mjs"
21
+ },
22
+ "./contracts": {
23
+ "types": "./types/acorex-platform-module-background-job-management-client-contracts.d.ts",
24
+ "default": "./fesm2022/acorex-platform-module-background-job-management-client-contracts.mjs"
25
+ }
26
+ },
27
+ "type": "module"
28
+ }
@@ -0,0 +1,114 @@
1
+ import { AXPBackgroundJobSchedule } from '@acorex-platform/framework-shared/background-job';
2
+
3
+ declare const AXPBackgroundJobManagementMenuKeys: {
4
+ readonly Root: "background-job-management:menu";
5
+ readonly Jobs: "background-job-management:jobs";
6
+ readonly Schedules: "background-job-management:schedules";
7
+ };
8
+
9
+ /**
10
+ * Administration capabilities used by this module.
11
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
12
+ */
13
+ declare const AXPAdministrationPermissionKeys: {
14
+ readonly Access: "Administration:Permission:Access";
15
+ readonly MaintainUsersAndRoles: "Administration:Permission:MaintainUsersAndRoles";
16
+ readonly ManageSessions: "Administration:Permission:ManageSessions";
17
+ readonly MaintainPolicies: "Administration:Permission:MaintainPolicies";
18
+ readonly ViewIntegrations: "Administration:Permission:ViewIntegrations";
19
+ readonly MaintainConnections: "Administration:Permission:MaintainConnections";
20
+ readonly MaintainWorkflows: "Administration:Permission:MaintainWorkflows";
21
+ readonly ManageWorkflowActions: "Administration:Permission:ManageWorkflowActions";
22
+ readonly ViewRules: "Administration:Permission:ViewRules";
23
+ readonly MaintainRules: "Administration:Permission:MaintainRules";
24
+ readonly ManageRuleActions: "Administration:Permission:ManageRuleActions";
25
+ readonly MaintainAi: "Administration:Permission:MaintainAi";
26
+ readonly UseAiAssist: "Administration:Permission:UseAiAssist";
27
+ readonly MaintainDashboards: "Administration:Permission:MaintainDashboards";
28
+ readonly ViewJobs: "Administration:Permission:ViewJobs";
29
+ readonly ManageJobActions: "Administration:Permission:ManageJobActions";
30
+ readonly ViewObservability: "Administration:Permission:ViewObservability";
31
+ readonly MaintainObservability: "Administration:Permission:MaintainObservability";
32
+ };
33
+ /**
34
+ * @deprecated Prefer {@link AXPAdministrationPermissionKeys}.
35
+ * Legacy nested shape kept so existing imports compile during migration.
36
+ */
37
+ declare const AXMBackgroundJobPermissionKeys: {
38
+ readonly Job: {
39
+ readonly View: "Administration:Permission:ViewJobs";
40
+ readonly Cancel: "Administration:Permission:ManageJobActions";
41
+ readonly Retry: "Administration:Permission:ManageJobActions";
42
+ readonly Delete: "Administration:Permission:ManageJobActions";
43
+ readonly ReplayDeadLetter: "Administration:Permission:ManageJobActions";
44
+ };
45
+ readonly Schedule: {
46
+ readonly View: "Administration:Permission:ViewJobs";
47
+ readonly Manage: "Administration:Permission:ManageJobActions";
48
+ };
49
+ readonly Dashboard: {
50
+ readonly View: "Administration:Permission:ViewJobs";
51
+ };
52
+ };
53
+
54
+ declare enum AXPBackgroundJobManagementSettings {
55
+ RetentionEnabled = "BackgroundJobManagement:Setting:Retention.Enabled",
56
+ RetentionDefaultDays = "BackgroundJobManagement:Setting:Retention.DefaultDays",
57
+ RetentionDeadLetterDays = "BackgroundJobManagement:Setting:Retention.DeadLetterDays",
58
+ RetentionBatchSize = "BackgroundJobManagement:Setting:Retention.BatchSize",
59
+ RetentionPurgeCron = "BackgroundJobManagement:Setting:Retention.PurgeCron"
60
+ }
61
+ declare const AXP_BACKGROUND_JOB_RETENTION_SETTING_DEFAULTS: {
62
+ readonly "BackgroundJobManagement:Setting:Retention.Enabled": true;
63
+ readonly "BackgroundJobManagement:Setting:Retention.DefaultDays": 30;
64
+ readonly "BackgroundJobManagement:Setting:Retention.DeadLetterDays": 90;
65
+ readonly "BackgroundJobManagement:Setting:Retention.BatchSize": 500;
66
+ readonly "BackgroundJobManagement:Setting:Retention.PurgeCron": "0 3 * * *";
67
+ };
68
+
69
+ declare const RootConfig: {
70
+ readonly config: {
71
+ i18n: string;
72
+ module: string;
73
+ };
74
+ readonly module: {
75
+ readonly route: "background-job-management";
76
+ readonly name: string;
77
+ readonly title: "@background-job-management:module.title";
78
+ readonly icon: "fa-light fa-gears";
79
+ };
80
+ readonly entities: {
81
+ readonly backgroundJob: {
82
+ readonly name: "BackgroundJob";
83
+ readonly fullName: `${string}.BackgroundJob`;
84
+ readonly title: "@background-job-management:jobs.entities.background-job.title";
85
+ readonly titlePlural: "@background-job-management:jobs.entities.background-job.plural";
86
+ readonly icon: "fa-light fa-list-check";
87
+ };
88
+ readonly backgroundJobAttempt: {
89
+ readonly name: "BackgroundJobAttempt";
90
+ readonly fullName: `${string}.BackgroundJobAttempt`;
91
+ readonly title: "@background-job-management:attempts.entities.background-job-attempt.title";
92
+ readonly titlePlural: "@background-job-management:attempts.entities.background-job-attempt.plural";
93
+ readonly icon: "fa-light fa-rotate";
94
+ };
95
+ readonly backgroundJobSchedule: {
96
+ readonly name: "BackgroundJobSchedule";
97
+ readonly fullName: `${string}.BackgroundJobSchedule`;
98
+ readonly title: "@background-job-management:schedules.entities.background-job-schedule.title";
99
+ readonly titlePlural: "@background-job-management:schedules.entities.background-job-schedule.plural";
100
+ readonly icon: "fa-light fa-calendar-clock";
101
+ };
102
+ };
103
+ readonly queries: {
104
+ readonly dashboard: {
105
+ readonly jobsByStatusBar: `${string}:Dashboard:JobsByStatusBar`;
106
+ readonly jobSchedulesByStatusBar: `${string}:Dashboard:JobSchedulesByStatusBar`;
107
+ };
108
+ };
109
+ };
110
+
111
+ type AXMBackgroundJobManagementBackgroundJobScheduleEntityModel = AXPBackgroundJobSchedule;
112
+
113
+ export { AXMBackgroundJobPermissionKeys, AXPAdministrationPermissionKeys, AXPBackgroundJobManagementMenuKeys, AXPBackgroundJobManagementSettings, AXP_BACKGROUND_JOB_RETENTION_SETTING_DEFAULTS, RootConfig };
114
+ export type { AXMBackgroundJobManagementBackgroundJobScheduleEntityModel };
@@ -0,0 +1,60 @@
1
+ import { AXPCreateBackgroundJobRequest, AXPCreateBackgroundJobResult, AXPBackgroundJob, AXPBackgroundJobAttempt, AXPCancelBackgroundJobResult, AXPRetryBackgroundJobResult, AXPBackgroundJobSchedule } from '@acorex-platform/framework-shared/background-job';
2
+ import * as i0 from '@angular/core';
3
+ import { AXPModuleManifest } from '@acorex-platform/framework-client/core';
4
+ import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';
5
+ import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex-platform/framework-client/auth';
6
+
7
+ /**
8
+ * Client-side port for the background-job-management server API.
9
+ * Bound to the HTTP implementation by the gateway package.
10
+ */
11
+ declare abstract class AXPBackgroundJobManagementClient {
12
+ abstract createJob(request: AXPCreateBackgroundJobRequest): Promise<AXPCreateBackgroundJobResult>;
13
+ abstract getJob(jobId: string): Promise<AXPBackgroundJob | null>;
14
+ abstract listAttempts(jobId: string): Promise<AXPBackgroundJobAttempt[]>;
15
+ abstract cancelJob(jobId: string, reason?: string): Promise<AXPCancelBackgroundJobResult>;
16
+ abstract retryJob(jobId: string): Promise<AXPRetryBackgroundJobResult>;
17
+ abstract deleteJob(jobId: string): Promise<{
18
+ success: boolean;
19
+ }>;
20
+ abstract replayDeadLetter(jobId: string): Promise<{
21
+ jobId: string;
22
+ }>;
23
+ abstract upsertSchedule(schedule: Partial<AXPBackgroundJobSchedule>): Promise<AXPBackgroundJobSchedule>;
24
+ abstract enableSchedule(scheduleId: string): Promise<{
25
+ success: boolean;
26
+ }>;
27
+ abstract disableSchedule(scheduleId: string): Promise<{
28
+ success: boolean;
29
+ }>;
30
+ abstract runScheduleNow(scheduleId: string): Promise<AXPCreateBackgroundJobResult>;
31
+ abstract deleteSchedule(scheduleId: string): Promise<{
32
+ success: boolean;
33
+ }>;
34
+ }
35
+
36
+ declare class AXMBackgroundJobManagementModule {
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMBackgroundJobManagementModule, never>;
38
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMBackgroundJobManagementModule, never, never, never>;
39
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXMBackgroundJobManagementModule>;
40
+ }
41
+
42
+ /** Background Job Management module manifest. */
43
+ declare const BackgroundJobManagementManifest: AXPModuleManifest;
44
+
45
+ declare class AXMBackgroundJobManagementMenuProvider implements AXPMenuProvider {
46
+ private entityService;
47
+ private sessionService;
48
+ provide(context: AXPMenuProviderContext): Promise<void>;
49
+ }
50
+
51
+ /**
52
+ * Registers Jobs section capabilities under Administration.
53
+ */
54
+ declare class AXMBackgroundJobManagementPermissionProvider implements AXPPermissionDefinitionProvider {
55
+ define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMBackgroundJobManagementPermissionProvider, never>;
57
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMBackgroundJobManagementPermissionProvider>;
58
+ }
59
+
60
+ export { AXMBackgroundJobManagementMenuProvider, AXMBackgroundJobManagementModule, AXMBackgroundJobManagementPermissionProvider, AXPBackgroundJobManagementClient, BackgroundJobManagementManifest };