@acorex-platform/module-workflow-management-client 2.0.0-next.6 → 2.0.0-next.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-DaEuz1U-.mjs → acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-BcOBHoOK.mjs} +18 -13
- package/fesm2022/{acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-DaEuz1U-.mjs.map → acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-BcOBHoOK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-workflow-management-client-index-BkJuXaZn.mjs → acorex-platform-module-workflow-management-client-index-Bx8vYkYe.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-workflow-management-client-index-BkJuXaZn.mjs.map → acorex-platform-module-workflow-management-client-index-Bx8vYkYe.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-BtQ8OC0Q.mjs → acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-CHVdaY4M.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-BtQ8OC0Q.mjs.map → acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-CHVdaY4M.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-workflow-management-client-workflow-task-popover.component-BjjwcQ2s.mjs → acorex-platform-module-workflow-management-client-workflow-task-popover.component-BXutLQAO.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-workflow-management-client-workflow-task-popover.component-BjjwcQ2s.mjs.map → acorex-platform-module-workflow-management-client-workflow-task-popover.component-BXutLQAO.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-workflow-management-client.mjs +1 -1
- package/package.json +2 -2
|
@@ -8,7 +8,7 @@ import { AXPSessionService } from '@acorex-platform/framework-client/auth';
|
|
|
8
8
|
import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
|
|
9
9
|
import { AXPWorkflowManager, AXP_WORKFLOW_ENGINE } from '@acorex-platform/framework-client/workflow';
|
|
10
10
|
import { get, isString } from 'lodash';
|
|
11
|
-
import { A as AXPWorkflowInstanceHumanTaskService, c as createWorkflowInstanceBookmarkAccess, i as isWorkflowPooledClaimablePayload, n as normalizeWorkflowTaskUserIds } from './acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-
|
|
11
|
+
import { A as AXPWorkflowInstanceHumanTaskService, c as createWorkflowInstanceBookmarkAccess, i as isWorkflowPooledClaimablePayload, n as normalizeWorkflowTaskUserIds } from './acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-BcOBHoOK.mjs';
|
|
12
12
|
import { AXPopupService } from '@acorex/components/popup';
|
|
13
13
|
import { AXPDialogOpener } from '@acorex-platform/framework-client/core';
|
|
14
14
|
|
|
@@ -351,7 +351,7 @@ class ShowWorkflowRunHistoryCommand {
|
|
|
351
351
|
};
|
|
352
352
|
}
|
|
353
353
|
await this.dialogOpener.openPopup({
|
|
354
|
-
load: () => import('./acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-
|
|
354
|
+
load: () => import('./acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-CHVdaY4M.mjs').then((module) => module.AXMWorkflowRunHistoryPopupComponent),
|
|
355
355
|
data: { instanceId },
|
|
356
356
|
show: (component) => this.popupService.open(component, {
|
|
357
357
|
title: '',
|
|
@@ -419,4 +419,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
419
419
|
//#endregion
|
|
420
420
|
|
|
421
421
|
export { CancelWorkflowRunCommand, ContinueWorkflowRunCommand, ShowWorkflowRunHistoryCommand, TakeOverWorkflowRunCommand };
|
|
422
|
-
//# sourceMappingURL=acorex-platform-module-workflow-management-client-index-
|
|
422
|
+
//# sourceMappingURL=acorex-platform-module-workflow-management-client-index-Bx8vYkYe.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-workflow-management-client-index-BkJuXaZn.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/workflow-run-action.service.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/cancel-workflow-run.command.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/continue-workflow-run.command.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/show-workflow-run-history.command.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/take-over-workflow-run.command.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/index.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { getRecordWorkflowInstanceId } from '@acorex-platform/framework-shared/entity';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXP_WORKFLOW_ENGINE,\n AXPWorkflowEngine,\n AXPWorkflowManager,\n} from '@acorex-platform/framework-client/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXToastService } from '@acorex/components/toast';\nimport { get, isString } from 'lodash';\nimport { AXMWorkflowManagementWorkflowInstanceEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport {\n createWorkflowInstanceBookmarkAccess,\n HumanTaskBookmarkPayload,\n WorkflowInstanceBookmarkRow,\n} from '../task-provider/workflow-instance-bookmark.access';\nimport { AXPWorkflowInstanceHumanTaskService } from '../task-provider/workflow-instance-human-task.service';\nimport {\n isWorkflowPooledClaimablePayload,\n normalizeWorkflowTaskUserIds,\n} from '../task-provider/workflow-task-continuation';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXPWorkflowRunSuspendedHumanTask {\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel;\n bookmark: WorkflowInstanceBookmarkRow;\n payload: HumanTaskBookmarkPayload;\n}\n\nexport interface AXPWorkflowRunCancelParams {\n instanceId: string;\n entitySource?: string;\n recordId?: string;\n reason?: string;\n statusField?: string;\n cancelledStatusId?: string;\n}\n\n//#endregion\n\n//#region ---- Service ----\n\n/**\n * Resolves workflow run operations for workflow-run plugin list rows.\n * Delegates resume/take-over to {@link AXPWorkflowInstanceHumanTaskService} (same as task board).\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPWorkflowRunActionService {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly humanTaskService = inject(AXPWorkflowInstanceHumanTaskService);\n private readonly workflowManager = inject(AXPWorkflowManager);\n private readonly sessionService = inject(AXPSessionService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly workflowEngine = inject(AXP_WORKFLOW_ENGINE, { optional: true }) as AXPWorkflowEngine | null;\n private readonly bookmarkAccess = createWorkflowInstanceBookmarkAccess();\n\n //#endregion\n\n //#region ---- Instance resolution ----\n\n /** Reads workflow instance id from a domain list row or command payload. */\n resolveInstanceId(record: unknown): string | null {\n if (!record || typeof record !== 'object') {\n return null;\n }\n const fromWorkflowInfo = getRecordWorkflowInstanceId(\n record as { workflowInfo?: { instanceId?: string | null } },\n );\n if (fromWorkflowInfo) {\n return fromWorkflowInfo;\n }\n const direct = get(record as Record<string, unknown>, 'instanceId');\n if (typeof direct === 'string' && direct.trim().length > 0) {\n return direct.trim();\n }\n return null;\n }\n\n /**\n * Finds the primary suspended human-task bookmark for continue / take-over.\n * Prefers task-board human-task and cartable bookmarks.\n */\n async findPrimarySuspendedHumanTask(instanceId: string): Promise<AXPWorkflowRunSuspendedHumanTask | null> {\n const trimmed = instanceId?.trim();\n if (!trimmed) {\n return null;\n }\n\n const instance = await this.bookmarkAccess.loadInstanceForContinuation(trimmed);\n if (!instance || instance.subStatus !== 'Suspended') {\n return null;\n }\n\n const active = this.bookmarkAccess.getActiveBookmarks(instance);\n for (const bookmark of active) {\n const payload = this.bookmarkAccess.parseHumanTaskPayload(bookmark);\n if (!payload?.taskToken || !this.isTaskBoardHumanPayload(payload)) {\n continue;\n }\n return { instance, bookmark, payload };\n }\n\n return null;\n }\n\n //#endregion\n\n //#region ---- Run operations ----\n\n /** Runs the primary human-task action on the current suspended step (e.g. open questionnaire). */\n async continueRun(instanceId: string) {\n const task = await this.findPrimarySuspendedHumanTask(instanceId);\n if (!task) {\n return { success: false as const, error: 'NO_SUSPENDED_TASK' as const };\n }\n\n const payload = task.payload;\n if (isWorkflowPooledClaimablePayload(payload)) {\n return this.continuePooledHumanTask(instanceId, task);\n }\n\n const outcome = this.humanTaskService.resolvePrimaryTaskOutcome(payload);\n const assigned = normalizeWorkflowTaskUserIds(payload.assignedUserIds);\n const currentUserId = this.sessionService.user?.id;\n if (\n currentUserId &&\n assigned.length > 0 &&\n !assigned.includes(String(currentUserId)) &&\n (outcome === 'approve' || outcome === 'reject')\n ) {\n const content = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.awaiting-approver',\n );\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n });\n return { success: false as const, error: 'NOT_ASSIGNEE' as const, message: content };\n }\n\n const result = await this.humanTaskService.executePrimaryHumanTaskAction(instanceId, task.bookmark.activityId, {\n suppressContinuation: true,\n notifyViews: true,\n });\n\n if (!result?.success) {\n return {\n success: false as const,\n error: 'RESUME_FAILED' as const,\n message: result?.error,\n };\n }\n\n return { success: true as const };\n }\n\n /**\n * Pooled cartable / human-task steps must be claimed before approve/reject.\n * Claims for the current user when they are a candidate, then directs them to the task board.\n */\n private async continuePooledHumanTask(\n instanceId: string,\n task: AXPWorkflowRunSuspendedHumanTask,\n ): Promise<\n | { success: true }\n | { success: false; error: 'NOT_CANDIDATE' | 'CLAIM_FAILED' | 'RESUME_FAILED'; message?: string }\n > {\n const currentUserId = this.sessionService.user?.id;\n const candidates = normalizeWorkflowTaskUserIds(task.payload.candidateUserIds);\n if (!currentUserId || !candidates.includes(String(currentUserId))) {\n const content = await this.translationService.translateAsync(\n '@workflow-management:tasks.errors.not-assignee',\n );\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n });\n return { success: false as const, error: 'NOT_CANDIDATE' as const, message: content };\n }\n\n const claimResult = await this.workflowManager.claimTask(\n instanceId,\n task.bookmark.id,\n task.bookmark.activityId,\n );\n if (!claimResult.success) {\n return {\n success: false as const,\n error: 'CLAIM_FAILED' as const,\n message: claimResult.error,\n };\n }\n\n this.humanTaskService.notifyWorkflowTaskViewsChanged();\n const content = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.use-task-board',\n );\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.generic.success.title'),\n content,\n closeButton: true,\n });\n return { success: true as const };\n }\n\n /** Take over the current suspended human-task bookmark without advancing the workflow. */\n async takeOverRun(instanceId: string) {\n const task = await this.findPrimarySuspendedHumanTask(instanceId);\n if (!task) {\n return { success: false as const, error: 'NO_SUSPENDED_TASK' as const };\n }\n\n const reassigned = await this.humanTaskService.reassignBookmarkToCurrentUserWithConfirm(\n instanceId,\n task.bookmark.id,\n task.bookmark.activityId,\n );\n\n if (!reassigned) {\n return { success: false as const, error: 'REASSIGN_FAILED' as const };\n }\n\n this.humanTaskService.notifyWorkflowTaskViewsChanged();\n return { success: true as const };\n }\n\n /** Cancels a workflow instance and optionally marks the linked domain row as cancelled. */\n async cancelRun(params: AXPWorkflowRunCancelParams): Promise<{ success: boolean }> {\n const instanceId = params.instanceId?.trim();\n if (!instanceId) {\n return { success: false };\n }\n\n const engine = this.workflowEngine;\n if (engine?.cancelInstance) {\n await engine.cancelInstance(instanceId, params.reason?.trim() || 'cancelled-by-user');\n } else {\n const now = new Date().toISOString();\n await this.entityService.withEntity('WorkflowManagement', 'WorkflowInstance').data().update(instanceId, {\n status: 'Finished',\n subStatus: 'Cancelled',\n finishedAt: now,\n updatedAt: now,\n } as never);\n }\n\n const recordId = params.recordId?.trim();\n const entitySource = params.entitySource?.trim();\n if (recordId && entitySource) {\n const [moduleName, entityName] = entitySource.split('.');\n if (moduleName && entityName) {\n const statusField = params.statusField?.trim() || 'statusId';\n const cancelledStatus = params.cancelledStatusId?.trim() || 'cancelled';\n await this.entityService.withEntity(moduleName, entityName).data().update(recordId, {\n [statusField]: cancelledStatus,\n ...(params.reason ? { notes: params.reason } : {}),\n } as never);\n }\n }\n\n this.humanTaskService.notifyWorkflowTaskViewsChanged();\n return { success: true };\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private isTaskBoardHumanPayload(payload: HumanTaskBookmarkPayload): boolean {\n const activityType = payload.activityType;\n return activityType === 'workflow-activity:human-task' || activityType === 'workflow-activity:cartable';\n }\n\n /** Parses `Module.Entity` and record id from flat command input. */\n parseCommandRecordContext(input: {\n entity?: string;\n entityInfo?: { source?: string; module?: string; name?: string };\n data?: unknown;\n }): { entitySource: string | null; recordId: string | null; instanceId: string | null } {\n const ctx = input;\n const data = ctx?.data;\n const entitySource =\n ctx?.entityInfo?.source?.trim() ||\n ctx?.entity?.trim() ||\n (ctx?.entityInfo?.module && ctx?.entityInfo?.name\n ? `${ctx.entityInfo.module}.${ctx.entityInfo.name}`\n : null);\n\n const recordId =\n data && typeof data === 'object' && isString(get(data, 'id'))\n ? String(get(data, 'id')).trim()\n : null;\n\n return {\n entitySource,\n recordId,\n instanceId: this.resolveInstanceId(data),\n };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPWorkflowRunActionService } from '../workflow-run-action.service';\n\n//#endregion\n\n//#region ---- Command ----\n\n/** Cancels a workflow run and marks the linked domain row as cancelled when applicable. */\n@Injectable({ providedIn: 'root' })\nexport class CancelWorkflowRunCommand implements AXPCommand<Record<string, unknown>, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly runActionService = inject(AXPWorkflowRunActionService);\n private readonly dialogService = inject(AXDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: Record<string, unknown>): AXPCommandExecuteResultPromise<void> {\n const { instanceId, entitySource, recordId } = this.runActionService.parseCommandRecordContext(input);\n if (!instanceId) {\n return { success: false, message: { text: 'No workflow instance is linked to this record.' } };\n }\n\n const title = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.dialogs.cancel-run.title',\n );\n const message = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.dialogs.cancel-run.message',\n );\n const confirmed = await this.dialogService.confirm(title, message, 'warning', 'horizontal', false, 'cancel');\n if (!confirmed.result) {\n return { success: false };\n }\n\n const reason = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.cancel-run-note',\n );\n\n const result = await this.runActionService.cancelRun({\n instanceId,\n entitySource: entitySource ?? undefined,\n recordId: recordId ?? undefined,\n reason,\n });\n\n if (!result.success) {\n return { success: false, message: { text: 'Could not cancel the workflow run.' } };\n }\n\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.generic.success.title'),\n content: await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.cancel-run-success',\n ),\n closeButton: true,\n timeOut: 3000,\n });\n\n return { success: true, kind: 'object', data: undefined };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPWorkflowRunActionService } from '../workflow-run-action.service';\n\n//#endregion\n\n//#region ---- Command ----\n\n/** Continues the current suspended human-task step for a workflow-backed domain row. */\n@Injectable({ providedIn: 'root' })\nexport class ContinueWorkflowRunCommand implements AXPCommand<Record<string, unknown>, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly runActionService = inject(AXPWorkflowRunActionService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: Record<string, unknown>): AXPCommandExecuteResultPromise<void> {\n const { instanceId } = this.runActionService.parseCommandRecordContext(input);\n if (!instanceId) {\n return { success: false, message: { text: 'No workflow instance is linked to this record.' } };\n }\n\n const result = await this.runActionService.continueRun(instanceId);\n if (result.success) {\n return { success: true, kind: 'object', data: undefined };\n }\n\n if (result.error === 'NO_SUSPENDED_TASK') {\n const content = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.no-pending-step',\n );\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n });\n return { success: false };\n }\n\n if (result.message) {\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: result.message,\n closeButton: true,\n });\n }\n\n return { success: false };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPDialogOpener } from '@acorex-platform/framework-client/core';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPWorkflowRunActionService } from '../workflow-run-action.service';\n\n//#endregion\n\n//#region ---- Command ----\n\n/** Opens the workflow run history popup (timeline + disabled visual tab) for a domain list row. */\n@Injectable({ providedIn: 'root' })\nexport class ShowWorkflowRunHistoryCommand implements AXPCommand<Record<string, unknown>, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly popupService = inject(AXPopupService);\n private readonly dialogOpener = inject(AXPDialogOpener);\n private readonly runActionService = inject(AXPWorkflowRunActionService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: Record<string, unknown>): AXPCommandExecuteResultPromise<void> {\n const { instanceId } = this.runActionService.parseCommandRecordContext(input);\n if (!instanceId) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@workflow-management:workflow-run.history.messages.no-instance',\n ),\n },\n };\n }\n\n await this.dialogOpener.openPopup({\n load: () =>\n import('../components/workflow-run-history-popup/workflow-run-history-popup.component').then(\n (module) => module.AXMWorkflowRunHistoryPopupComponent,\n ),\n data: { instanceId },\n show: (component) =>\n this.popupService.open(component, {\n title: '',\n size: 'lg',\n data: { instanceId },\n }),\n });\n\n return {\n success: true,\n kind: 'object',\n data: undefined,\n metadata: { refresh: false },\n };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPWorkflowRunActionService } from '../workflow-run-action.service';\n\n//#endregion\n\n//#region ---- Command ----\n\n/** Reassigns the current suspended human-task to the current user (take over). */\n@Injectable({ providedIn: 'root' })\nexport class TakeOverWorkflowRunCommand implements AXPCommand<Record<string, unknown>, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly runActionService = inject(AXPWorkflowRunActionService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: Record<string, unknown>): AXPCommandExecuteResultPromise<void> {\n const { instanceId } = this.runActionService.parseCommandRecordContext(input);\n if (!instanceId) {\n return { success: false, message: { text: 'No workflow instance is linked to this record.' } };\n }\n\n const result = await this.runActionService.takeOverRun(instanceId);\n if (result.success) {\n return { success: true, kind: 'object', data: undefined };\n }\n\n if (result.error === 'NO_SUSPENDED_TASK') {\n const content = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.no-pending-step',\n );\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n });\n return { success: false };\n }\n\n return { success: false };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Exports ----\n\nexport { CancelWorkflowRunCommand } from './cancel-workflow-run.command';\nexport { ContinueWorkflowRunCommand } from './continue-workflow-run.command';\nexport { ShowWorkflowRunHistoryCommand } from './show-workflow-run-history.command';\nexport { TakeOverWorkflowRunCommand } from './take-over-workflow-run.command';\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workflow-management-client-index-Bx8vYkYe.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/workflow-run-action.service.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/cancel-workflow-run.command.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/continue-workflow-run.command.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/show-workflow-run-history.command.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/take-over-workflow-run.command.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/commands/index.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { getRecordWorkflowInstanceId } from '@acorex-platform/framework-shared/entity';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXP_WORKFLOW_ENGINE,\n AXPWorkflowEngine,\n AXPWorkflowManager,\n} from '@acorex-platform/framework-client/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXToastService } from '@acorex/components/toast';\nimport { get, isString } from 'lodash';\nimport { AXMWorkflowManagementWorkflowInstanceEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport {\n createWorkflowInstanceBookmarkAccess,\n HumanTaskBookmarkPayload,\n WorkflowInstanceBookmarkRow,\n} from '../task-provider/workflow-instance-bookmark.access';\nimport { AXPWorkflowInstanceHumanTaskService } from '../task-provider/workflow-instance-human-task.service';\nimport {\n isWorkflowPooledClaimablePayload,\n normalizeWorkflowTaskUserIds,\n} from '../task-provider/workflow-task-continuation';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXPWorkflowRunSuspendedHumanTask {\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel;\n bookmark: WorkflowInstanceBookmarkRow;\n payload: HumanTaskBookmarkPayload;\n}\n\nexport interface AXPWorkflowRunCancelParams {\n instanceId: string;\n entitySource?: string;\n recordId?: string;\n reason?: string;\n statusField?: string;\n cancelledStatusId?: string;\n}\n\n//#endregion\n\n//#region ---- Service ----\n\n/**\n * Resolves workflow run operations for workflow-run plugin list rows.\n * Delegates resume/take-over to {@link AXPWorkflowInstanceHumanTaskService} (same as task board).\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPWorkflowRunActionService {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly humanTaskService = inject(AXPWorkflowInstanceHumanTaskService);\n private readonly workflowManager = inject(AXPWorkflowManager);\n private readonly sessionService = inject(AXPSessionService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly workflowEngine = inject(AXP_WORKFLOW_ENGINE, { optional: true }) as AXPWorkflowEngine | null;\n private readonly bookmarkAccess = createWorkflowInstanceBookmarkAccess();\n\n //#endregion\n\n //#region ---- Instance resolution ----\n\n /** Reads workflow instance id from a domain list row or command payload. */\n resolveInstanceId(record: unknown): string | null {\n if (!record || typeof record !== 'object') {\n return null;\n }\n const fromWorkflowInfo = getRecordWorkflowInstanceId(\n record as { workflowInfo?: { instanceId?: string | null } },\n );\n if (fromWorkflowInfo) {\n return fromWorkflowInfo;\n }\n const direct = get(record as Record<string, unknown>, 'instanceId');\n if (typeof direct === 'string' && direct.trim().length > 0) {\n return direct.trim();\n }\n return null;\n }\n\n /**\n * Finds the primary suspended human-task bookmark for continue / take-over.\n * Prefers task-board human-task and cartable bookmarks.\n */\n async findPrimarySuspendedHumanTask(instanceId: string): Promise<AXPWorkflowRunSuspendedHumanTask | null> {\n const trimmed = instanceId?.trim();\n if (!trimmed) {\n return null;\n }\n\n const instance = await this.bookmarkAccess.loadInstanceForContinuation(trimmed);\n if (!instance || instance.subStatus !== 'Suspended') {\n return null;\n }\n\n const active = this.bookmarkAccess.getActiveBookmarks(instance);\n for (const bookmark of active) {\n const payload = this.bookmarkAccess.parseHumanTaskPayload(bookmark);\n if (!payload?.taskToken || !this.isTaskBoardHumanPayload(payload)) {\n continue;\n }\n return { instance, bookmark, payload };\n }\n\n return null;\n }\n\n //#endregion\n\n //#region ---- Run operations ----\n\n /** Runs the primary human-task action on the current suspended step (e.g. open questionnaire). */\n async continueRun(instanceId: string) {\n const task = await this.findPrimarySuspendedHumanTask(instanceId);\n if (!task) {\n return { success: false as const, error: 'NO_SUSPENDED_TASK' as const };\n }\n\n const payload = task.payload;\n if (isWorkflowPooledClaimablePayload(payload)) {\n return this.continuePooledHumanTask(instanceId, task);\n }\n\n const outcome = this.humanTaskService.resolvePrimaryTaskOutcome(payload);\n const assigned = normalizeWorkflowTaskUserIds(payload.assignedUserIds);\n const currentUserId = this.sessionService.user?.id;\n if (\n currentUserId &&\n assigned.length > 0 &&\n !assigned.includes(String(currentUserId)) &&\n (outcome === 'approve' || outcome === 'reject')\n ) {\n const content = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.awaiting-approver',\n );\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n });\n return { success: false as const, error: 'NOT_ASSIGNEE' as const, message: content };\n }\n\n const result = await this.humanTaskService.executePrimaryHumanTaskAction(instanceId, task.bookmark.activityId, {\n suppressContinuation: true,\n notifyViews: true,\n });\n\n if (!result?.success) {\n return {\n success: false as const,\n error: 'RESUME_FAILED' as const,\n message: result?.error,\n };\n }\n\n return { success: true as const };\n }\n\n /**\n * Pooled cartable / human-task steps must be claimed before approve/reject.\n * Claims for the current user when they are a candidate, then directs them to the task board.\n */\n private async continuePooledHumanTask(\n instanceId: string,\n task: AXPWorkflowRunSuspendedHumanTask,\n ): Promise<\n | { success: true }\n | { success: false; error: 'NOT_CANDIDATE' | 'CLAIM_FAILED' | 'RESUME_FAILED'; message?: string }\n > {\n const currentUserId = this.sessionService.user?.id;\n const candidates = normalizeWorkflowTaskUserIds(task.payload.candidateUserIds);\n if (!currentUserId || !candidates.includes(String(currentUserId))) {\n const content = await this.translationService.translateAsync(\n '@workflow-management:tasks.errors.not-assignee',\n );\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n });\n return { success: false as const, error: 'NOT_CANDIDATE' as const, message: content };\n }\n\n const claimResult = await this.workflowManager.claimTask(\n instanceId,\n task.bookmark.id,\n task.bookmark.activityId,\n );\n if (!claimResult.success) {\n return {\n success: false as const,\n error: 'CLAIM_FAILED' as const,\n message: claimResult.error,\n };\n }\n\n this.humanTaskService.notifyWorkflowTaskViewsChanged();\n const content = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.use-task-board',\n );\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.generic.success.title'),\n content,\n closeButton: true,\n });\n return { success: true as const };\n }\n\n /** Take over the current suspended human-task bookmark without advancing the workflow. */\n async takeOverRun(instanceId: string) {\n const task = await this.findPrimarySuspendedHumanTask(instanceId);\n if (!task) {\n return { success: false as const, error: 'NO_SUSPENDED_TASK' as const };\n }\n\n const reassigned = await this.humanTaskService.reassignBookmarkToCurrentUserWithConfirm(\n instanceId,\n task.bookmark.id,\n task.bookmark.activityId,\n );\n\n if (!reassigned) {\n return { success: false as const, error: 'REASSIGN_FAILED' as const };\n }\n\n this.humanTaskService.notifyWorkflowTaskViewsChanged();\n return { success: true as const };\n }\n\n /** Cancels a workflow instance and optionally marks the linked domain row as cancelled. */\n async cancelRun(params: AXPWorkflowRunCancelParams): Promise<{ success: boolean }> {\n const instanceId = params.instanceId?.trim();\n if (!instanceId) {\n return { success: false };\n }\n\n const engine = this.workflowEngine;\n if (engine?.cancelInstance) {\n await engine.cancelInstance(instanceId, params.reason?.trim() || 'cancelled-by-user');\n } else {\n const now = new Date().toISOString();\n await this.entityService.withEntity('WorkflowManagement', 'WorkflowInstance').data().update(instanceId, {\n status: 'Finished',\n subStatus: 'Cancelled',\n finishedAt: now,\n updatedAt: now,\n } as never);\n }\n\n const recordId = params.recordId?.trim();\n const entitySource = params.entitySource?.trim();\n if (recordId && entitySource) {\n const [moduleName, entityName] = entitySource.split('.');\n if (moduleName && entityName) {\n const statusField = params.statusField?.trim() || 'statusId';\n const cancelledStatus = params.cancelledStatusId?.trim() || 'cancelled';\n await this.entityService.withEntity(moduleName, entityName).data().update(recordId, {\n [statusField]: cancelledStatus,\n ...(params.reason ? { notes: params.reason } : {}),\n } as never);\n }\n }\n\n this.humanTaskService.notifyWorkflowTaskViewsChanged();\n return { success: true };\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private isTaskBoardHumanPayload(payload: HumanTaskBookmarkPayload): boolean {\n const activityType = payload.activityType;\n return activityType === 'workflow-activity:human-task' || activityType === 'workflow-activity:cartable';\n }\n\n /** Parses `Module.Entity` and record id from flat command input. */\n parseCommandRecordContext(input: {\n entity?: string;\n entityInfo?: { source?: string; module?: string; name?: string };\n data?: unknown;\n }): { entitySource: string | null; recordId: string | null; instanceId: string | null } {\n const ctx = input;\n const data = ctx?.data;\n const entitySource =\n ctx?.entityInfo?.source?.trim() ||\n ctx?.entity?.trim() ||\n (ctx?.entityInfo?.module && ctx?.entityInfo?.name\n ? `${ctx.entityInfo.module}.${ctx.entityInfo.name}`\n : null);\n\n const recordId =\n data && typeof data === 'object' && isString(get(data, 'id'))\n ? String(get(data, 'id')).trim()\n : null;\n\n return {\n entitySource,\n recordId,\n instanceId: this.resolveInstanceId(data),\n };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPWorkflowRunActionService } from '../workflow-run-action.service';\n\n//#endregion\n\n//#region ---- Command ----\n\n/** Cancels a workflow run and marks the linked domain row as cancelled when applicable. */\n@Injectable({ providedIn: 'root' })\nexport class CancelWorkflowRunCommand implements AXPCommand<Record<string, unknown>, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly runActionService = inject(AXPWorkflowRunActionService);\n private readonly dialogService = inject(AXDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: Record<string, unknown>): AXPCommandExecuteResultPromise<void> {\n const { instanceId, entitySource, recordId } = this.runActionService.parseCommandRecordContext(input);\n if (!instanceId) {\n return { success: false, message: { text: 'No workflow instance is linked to this record.' } };\n }\n\n const title = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.dialogs.cancel-run.title',\n );\n const message = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.dialogs.cancel-run.message',\n );\n const confirmed = await this.dialogService.confirm(title, message, 'warning', 'horizontal', false, 'cancel');\n if (!confirmed.result) {\n return { success: false };\n }\n\n const reason = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.cancel-run-note',\n );\n\n const result = await this.runActionService.cancelRun({\n instanceId,\n entitySource: entitySource ?? undefined,\n recordId: recordId ?? undefined,\n reason,\n });\n\n if (!result.success) {\n return { success: false, message: { text: 'Could not cancel the workflow run.' } };\n }\n\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.generic.success.title'),\n content: await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.cancel-run-success',\n ),\n closeButton: true,\n timeOut: 3000,\n });\n\n return { success: true, kind: 'object', data: undefined };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPWorkflowRunActionService } from '../workflow-run-action.service';\n\n//#endregion\n\n//#region ---- Command ----\n\n/** Continues the current suspended human-task step for a workflow-backed domain row. */\n@Injectable({ providedIn: 'root' })\nexport class ContinueWorkflowRunCommand implements AXPCommand<Record<string, unknown>, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly runActionService = inject(AXPWorkflowRunActionService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: Record<string, unknown>): AXPCommandExecuteResultPromise<void> {\n const { instanceId } = this.runActionService.parseCommandRecordContext(input);\n if (!instanceId) {\n return { success: false, message: { text: 'No workflow instance is linked to this record.' } };\n }\n\n const result = await this.runActionService.continueRun(instanceId);\n if (result.success) {\n return { success: true, kind: 'object', data: undefined };\n }\n\n if (result.error === 'NO_SUSPENDED_TASK') {\n const content = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.no-pending-step',\n );\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n });\n return { success: false };\n }\n\n if (result.message) {\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: result.message,\n closeButton: true,\n });\n }\n\n return { success: false };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPDialogOpener } from '@acorex-platform/framework-client/core';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPWorkflowRunActionService } from '../workflow-run-action.service';\n\n//#endregion\n\n//#region ---- Command ----\n\n/** Opens the workflow run history popup (timeline + disabled visual tab) for a domain list row. */\n@Injectable({ providedIn: 'root' })\nexport class ShowWorkflowRunHistoryCommand implements AXPCommand<Record<string, unknown>, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly popupService = inject(AXPopupService);\n private readonly dialogOpener = inject(AXPDialogOpener);\n private readonly runActionService = inject(AXPWorkflowRunActionService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: Record<string, unknown>): AXPCommandExecuteResultPromise<void> {\n const { instanceId } = this.runActionService.parseCommandRecordContext(input);\n if (!instanceId) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@workflow-management:workflow-run.history.messages.no-instance',\n ),\n },\n };\n }\n\n await this.dialogOpener.openPopup({\n load: () =>\n import('../components/workflow-run-history-popup/workflow-run-history-popup.component').then(\n (module) => module.AXMWorkflowRunHistoryPopupComponent,\n ),\n data: { instanceId },\n show: (component) =>\n this.popupService.open(component, {\n title: '',\n size: 'lg',\n data: { instanceId },\n }),\n });\n\n return {\n success: true,\n kind: 'object',\n data: undefined,\n metadata: { refresh: false },\n };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPWorkflowRunActionService } from '../workflow-run-action.service';\n\n//#endregion\n\n//#region ---- Command ----\n\n/** Reassigns the current suspended human-task to the current user (take over). */\n@Injectable({ providedIn: 'root' })\nexport class TakeOverWorkflowRunCommand implements AXPCommand<Record<string, unknown>, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly runActionService = inject(AXPWorkflowRunActionService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: Record<string, unknown>): AXPCommandExecuteResultPromise<void> {\n const { instanceId } = this.runActionService.parseCommandRecordContext(input);\n if (!instanceId) {\n return { success: false, message: { text: 'No workflow instance is linked to this record.' } };\n }\n\n const result = await this.runActionService.takeOverRun(instanceId);\n if (result.success) {\n return { success: true, kind: 'object', data: undefined };\n }\n\n if (result.error === 'NO_SUSPENDED_TASK') {\n const content = await this.translationService.translateAsync(\n '@workflow-management:workflow-run.messages.no-pending-step',\n );\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n });\n return { success: false };\n }\n\n return { success: false };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Exports ----\n\nexport { CancelWorkflowRunCommand } from './cancel-workflow-run.command';\nexport { ContinueWorkflowRunCommand } from './continue-workflow-run.command';\nexport { ShowWorkflowRunHistoryCommand } from './show-workflow-run-history.command';\nexport { TakeOverWorkflowRunCommand } from './take-over-workflow-run.command';\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ import { AXPExpressionEvaluatorService } from '@acorex-platform/framework-client
|
|
|
18
18
|
import { AXPEntityService, AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';
|
|
19
19
|
import { AXPActivityDefinitionService, AXPWorkflowDefinitionService, WorkflowExpressionScopeService } from '@acorex-platform/framework-client/workflow';
|
|
20
20
|
import { toString, get } from 'lodash';
|
|
21
|
-
import { b as buildWorkflowTaskDisplayParamsFromWorkflowState, d as buildWorkflowTaskDisplayParams, r as rehydrateWorkflowStateInputTitles } from './acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-
|
|
21
|
+
import { b as buildWorkflowTaskDisplayParamsFromWorkflowState, d as buildWorkflowTaskDisplayParams, r as rehydrateWorkflowStateInputTitles } from './acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-BcOBHoOK.mjs';
|
|
22
22
|
import { f as formatReadableActivityName } from './acorex-platform-module-workflow-management-client-workflow-activity-instance-rows.utils-CMVZYS4y.mjs';
|
|
23
23
|
|
|
24
24
|
//#region ---- Imports ----
|
|
@@ -585,4 +585,4 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.0.8", ng
|
|
|
585
585
|
}], ctorParameters: () => [], propDecorators: { __popup__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__popup__", required: false }] }] } }) });
|
|
586
586
|
|
|
587
587
|
export { AXMWorkflowRunHistoryPopupComponent };
|
|
588
|
-
//# sourceMappingURL=acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-
|
|
588
|
+
//# sourceMappingURL=acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-CHVdaY4M.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-BtQ8OC0Q.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/components/workflow-run-history-popup/workflow-history-rows.utils.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/components/workflow-run-history-popup/workflow-run-history-popup.component.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/components/workflow-run-history-popup/workflow-run-history-popup.component.html"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { get, toString } from 'lodash';\nimport type { AXPActivityExecutionContextState, AXPWorkflowActivityInstance, AXPWorkflowDefinition, AXPWorkflowInstance, AXPWorkflowState } from '@acorex-platform/framework-shared/core';\nimport { AXMWorkflowManagementWorkflowInstanceEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport {\n buildWorkflowTaskDisplayParams,\n buildWorkflowTaskDisplayParamsFromWorkflowState,\n type WorkflowTaskTranslationDeps,\n} from '../../../task-provider/workflow-task-translation.utils';\nimport { formatReadableActivityName } from '../../../workflow-instance-activity-instances-page/workflow-activity-instance-rows.utils';\n\n//#endregion\n\n//#region ---- Types ----\n\n/** One end-user row in the workflow run history timeline. */\nexport interface AXMWorkflowHistoryRow {\n contextId: string;\n /** Graph activity id for this step (`scheduledActivityNodeId`). */\n nodeId: string;\n stepTitle: string;\n status: string;\n statusDisplay: string;\n performedBy: string;\n assignee: string;\n startedAt: string;\n completedAt: string | null;\n isHumanTask: boolean;\n /** Steps where assignee and performer are shown (human tasks, forms, sign-off, rejection reason). */\n showsParticipants: boolean;\n}\n\nexport interface AXMWorkflowHistorySummary {\n reporter: string;\n startedAt: string | null;\n}\n\ninterface WorkflowHistoryEntityLookup {\n byKey(id: string): Promise<unknown>;\n}\n\n/** Optional resolvers for localized step and popup titles. */\nexport interface WorkflowHistoryTitleResolveContext {\n resolveActivityDefinitionTitle?: (activityName: string) => Promise<string>;\n resolveEntityRefTitle?: (moduleEntityRef: string) => Promise<string>;\n}\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Activity types omitted from end-user history (internal plumbing). */\nconst HIDDEN_ACTIVITY_NAMES = new Set(['workflow-activity:get-current-session-user']);\n\n/** Activity types that show assignee and performer in end-user history. */\nconst USER_PARTICIPANT_ACTIVITY_NAMES = new Set([\n 'workflow-activity:human-task',\n 'workflow-activity:cartable',\n 'workflow-activity:sign-off',\n 'workflow-activity:rejection-reason',\n 'workflow-activity:create-entity-form',\n]);\n\nconst ACTIVITY_STATUS_KEYS: Record<string, string> = {\n Running: '@workflow-management:workflow-run.history.activity-status.running',\n Completed: '@workflow-management:workflow-run.history.activity-status.completed',\n Pending: '@workflow-management:workflow-run.history.activity-status.pending',\n Executing: '@workflow-management:workflow-run.history.activity-status.executing',\n Suspended: '@workflow-management:workflow-run.history.activity-status.suspended',\n Canceled: '@workflow-management:workflow-run.history.activity-status.canceled',\n Cancelled: '@workflow-management:workflow-run.history.activity-status.canceled',\n Faulted: '@workflow-management:workflow-run.history.activity-status.faulted',\n Failed: '@workflow-management:workflow-run.history.activity-status.failed',\n};\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeUserIds(value: unknown): string[] {\n if (value == null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.filter((v): v is string => typeof v === 'string' && v.trim().length > 0);\n }\n if (typeof value === 'string' && value.trim().length > 0) {\n return [value.trim()];\n }\n return [];\n}\n\nfunction formatPerformedByLabel(label: unknown, id: unknown, empty: string): string {\n const labelText = label != null && String(label).trim() !== '' ? String(label).trim() : '';\n if (labelText && labelText !== 'System') {\n return labelText;\n }\n const idText = id != null && String(id).trim() !== '' ? String(id).trim() : '';\n if (idText) {\n return idText;\n }\n return empty;\n}\n\nfunction isTranslationKey(value: string): boolean {\n return value.trim().startsWith('@');\n}\n\nfunction getGraphHumanTaskContext(graphActivity: AXPWorkflowActivityInstance | undefined): Record<string, unknown> | undefined {\n const context = graphActivity?.inputs?.['context'];\n if (context != null && typeof context === 'object' && !Array.isArray(context)) {\n return context as Record<string, unknown>;\n }\n return undefined;\n}\n\nfunction parseBookmarkPayload(bookmark: {\n payload?: Record<string, unknown> | null;\n payloadJson?: string;\n} | undefined): Record<string, unknown> | null {\n if (bookmark?.payload && typeof bookmark.payload === 'object') {\n return bookmark.payload;\n }\n const raw = bookmark?.payloadJson?.trim();\n if (!raw) {\n return null;\n }\n try {\n const parsed = JSON.parse(raw) as unknown;\n return parsed != null && typeof parsed === 'object' && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : null;\n } catch {\n return null;\n }\n}\n\nfunction hasUnresolvedInterpolation(value: string): boolean {\n return /\\{\\{[^}]+\\}\\}/.test(value);\n}\n\nasync function resolveDisplayText(\n translationService: AXTranslationService,\n value: string,\n params?: Record<string, string>,\n): Promise<string> {\n const raw = value?.trim();\n if (!raw) {\n return '';\n }\n if (!isTranslationKey(raw)) {\n return raw;\n }\n return translationService.translateAsync(raw, { params });\n}\n\nfunction isModuleEntityRef(value: string): boolean {\n return /^[A-Za-z][\\w]*\\.[A-Za-z][\\w]*$/.test(value.trim());\n}\n\nasync function resolveGraphActivityTitle(\n translationService: AXTranslationService,\n graphActivity: AXPWorkflowActivityInstance | undefined,\n workflowState: AXPWorkflowState | undefined,\n taskTranslationDeps: WorkflowTaskTranslationDeps,\n titleResolveContext: WorkflowHistoryTitleResolveContext | undefined,\n): Promise<string> {\n const graphTitle = typeof graphActivity?.title === 'string' ? graphActivity.title.trim() : '';\n if (graphTitle) {\n if (isTranslationKey(graphTitle)) {\n const params = await buildWorkflowTaskDisplayParamsFromWorkflowState(workflowState, taskTranslationDeps);\n const resolved = await resolveDisplayText(translationService, graphTitle, params);\n if (resolved && !hasUnresolvedInterpolation(resolved)) {\n return resolved;\n }\n }\n if (isModuleEntityRef(graphTitle) && titleResolveContext?.resolveEntityRefTitle) {\n const entityTitle = await titleResolveContext.resolveEntityRefTitle(graphTitle);\n if (entityTitle.trim()) {\n return entityTitle.trim();\n }\n }\n if (!isModuleEntityRef(graphTitle)) {\n const params = await buildWorkflowTaskDisplayParamsFromWorkflowState(workflowState, taskTranslationDeps);\n const resolved = await resolveDisplayText(translationService, graphTitle, params);\n if (resolved && !hasUnresolvedInterpolation(resolved)) {\n return resolved;\n }\n }\n }\n\n const inputTitle =\n typeof graphActivity?.inputs?.['title'] === 'string' ? graphActivity.inputs['title'].trim() : '';\n if (inputTitle) {\n const params = await buildWorkflowTaskDisplayParamsFromWorkflowState(workflowState, taskTranslationDeps);\n const resolved = await resolveDisplayText(translationService, inputTitle, params);\n if (resolved && !hasUnresolvedInterpolation(resolved)) {\n return resolved;\n }\n }\n\n const activityName = graphActivity?.name?.trim() ?? '';\n if (activityName && titleResolveContext?.resolveActivityDefinitionTitle) {\n const definitionTitle = await titleResolveContext.resolveActivityDefinitionTitle(activityName);\n if (definitionTitle.trim()) {\n return definitionTitle.trim();\n }\n }\n\n return '';\n}\n\nasync function resolveStepTitle(\n translationService: AXTranslationService,\n graphActivity: AXPWorkflowActivityInstance | undefined,\n nodeId: string,\n isHumanTask: boolean,\n payload: Record<string, unknown> | null,\n workflowState: AXPWorkflowState | undefined,\n taskTranslationDeps: WorkflowTaskTranslationDeps,\n titleResolveContext: WorkflowHistoryTitleResolveContext | undefined,\n): Promise<string> {\n if (isHumanTask) {\n const payloadContext =\n payload?.['context'] && typeof payload['context'] === 'object'\n ? (payload['context'] as Record<string, unknown>)\n : undefined;\n const graphContext = getGraphHumanTaskContext(graphActivity);\n const graphParams = await buildWorkflowTaskDisplayParams(graphContext, workflowState, taskTranslationDeps);\n const payloadParams = await buildWorkflowTaskDisplayParams(payloadContext, workflowState, taskTranslationDeps);\n const taskParams = { ...graphParams, ...payloadParams };\n\n const payloadTitle = typeof payload?.['title'] === 'string' ? payload['title'].trim() : '';\n const graphTitle =\n typeof graphActivity?.inputs?.['title'] === 'string' ? graphActivity.inputs['title'].trim() : '';\n const titleSource = payloadTitle || graphTitle;\n\n if (titleSource) {\n const resolved = await resolveDisplayText(translationService, titleSource, taskParams);\n if (resolved && !hasUnresolvedInterpolation(resolved)) {\n return resolved;\n }\n }\n\n if (taskParams['employeeDisplayName']?.trim() && taskParams['leaveTypeTitle']?.trim()) {\n return `${taskParams['employeeDisplayName']} — ${taskParams['leaveTypeTitle']}`;\n }\n }\n\n const resolvedGraphTitle = await resolveGraphActivityTitle(\n translationService,\n graphActivity,\n workflowState,\n taskTranslationDeps,\n titleResolveContext,\n );\n if (resolvedGraphTitle) {\n return resolvedGraphTitle;\n }\n\n const rawTitle = graphActivity?.name\n ? formatReadableActivityName(graphActivity.name)\n : formatReadableActivityName(nodeId);\n return rawTitle;\n}\n\nasync function resolveActivityStatus(\n translationService: AXTranslationService,\n status: string,\n): Promise<string> {\n const normalized = (status ?? '').trim();\n if (!normalized) {\n return '';\n }\n const key = ACTIVITY_STATUS_KEYS[normalized] ?? ACTIVITY_STATUS_KEYS[normalized.toLowerCase()];\n if (key) {\n return translationService.translateAsync(key);\n }\n return formatReadableActivityName(normalized);\n}\n\nasync function resolveUserDisplayName(\n userEntityData: WorkflowHistoryEntityLookup,\n userId: string,\n cache: Map<string, string>,\n): Promise<string> {\n const id = userId.trim();\n if (!id) {\n return '';\n }\n const cached = cache.get(id);\n if (cached) {\n return cached;\n }\n let display = id;\n try {\n const row = await userEntityData.byKey(id);\n if (row && typeof row === 'object') {\n const displayName =\n 'displayName' in row ? String((row as { displayName?: unknown }).displayName ?? '').trim() : '';\n const username = 'username' in row ? String((row as { username?: unknown }).username ?? '').trim() : '';\n display = displayName || username || id;\n }\n } catch {\n display = id;\n }\n cache.set(id, display);\n return display;\n}\n\nasync function resolveAssigneeDisplay(\n payload: Record<string, unknown> | null,\n userEntityData: WorkflowHistoryEntityLookup,\n userCache: Map<string, string>,\n emptyLabel: string,\n): Promise<string> {\n if (!payload) {\n return emptyLabel;\n }\n const assigned = normalizeUserIds(payload['assignedUserIds']);\n if (assigned.length > 0) {\n const names = await Promise.all(assigned.map((id) => resolveUserDisplayName(userEntityData, id, userCache)));\n return names.filter((name) => name.length > 0).join(', ') || emptyLabel;\n }\n const candidates = normalizeUserIds(payload['candidateUserIds']);\n if (candidates.length > 0) {\n const names = await Promise.all(candidates.map((id) => resolveUserDisplayName(userEntityData, id, userCache)));\n return names.filter((name) => name.length > 0).join(', ') || emptyLabel;\n }\n return emptyLabel;\n}\n\n/**\n * Resolves who was assigned to a step (original assignee when take-over occurred).\n */\nasync function resolveStepAssignee(\n nodeId: string,\n props: Record<string, unknown>,\n payload: Record<string, unknown> | null,\n userEntityData: WorkflowHistoryEntityLookup,\n userCache: Map<string, string>,\n emptyLabel: string,\n): Promise<string> {\n const reassign = props[`${nodeId}_reassignedToSelf`];\n if (reassign && typeof reassign === 'object' && !Array.isArray(reassign)) {\n const fromIds = normalizeUserIds((reassign as { fromUserIds?: unknown }).fromUserIds);\n if (fromIds.length > 0) {\n const names = await Promise.all(fromIds.map((id) => resolveUserDisplayName(userEntityData, id, userCache)));\n const joined = names.filter((name) => name.length > 0).join(', ');\n if (joined) {\n return joined;\n }\n }\n }\n\n const assignedAudit = normalizeUserIds(props[`${nodeId}_assignedUserIds`]);\n if (assignedAudit.length > 0) {\n const names = await Promise.all(assignedAudit.map((id) => resolveUserDisplayName(userEntityData, id, userCache)));\n const joined = names.filter((name) => name.length > 0).join(', ');\n if (joined) {\n return joined;\n }\n }\n\n const fromBookmark = await resolveAssigneeDisplay(payload, userEntityData, userCache, '');\n if (fromBookmark) {\n return fromBookmark;\n }\n\n return emptyLabel;\n}\n\nfunction resolveReporterDisplay(instance: AXMWorkflowManagementWorkflowInstanceEntityModel): string {\n const audit = instance.auditInfo?.created?.by;\n if (audit?.fullName?.trim()) {\n return audit.fullName.trim();\n }\n if (instance.assignUserRef?.displayName?.trim()) {\n return instance.assignUserRef.displayName.trim();\n }\n return '';\n}\n\nfunction shouldIncludeActivity(graphActivity: AXPWorkflowActivityInstance | undefined): boolean {\n const name = graphActivity?.name?.trim();\n if (name && HIDDEN_ACTIVITY_NAMES.has(name)) {\n return false;\n }\n return true;\n}\n\n//#endregion\n\n//#region ---- Builder ----\n\n/**\n * Builds end-user workflow history rows (no technical audit fields, resolved titles and user names).\n */\nfunction resolveInstanceStatusTranslationKey(status: string, subStatus: string): string {\n const normalizedStatus = status.trim().toLowerCase();\n const normalizedSubStatus = subStatus.trim().toLowerCase();\n const combined = `${normalizedStatus}-${normalizedSubStatus}`;\n const combinedMap: Record<string, string> = {\n 'running-executing': 'in-progress',\n 'running-suspended': 'pending-user-action',\n 'running-pending': 'waiting',\n 'running-idle': 'waiting',\n 'finished-finished': 'completed',\n 'finished-faulted': 'failed',\n 'finished-cancelled': 'cancelled',\n 'finished-canceled': 'cancelled',\n };\n if (combinedMap[combined]) {\n return combinedMap[combined];\n }\n if (normalizedStatus === 'running') {\n return 'in-progress';\n }\n if (normalizedStatus === 'finished') {\n return 'completed';\n }\n return 'unknown';\n}\n\nasync function resolveWorkflowInstanceStatusDisplay(\n translationService: AXTranslationService,\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n): Promise<string> {\n if (!instance) {\n return '';\n }\n const statusKey = resolveInstanceStatusTranslationKey(String(instance.status ?? ''), String(instance.subStatus ?? ''));\n const translated = await translationService.translateAsync(\n `@workflow-management:workflow-run.history.instance-status.${statusKey}`,\n );\n if (translated.trim()) {\n return translated.trim();\n }\n return instance.statusDisplay?.trim() ?? '';\n}\n\nasync function resolveWorkflowTitle(\n translationService: AXTranslationService,\n definition: AXPWorkflowDefinition | null | undefined,\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n): Promise<string> {\n if (definition?.title != null) {\n const resolved = translationService.resolve(definition.title);\n if (resolved?.trim()) {\n return resolved.trim();\n }\n }\n return (\n instance?.workflowTitle?.trim() ||\n instance?.name?.trim() ||\n instance?.definitionId?.trim() ||\n ''\n );\n}\n\nexport async function buildWorkflowHistoryPopupTitleAsync(\n translationService: AXTranslationService,\n definition: AXPWorkflowDefinition | null | undefined,\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n): Promise<string> {\n const workflowTitle = await resolveWorkflowTitle(translationService, definition, instance);\n const statusDisplay = await resolveWorkflowInstanceStatusDisplay(translationService, instance);\n if (workflowTitle && statusDisplay) {\n return translationService.translateAsync('@workflow-management:workflow-run.history.popup-title', {\n params: { workflowTitle, statusDisplay },\n });\n }\n return workflowTitle || statusDisplay;\n}\n\nexport async function buildWorkflowHistoryRows(\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n definition: AXPWorkflowDefinition | null | undefined,\n translationService: AXTranslationService,\n userEntityData: WorkflowHistoryEntityLookup,\n emptyLabel: string,\n taskTranslationDeps: WorkflowTaskTranslationDeps,\n titleResolveContext?: WorkflowHistoryTitleResolveContext,\n): Promise<AXMWorkflowHistoryRow[]> {\n const wi = instance?.workflowInstance;\n if (!wi?.workflowState) {\n return [];\n }\n\n const props = (wi.workflowState.properties ?? {}) as Record<string, unknown>;\n const contexts = wi.workflowState.activityExecutionContexts ?? [];\n const activities = definition?.graph?.activities ?? [];\n const findActivity = (nodeId: string) => activities.find((a) => a.id === nodeId);\n const workflowState = wi.workflowState;\n const extended = wi as AXPWorkflowInstance & {\n bookmarks?: Array<{\n activityId?: string;\n payload?: Record<string, unknown> | null;\n payloadJson?: string;\n }>;\n };\n const bookmarks = extended.bookmarks ?? [];\n const userCache = new Map<string, string>();\n const rows: AXMWorkflowHistoryRow[] = [];\n\n for (const ctx of contexts as AXPActivityExecutionContextState[]) {\n const nodeId = ctx.scheduledActivityNodeId;\n const graphActivity = findActivity(nodeId);\n if (!shouldIncludeActivity(graphActivity)) {\n continue;\n }\n\n const activityName = graphActivity?.name?.trim() ?? '';\n const isHumanTask =\n activityName === 'workflow-activity:human-task' || activityName === 'workflow-activity:cartable';\n const showsParticipants = USER_PARTICIPANT_ACTIVITY_NAMES.has(activityName);\n const bookmark = bookmarks.find((b) => b.activityId === nodeId);\n const payload = parseBookmarkPayload(bookmark);\n\n const stepTitle = await resolveStepTitle(\n translationService,\n graphActivity,\n nodeId,\n isHumanTask,\n payload,\n workflowState,\n taskTranslationDeps,\n titleResolveContext,\n );\n\n const labelKey = `${nodeId}_completedByLabel`;\n const idKey = `${nodeId}_completedByUserId`;\n let performedBy = '';\n const performedByLabel = formatPerformedByLabel(props[labelKey], props[idKey], '');\n if (performedByLabel && performedByLabel !== 'System') {\n performedBy = performedByLabel;\n } else if (props[idKey] != null && String(props[idKey]).trim() !== '') {\n performedBy = await resolveUserDisplayName(userEntityData, String(props[idKey]), userCache);\n } else if (performedByLabel === 'System') {\n performedBy = await translationService.translateAsync(\n '@workflow-management:workflow-run.history.system-performer',\n );\n } else if (showsParticipants) {\n const fallbackUserId =\n toString(get(props, 'managerUserId')).trim() || toString(get(props, 'initiatorUserId')).trim();\n if (fallbackUserId) {\n performedBy = await resolveUserDisplayName(userEntityData, fallbackUserId, userCache);\n }\n }\n\n let assignee = showsParticipants\n ? await resolveStepAssignee(nodeId, props, payload, userEntityData, userCache, emptyLabel)\n : '';\n if (showsParticipants && (!assignee || assignee === emptyLabel) && performedBy) {\n assignee = performedBy;\n }\n if (showsParticipants && !performedBy) {\n performedBy = emptyLabel;\n }\n if (showsParticipants && !assignee) {\n assignee = emptyLabel;\n }\n\n const status = String(ctx.status ?? '');\n const statusDisplay = await resolveActivityStatus(translationService, status);\n\n rows.push({\n contextId: ctx.id,\n nodeId,\n stepTitle,\n status,\n statusDisplay,\n performedBy,\n assignee,\n startedAt: ctx.startedAt ?? '',\n completedAt: ctx.completedAt ?? null,\n isHumanTask,\n showsParticipants,\n });\n }\n\n rows.sort((a, b) => {\n const ta = new Date(a.startedAt).getTime();\n const tb = new Date(b.startedAt).getTime();\n if (ta !== tb) {\n return ta - tb;\n }\n return a.contextId.localeCompare(b.contextId);\n });\n\n return rows;\n}\n\n/** Popup header: workflow title and human-readable status (e.g. \"Create Leave Request - Completed\"). */\nexport function buildWorkflowHistoryPopupTitle(workflowTitle: string, statusDisplay: string): string {\n const title = workflowTitle.trim();\n const status = statusDisplay.trim();\n if (title && status) {\n return `${title} - ${status}`;\n }\n return title || status;\n}\n\n/** Summary metadata shown above the timeline (reporter and workflow start time). */\nexport function buildWorkflowHistorySummary(\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n): AXMWorkflowHistorySummary {\n if (!instance) {\n return { reporter: '', startedAt: null };\n }\n return {\n reporter: resolveReporterDisplay(instance),\n startedAt: instance.createdAt?.trim() || null,\n };\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { AXPopupRef } from '@acorex/components/popup';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPExpressionEvaluatorService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPWorkflowDefinition } from '@acorex-platform/framework-shared/core';\nimport {\n AXPActivityDefinitionService,\n AXPWorkflowDefinitionService,\n WorkflowExpressionScopeService,\n} from '@acorex-platform/framework-client/workflow';\nimport { AXMWorkflowManagementWorkflowInstanceEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport {\n AXMWorkflowHistoryRow,\n AXMWorkflowHistorySummary,\n buildWorkflowHistoryPopupTitleAsync,\n buildWorkflowHistoryRows,\n buildWorkflowHistorySummary,\n WorkflowHistoryTitleResolveContext,\n} from './workflow-history-rows.utils';\nimport { rehydrateWorkflowStateInputTitles } from '../../../task-provider/workflow-task-input-rehydration.util';\nimport { AXMWorkflowRunHistoryTimelineTabComponent } from './workflow-run-history-timeline-tab/workflow-run-history-timeline-tab.component';\nimport { AXMWorkflowRunHistoryVisualTabComponent } from './workflow-run-history-visual-tab/workflow-run-history-visual-tab.component';\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Popup: workflow run history with Timeline and Visual diagram tabs.\n */\n@Component({\n selector: 'axm-workflow-run-history-popup',\n templateUrl: './workflow-run-history-popup.component.html',\n styleUrl: './workflow-run-history-popup.component.css',\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTabsModule,\n AXFormatModule,\n AXTranslationModule,\n AXMWorkflowRunHistoryTimelineTabComponent,\n AXMWorkflowRunHistoryVisualTabComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMWorkflowRunHistoryPopupComponent extends AXBasePageComponent {\n //#region ---- Popup input ----\n\n instanceId!: string;\n\n /** Injected by {@link AXPopupService} when opened as a popup. */\n readonly __popup__ = input<AXPopupRef | undefined>(undefined);\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly entityDefinitionRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly activityDefinitionService = inject(AXPActivityDefinitionService);\n private readonly workflowDefinitionService = inject(AXPWorkflowDefinitionService);\n private readonly translationService = inject(AXTranslationService);\n private readonly expressionScopeService = inject(WorkflowExpressionScopeService);\n private readonly expressionEvaluator = inject(AXPExpressionEvaluatorService);\n private readonly userEntityData = this.entityService.withEntity('SecurityManagement', 'User').data<string>();\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly activeTabIndex = signal(0);\n protected readonly isBusy = signal(true);\n protected readonly summary = signal<AXMWorkflowHistorySummary>({ reporter: '', startedAt: null });\n protected readonly definition = signal<AXPWorkflowDefinition | null>(null);\n protected readonly rows = signal<AXMWorkflowHistoryRow[]>([]);\n\n private readonly popupTitle = signal('');\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n effect(() => {\n const title = this.popupTitle().trim();\n const popupRef = this.__popup__();\n if (title && popupRef) {\n popupRef.setTitle(title);\n }\n });\n }\n\n override async ngOnInit(): Promise<void> {\n super.ngOnInit();\n await this.loadHistory();\n }\n\n //#endregion\n\n //#region ---- Tab handlers ----\n\n protected handleTabChange(event: AXTabStripChangedEvent): void {\n this.activeTabIndex.set(event.index);\n }\n\n //#endregion\n\n //#region ---- Data loading ----\n\n private async loadHistory(): Promise<void> {\n const trimmed = this.instanceId?.trim();\n if (!trimmed) {\n this.isBusy.set(false);\n return;\n }\n\n this.isBusy.set(true);\n try {\n const emptyLabel = '—';\n const loaded = await this.entityService\n .withEntity('WorkflowManagement', 'WorkflowInstance')\n .data<string, AXMWorkflowManagementWorkflowInstanceEntityModel>()\n .byKey(trimmed);\n\n const defId = loaded?.definitionId?.trim();\n let definition: AXPWorkflowDefinition | null = null;\n if (defId) {\n definition = (await this.workflowDefinitionService.getWorkflowByName(defId)) ?? null;\n }\n\n this.definition.set(definition);\n this.popupTitle.set(\n await buildWorkflowHistoryPopupTitleAsync(this.translationService, definition, loaded ?? null),\n );\n this.summary.set(buildWorkflowHistorySummary(loaded ?? null));\n\n const titleResolveContext: WorkflowHistoryTitleResolveContext = {\n resolveActivityDefinitionTitle: async (activityName) => {\n const activityDef = await this.activityDefinitionService.getActivityByName(activityName);\n return activityDef?.title ? (this.translationService.resolve(activityDef.title) ?? '') : '';\n },\n resolveEntityRefTitle: async (moduleEntityRef) => {\n const [module, entity] = moduleEntityRef.split('.');\n if (!module?.trim() || !entity?.trim()) {\n return '';\n }\n try {\n const entityDef = await this.entityDefinitionRegistry.resolve(module.trim(), entity.trim());\n return entityDef?.title ? (this.translationService.resolve(entityDef.title) ?? '') : '';\n } catch {\n return '';\n }\n },\n };\n\n const historyRows = await buildWorkflowHistoryRows(\n loaded ?? null,\n definition,\n this.translationService,\n this.userEntityData,\n emptyLabel,\n {\n expressionScopeService: this.expressionScopeService,\n expressionEvaluator: this.expressionEvaluator,\n translationService: this.translationService,\n resolveWorkflowStateForTasks: (workflowState) =>\n rehydrateWorkflowStateInputTitles(\n workflowState,\n this.translationService,\n async (entity, id) => {\n const row = await this.entityService.withEntity(entity).data().byKey(id as never);\n return row && typeof row === 'object' ? (row as unknown as Record<string, unknown>) : null;\n },\n ),\n },\n titleResolveContext,\n );\n this.rows.set(historyRows);\n } finally {\n this.isBusy.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<ax-content>\n <div class=\"axm-workflow-run-history-popup\">\n <div class=\"axm-workflow-run-history-popup__sticky\">\n <div class=\"axm-workflow-run-history-popup__sticky-bar\">\n @if (summary().reporter || summary().startedAt) {\n <div class=\"axm-workflow-run-history-popup__overview\" role=\"list\">\n @if (summary().reporter) {\n <div class=\"axm-workflow-run-history-popup__overview-item\" role=\"listitem\">\n <span class=\"axm-workflow-run-history-popup__overview-k\">\n {{ '@workflow-management:workflow-run.history.field.reporter' | translate | async }}\n </span>\n <span class=\"axm-workflow-run-history-popup__overview-v\" [textContent]=\"summary().reporter\"></span>\n </div>\n }\n @if (summary().startedAt) {\n <div class=\"axm-workflow-run-history-popup__overview-item\" role=\"listitem\">\n <span class=\"axm-workflow-run-history-popup__overview-k\">\n {{ '@workflow-management:workflow-run.history.field.started-at' | translate | async }}\n </span>\n <span class=\"axm-workflow-run-history-popup__overview-v\">\n {{ summary().startedAt | format: 'datetime' : 'short' | async }}\n </span>\n </div>\n }\n </div>\n }\n\n <ax-tabs\n class=\"axm-workflow-run-history-popup__tabs\"\n [look]=\"'with-line'\"\n (onActiveTabChanged)=\"handleTabChange($event)\"\n >\n <ax-tab-item\n [key]=\"'timeline'\"\n [text]=\"('@workflow-management:workflow-run.history.tabs.timeline.title' | translate | async)!\"\n [active]=\"activeTabIndex() === 0\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-list-timeline\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n <ax-tab-item\n [key]=\"'visual'\"\n [text]=\"('@workflow-management:workflow-run.history.tabs.visual.title' | translate | async)!\"\n [active]=\"activeTabIndex() === 1\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-diagram-project\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n </ax-tabs>\n </div>\n </div>\n\n <div class=\"axm-workflow-run-history-popup__panel\">\n @if (activeTabIndex() === 0) {\n @defer (on viewport) {\n <axm-workflow-run-history-timeline-tab [rows]=\"rows()\" [isBusy]=\"isBusy()\" />\n } @placeholder {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n } @loading {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n }\n }\n\n @if (activeTabIndex() === 1) {\n @defer (on viewport) {\n <axm-workflow-run-history-visual-tab\n [definition]=\"definition()\"\n [rows]=\"rows()\"\n [isBusy]=\"isBusy()\"\n />\n } @placeholder {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n } @loading {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n }\n }\n </div>\n </div>\n</ax-content>\n"],"names":["i1","i2","i4","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-CHVdaY4M.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/components/workflow-run-history-popup/workflow-history-rows.utils.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/components/workflow-run-history-popup/workflow-run-history-popup.component.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-run-plugin/components/workflow-run-history-popup/workflow-run-history-popup.component.html"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { get, toString } from 'lodash';\nimport type { AXPActivityExecutionContextState, AXPWorkflowActivityInstance, AXPWorkflowDefinition, AXPWorkflowInstance, AXPWorkflowState } from '@acorex-platform/framework-shared/core';\nimport { AXMWorkflowManagementWorkflowInstanceEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport {\n buildWorkflowTaskDisplayParams,\n buildWorkflowTaskDisplayParamsFromWorkflowState,\n type WorkflowTaskTranslationDeps,\n} from '../../../task-provider/workflow-task-translation.utils';\nimport { formatReadableActivityName } from '../../../workflow-instance-activity-instances-page/workflow-activity-instance-rows.utils';\n\n//#endregion\n\n//#region ---- Types ----\n\n/** One end-user row in the workflow run history timeline. */\nexport interface AXMWorkflowHistoryRow {\n contextId: string;\n /** Graph activity id for this step (`scheduledActivityNodeId`). */\n nodeId: string;\n stepTitle: string;\n status: string;\n statusDisplay: string;\n performedBy: string;\n assignee: string;\n startedAt: string;\n completedAt: string | null;\n isHumanTask: boolean;\n /** Steps where assignee and performer are shown (human tasks, forms, sign-off, rejection reason). */\n showsParticipants: boolean;\n}\n\nexport interface AXMWorkflowHistorySummary {\n reporter: string;\n startedAt: string | null;\n}\n\ninterface WorkflowHistoryEntityLookup {\n byKey(id: string): Promise<unknown>;\n}\n\n/** Optional resolvers for localized step and popup titles. */\nexport interface WorkflowHistoryTitleResolveContext {\n resolveActivityDefinitionTitle?: (activityName: string) => Promise<string>;\n resolveEntityRefTitle?: (moduleEntityRef: string) => Promise<string>;\n}\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Activity types omitted from end-user history (internal plumbing). */\nconst HIDDEN_ACTIVITY_NAMES = new Set(['workflow-activity:get-current-session-user']);\n\n/** Activity types that show assignee and performer in end-user history. */\nconst USER_PARTICIPANT_ACTIVITY_NAMES = new Set([\n 'workflow-activity:human-task',\n 'workflow-activity:cartable',\n 'workflow-activity:sign-off',\n 'workflow-activity:rejection-reason',\n 'workflow-activity:create-entity-form',\n]);\n\nconst ACTIVITY_STATUS_KEYS: Record<string, string> = {\n Running: '@workflow-management:workflow-run.history.activity-status.running',\n Completed: '@workflow-management:workflow-run.history.activity-status.completed',\n Pending: '@workflow-management:workflow-run.history.activity-status.pending',\n Executing: '@workflow-management:workflow-run.history.activity-status.executing',\n Suspended: '@workflow-management:workflow-run.history.activity-status.suspended',\n Canceled: '@workflow-management:workflow-run.history.activity-status.canceled',\n Cancelled: '@workflow-management:workflow-run.history.activity-status.canceled',\n Faulted: '@workflow-management:workflow-run.history.activity-status.faulted',\n Failed: '@workflow-management:workflow-run.history.activity-status.failed',\n};\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeUserIds(value: unknown): string[] {\n if (value == null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.filter((v): v is string => typeof v === 'string' && v.trim().length > 0);\n }\n if (typeof value === 'string' && value.trim().length > 0) {\n return [value.trim()];\n }\n return [];\n}\n\nfunction formatPerformedByLabel(label: unknown, id: unknown, empty: string): string {\n const labelText = label != null && String(label).trim() !== '' ? String(label).trim() : '';\n if (labelText && labelText !== 'System') {\n return labelText;\n }\n const idText = id != null && String(id).trim() !== '' ? String(id).trim() : '';\n if (idText) {\n return idText;\n }\n return empty;\n}\n\nfunction isTranslationKey(value: string): boolean {\n return value.trim().startsWith('@');\n}\n\nfunction getGraphHumanTaskContext(graphActivity: AXPWorkflowActivityInstance | undefined): Record<string, unknown> | undefined {\n const context = graphActivity?.inputs?.['context'];\n if (context != null && typeof context === 'object' && !Array.isArray(context)) {\n return context as Record<string, unknown>;\n }\n return undefined;\n}\n\nfunction parseBookmarkPayload(bookmark: {\n payload?: Record<string, unknown> | null;\n payloadJson?: string;\n} | undefined): Record<string, unknown> | null {\n if (bookmark?.payload && typeof bookmark.payload === 'object') {\n return bookmark.payload;\n }\n const raw = bookmark?.payloadJson?.trim();\n if (!raw) {\n return null;\n }\n try {\n const parsed = JSON.parse(raw) as unknown;\n return parsed != null && typeof parsed === 'object' && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : null;\n } catch {\n return null;\n }\n}\n\nfunction hasUnresolvedInterpolation(value: string): boolean {\n return /\\{\\{[^}]+\\}\\}/.test(value);\n}\n\nasync function resolveDisplayText(\n translationService: AXTranslationService,\n value: string,\n params?: Record<string, string>,\n): Promise<string> {\n const raw = value?.trim();\n if (!raw) {\n return '';\n }\n if (!isTranslationKey(raw)) {\n return raw;\n }\n return translationService.translateAsync(raw, { params });\n}\n\nfunction isModuleEntityRef(value: string): boolean {\n return /^[A-Za-z][\\w]*\\.[A-Za-z][\\w]*$/.test(value.trim());\n}\n\nasync function resolveGraphActivityTitle(\n translationService: AXTranslationService,\n graphActivity: AXPWorkflowActivityInstance | undefined,\n workflowState: AXPWorkflowState | undefined,\n taskTranslationDeps: WorkflowTaskTranslationDeps,\n titleResolveContext: WorkflowHistoryTitleResolveContext | undefined,\n): Promise<string> {\n const graphTitle = typeof graphActivity?.title === 'string' ? graphActivity.title.trim() : '';\n if (graphTitle) {\n if (isTranslationKey(graphTitle)) {\n const params = await buildWorkflowTaskDisplayParamsFromWorkflowState(workflowState, taskTranslationDeps);\n const resolved = await resolveDisplayText(translationService, graphTitle, params);\n if (resolved && !hasUnresolvedInterpolation(resolved)) {\n return resolved;\n }\n }\n if (isModuleEntityRef(graphTitle) && titleResolveContext?.resolveEntityRefTitle) {\n const entityTitle = await titleResolveContext.resolveEntityRefTitle(graphTitle);\n if (entityTitle.trim()) {\n return entityTitle.trim();\n }\n }\n if (!isModuleEntityRef(graphTitle)) {\n const params = await buildWorkflowTaskDisplayParamsFromWorkflowState(workflowState, taskTranslationDeps);\n const resolved = await resolveDisplayText(translationService, graphTitle, params);\n if (resolved && !hasUnresolvedInterpolation(resolved)) {\n return resolved;\n }\n }\n }\n\n const inputTitle =\n typeof graphActivity?.inputs?.['title'] === 'string' ? graphActivity.inputs['title'].trim() : '';\n if (inputTitle) {\n const params = await buildWorkflowTaskDisplayParamsFromWorkflowState(workflowState, taskTranslationDeps);\n const resolved = await resolveDisplayText(translationService, inputTitle, params);\n if (resolved && !hasUnresolvedInterpolation(resolved)) {\n return resolved;\n }\n }\n\n const activityName = graphActivity?.name?.trim() ?? '';\n if (activityName && titleResolveContext?.resolveActivityDefinitionTitle) {\n const definitionTitle = await titleResolveContext.resolveActivityDefinitionTitle(activityName);\n if (definitionTitle.trim()) {\n return definitionTitle.trim();\n }\n }\n\n return '';\n}\n\nasync function resolveStepTitle(\n translationService: AXTranslationService,\n graphActivity: AXPWorkflowActivityInstance | undefined,\n nodeId: string,\n isHumanTask: boolean,\n payload: Record<string, unknown> | null,\n workflowState: AXPWorkflowState | undefined,\n taskTranslationDeps: WorkflowTaskTranslationDeps,\n titleResolveContext: WorkflowHistoryTitleResolveContext | undefined,\n): Promise<string> {\n if (isHumanTask) {\n const payloadContext =\n payload?.['context'] && typeof payload['context'] === 'object'\n ? (payload['context'] as Record<string, unknown>)\n : undefined;\n const graphContext = getGraphHumanTaskContext(graphActivity);\n const graphParams = await buildWorkflowTaskDisplayParams(graphContext, workflowState, taskTranslationDeps);\n const payloadParams = await buildWorkflowTaskDisplayParams(payloadContext, workflowState, taskTranslationDeps);\n const taskParams = { ...graphParams, ...payloadParams };\n\n const payloadTitle = typeof payload?.['title'] === 'string' ? payload['title'].trim() : '';\n const graphTitle =\n typeof graphActivity?.inputs?.['title'] === 'string' ? graphActivity.inputs['title'].trim() : '';\n const titleSource = payloadTitle || graphTitle;\n\n if (titleSource) {\n const resolved = await resolveDisplayText(translationService, titleSource, taskParams);\n if (resolved && !hasUnresolvedInterpolation(resolved)) {\n return resolved;\n }\n }\n\n if (taskParams['employeeDisplayName']?.trim() && taskParams['leaveTypeTitle']?.trim()) {\n return `${taskParams['employeeDisplayName']} — ${taskParams['leaveTypeTitle']}`;\n }\n }\n\n const resolvedGraphTitle = await resolveGraphActivityTitle(\n translationService,\n graphActivity,\n workflowState,\n taskTranslationDeps,\n titleResolveContext,\n );\n if (resolvedGraphTitle) {\n return resolvedGraphTitle;\n }\n\n const rawTitle = graphActivity?.name\n ? formatReadableActivityName(graphActivity.name)\n : formatReadableActivityName(nodeId);\n return rawTitle;\n}\n\nasync function resolveActivityStatus(\n translationService: AXTranslationService,\n status: string,\n): Promise<string> {\n const normalized = (status ?? '').trim();\n if (!normalized) {\n return '';\n }\n const key = ACTIVITY_STATUS_KEYS[normalized] ?? ACTIVITY_STATUS_KEYS[normalized.toLowerCase()];\n if (key) {\n return translationService.translateAsync(key);\n }\n return formatReadableActivityName(normalized);\n}\n\nasync function resolveUserDisplayName(\n userEntityData: WorkflowHistoryEntityLookup,\n userId: string,\n cache: Map<string, string>,\n): Promise<string> {\n const id = userId.trim();\n if (!id) {\n return '';\n }\n const cached = cache.get(id);\n if (cached) {\n return cached;\n }\n let display = id;\n try {\n const row = await userEntityData.byKey(id);\n if (row && typeof row === 'object') {\n const displayName =\n 'displayName' in row ? String((row as { displayName?: unknown }).displayName ?? '').trim() : '';\n const username = 'username' in row ? String((row as { username?: unknown }).username ?? '').trim() : '';\n display = displayName || username || id;\n }\n } catch {\n display = id;\n }\n cache.set(id, display);\n return display;\n}\n\nasync function resolveAssigneeDisplay(\n payload: Record<string, unknown> | null,\n userEntityData: WorkflowHistoryEntityLookup,\n userCache: Map<string, string>,\n emptyLabel: string,\n): Promise<string> {\n if (!payload) {\n return emptyLabel;\n }\n const assigned = normalizeUserIds(payload['assignedUserIds']);\n if (assigned.length > 0) {\n const names = await Promise.all(assigned.map((id) => resolveUserDisplayName(userEntityData, id, userCache)));\n return names.filter((name) => name.length > 0).join(', ') || emptyLabel;\n }\n const candidates = normalizeUserIds(payload['candidateUserIds']);\n if (candidates.length > 0) {\n const names = await Promise.all(candidates.map((id) => resolveUserDisplayName(userEntityData, id, userCache)));\n return names.filter((name) => name.length > 0).join(', ') || emptyLabel;\n }\n return emptyLabel;\n}\n\n/**\n * Resolves who was assigned to a step (original assignee when take-over occurred).\n */\nasync function resolveStepAssignee(\n nodeId: string,\n props: Record<string, unknown>,\n payload: Record<string, unknown> | null,\n userEntityData: WorkflowHistoryEntityLookup,\n userCache: Map<string, string>,\n emptyLabel: string,\n): Promise<string> {\n const reassign = props[`${nodeId}_reassignedToSelf`];\n if (reassign && typeof reassign === 'object' && !Array.isArray(reassign)) {\n const fromIds = normalizeUserIds((reassign as { fromUserIds?: unknown }).fromUserIds);\n if (fromIds.length > 0) {\n const names = await Promise.all(fromIds.map((id) => resolveUserDisplayName(userEntityData, id, userCache)));\n const joined = names.filter((name) => name.length > 0).join(', ');\n if (joined) {\n return joined;\n }\n }\n }\n\n const assignedAudit = normalizeUserIds(props[`${nodeId}_assignedUserIds`]);\n if (assignedAudit.length > 0) {\n const names = await Promise.all(assignedAudit.map((id) => resolveUserDisplayName(userEntityData, id, userCache)));\n const joined = names.filter((name) => name.length > 0).join(', ');\n if (joined) {\n return joined;\n }\n }\n\n const fromBookmark = await resolveAssigneeDisplay(payload, userEntityData, userCache, '');\n if (fromBookmark) {\n return fromBookmark;\n }\n\n return emptyLabel;\n}\n\nfunction resolveReporterDisplay(instance: AXMWorkflowManagementWorkflowInstanceEntityModel): string {\n const audit = instance.auditInfo?.created?.by;\n if (audit?.fullName?.trim()) {\n return audit.fullName.trim();\n }\n if (instance.assignUserRef?.displayName?.trim()) {\n return instance.assignUserRef.displayName.trim();\n }\n return '';\n}\n\nfunction shouldIncludeActivity(graphActivity: AXPWorkflowActivityInstance | undefined): boolean {\n const name = graphActivity?.name?.trim();\n if (name && HIDDEN_ACTIVITY_NAMES.has(name)) {\n return false;\n }\n return true;\n}\n\n//#endregion\n\n//#region ---- Builder ----\n\n/**\n * Builds end-user workflow history rows (no technical audit fields, resolved titles and user names).\n */\nfunction resolveInstanceStatusTranslationKey(status: string, subStatus: string): string {\n const normalizedStatus = status.trim().toLowerCase();\n const normalizedSubStatus = subStatus.trim().toLowerCase();\n const combined = `${normalizedStatus}-${normalizedSubStatus}`;\n const combinedMap: Record<string, string> = {\n 'running-executing': 'in-progress',\n 'running-suspended': 'pending-user-action',\n 'running-pending': 'waiting',\n 'running-idle': 'waiting',\n 'finished-finished': 'completed',\n 'finished-faulted': 'failed',\n 'finished-cancelled': 'cancelled',\n 'finished-canceled': 'cancelled',\n };\n if (combinedMap[combined]) {\n return combinedMap[combined];\n }\n if (normalizedStatus === 'running') {\n return 'in-progress';\n }\n if (normalizedStatus === 'finished') {\n return 'completed';\n }\n return 'unknown';\n}\n\nasync function resolveWorkflowInstanceStatusDisplay(\n translationService: AXTranslationService,\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n): Promise<string> {\n if (!instance) {\n return '';\n }\n const statusKey = resolveInstanceStatusTranslationKey(String(instance.status ?? ''), String(instance.subStatus ?? ''));\n const translated = await translationService.translateAsync(\n `@workflow-management:workflow-run.history.instance-status.${statusKey}`,\n );\n if (translated.trim()) {\n return translated.trim();\n }\n return instance.statusDisplay?.trim() ?? '';\n}\n\nasync function resolveWorkflowTitle(\n translationService: AXTranslationService,\n definition: AXPWorkflowDefinition | null | undefined,\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n): Promise<string> {\n if (definition?.title != null) {\n const resolved = translationService.resolve(definition.title);\n if (resolved?.trim()) {\n return resolved.trim();\n }\n }\n return (\n instance?.workflowTitle?.trim() ||\n instance?.name?.trim() ||\n instance?.definitionId?.trim() ||\n ''\n );\n}\n\nexport async function buildWorkflowHistoryPopupTitleAsync(\n translationService: AXTranslationService,\n definition: AXPWorkflowDefinition | null | undefined,\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n): Promise<string> {\n const workflowTitle = await resolveWorkflowTitle(translationService, definition, instance);\n const statusDisplay = await resolveWorkflowInstanceStatusDisplay(translationService, instance);\n if (workflowTitle && statusDisplay) {\n return translationService.translateAsync('@workflow-management:workflow-run.history.popup-title', {\n params: { workflowTitle, statusDisplay },\n });\n }\n return workflowTitle || statusDisplay;\n}\n\nexport async function buildWorkflowHistoryRows(\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n definition: AXPWorkflowDefinition | null | undefined,\n translationService: AXTranslationService,\n userEntityData: WorkflowHistoryEntityLookup,\n emptyLabel: string,\n taskTranslationDeps: WorkflowTaskTranslationDeps,\n titleResolveContext?: WorkflowHistoryTitleResolveContext,\n): Promise<AXMWorkflowHistoryRow[]> {\n const wi = instance?.workflowInstance;\n if (!wi?.workflowState) {\n return [];\n }\n\n const props = (wi.workflowState.properties ?? {}) as Record<string, unknown>;\n const contexts = wi.workflowState.activityExecutionContexts ?? [];\n const activities = definition?.graph?.activities ?? [];\n const findActivity = (nodeId: string) => activities.find((a) => a.id === nodeId);\n const workflowState = wi.workflowState;\n const extended = wi as AXPWorkflowInstance & {\n bookmarks?: Array<{\n activityId?: string;\n payload?: Record<string, unknown> | null;\n payloadJson?: string;\n }>;\n };\n const bookmarks = extended.bookmarks ?? [];\n const userCache = new Map<string, string>();\n const rows: AXMWorkflowHistoryRow[] = [];\n\n for (const ctx of contexts as AXPActivityExecutionContextState[]) {\n const nodeId = ctx.scheduledActivityNodeId;\n const graphActivity = findActivity(nodeId);\n if (!shouldIncludeActivity(graphActivity)) {\n continue;\n }\n\n const activityName = graphActivity?.name?.trim() ?? '';\n const isHumanTask =\n activityName === 'workflow-activity:human-task' || activityName === 'workflow-activity:cartable';\n const showsParticipants = USER_PARTICIPANT_ACTIVITY_NAMES.has(activityName);\n const bookmark = bookmarks.find((b) => b.activityId === nodeId);\n const payload = parseBookmarkPayload(bookmark);\n\n const stepTitle = await resolveStepTitle(\n translationService,\n graphActivity,\n nodeId,\n isHumanTask,\n payload,\n workflowState,\n taskTranslationDeps,\n titleResolveContext,\n );\n\n const labelKey = `${nodeId}_completedByLabel`;\n const idKey = `${nodeId}_completedByUserId`;\n let performedBy = '';\n const performedByLabel = formatPerformedByLabel(props[labelKey], props[idKey], '');\n if (performedByLabel && performedByLabel !== 'System') {\n performedBy = performedByLabel;\n } else if (props[idKey] != null && String(props[idKey]).trim() !== '') {\n performedBy = await resolveUserDisplayName(userEntityData, String(props[idKey]), userCache);\n } else if (performedByLabel === 'System') {\n performedBy = await translationService.translateAsync(\n '@workflow-management:workflow-run.history.system-performer',\n );\n } else if (showsParticipants) {\n const fallbackUserId =\n toString(get(props, 'managerUserId')).trim() || toString(get(props, 'initiatorUserId')).trim();\n if (fallbackUserId) {\n performedBy = await resolveUserDisplayName(userEntityData, fallbackUserId, userCache);\n }\n }\n\n let assignee = showsParticipants\n ? await resolveStepAssignee(nodeId, props, payload, userEntityData, userCache, emptyLabel)\n : '';\n if (showsParticipants && (!assignee || assignee === emptyLabel) && performedBy) {\n assignee = performedBy;\n }\n if (showsParticipants && !performedBy) {\n performedBy = emptyLabel;\n }\n if (showsParticipants && !assignee) {\n assignee = emptyLabel;\n }\n\n const status = String(ctx.status ?? '');\n const statusDisplay = await resolveActivityStatus(translationService, status);\n\n rows.push({\n contextId: ctx.id,\n nodeId,\n stepTitle,\n status,\n statusDisplay,\n performedBy,\n assignee,\n startedAt: ctx.startedAt ?? '',\n completedAt: ctx.completedAt ?? null,\n isHumanTask,\n showsParticipants,\n });\n }\n\n rows.sort((a, b) => {\n const ta = new Date(a.startedAt).getTime();\n const tb = new Date(b.startedAt).getTime();\n if (ta !== tb) {\n return ta - tb;\n }\n return a.contextId.localeCompare(b.contextId);\n });\n\n return rows;\n}\n\n/** Popup header: workflow title and human-readable status (e.g. \"Create Leave Request - Completed\"). */\nexport function buildWorkflowHistoryPopupTitle(workflowTitle: string, statusDisplay: string): string {\n const title = workflowTitle.trim();\n const status = statusDisplay.trim();\n if (title && status) {\n return `${title} - ${status}`;\n }\n return title || status;\n}\n\n/** Summary metadata shown above the timeline (reporter and workflow start time). */\nexport function buildWorkflowHistorySummary(\n instance: AXMWorkflowManagementWorkflowInstanceEntityModel | null | undefined,\n): AXMWorkflowHistorySummary {\n if (!instance) {\n return { reporter: '', startedAt: null };\n }\n return {\n reporter: resolveReporterDisplay(instance),\n startedAt: instance.createdAt?.trim() || null,\n };\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { AXPopupRef } from '@acorex/components/popup';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPExpressionEvaluatorService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPWorkflowDefinition } from '@acorex-platform/framework-shared/core';\nimport {\n AXPActivityDefinitionService,\n AXPWorkflowDefinitionService,\n WorkflowExpressionScopeService,\n} from '@acorex-platform/framework-client/workflow';\nimport { AXMWorkflowManagementWorkflowInstanceEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport {\n AXMWorkflowHistoryRow,\n AXMWorkflowHistorySummary,\n buildWorkflowHistoryPopupTitleAsync,\n buildWorkflowHistoryRows,\n buildWorkflowHistorySummary,\n WorkflowHistoryTitleResolveContext,\n} from './workflow-history-rows.utils';\nimport { rehydrateWorkflowStateInputTitles } from '../../../task-provider/workflow-task-input-rehydration.util';\nimport { AXMWorkflowRunHistoryTimelineTabComponent } from './workflow-run-history-timeline-tab/workflow-run-history-timeline-tab.component';\nimport { AXMWorkflowRunHistoryVisualTabComponent } from './workflow-run-history-visual-tab/workflow-run-history-visual-tab.component';\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Popup: workflow run history with Timeline and Visual diagram tabs.\n */\n@Component({\n selector: 'axm-workflow-run-history-popup',\n templateUrl: './workflow-run-history-popup.component.html',\n styleUrl: './workflow-run-history-popup.component.css',\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTabsModule,\n AXFormatModule,\n AXTranslationModule,\n AXMWorkflowRunHistoryTimelineTabComponent,\n AXMWorkflowRunHistoryVisualTabComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMWorkflowRunHistoryPopupComponent extends AXBasePageComponent {\n //#region ---- Popup input ----\n\n instanceId!: string;\n\n /** Injected by {@link AXPopupService} when opened as a popup. */\n readonly __popup__ = input<AXPopupRef | undefined>(undefined);\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly entityDefinitionRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly activityDefinitionService = inject(AXPActivityDefinitionService);\n private readonly workflowDefinitionService = inject(AXPWorkflowDefinitionService);\n private readonly translationService = inject(AXTranslationService);\n private readonly expressionScopeService = inject(WorkflowExpressionScopeService);\n private readonly expressionEvaluator = inject(AXPExpressionEvaluatorService);\n private readonly userEntityData = this.entityService.withEntity('SecurityManagement', 'User').data<string>();\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly activeTabIndex = signal(0);\n protected readonly isBusy = signal(true);\n protected readonly summary = signal<AXMWorkflowHistorySummary>({ reporter: '', startedAt: null });\n protected readonly definition = signal<AXPWorkflowDefinition | null>(null);\n protected readonly rows = signal<AXMWorkflowHistoryRow[]>([]);\n\n private readonly popupTitle = signal('');\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n effect(() => {\n const title = this.popupTitle().trim();\n const popupRef = this.__popup__();\n if (title && popupRef) {\n popupRef.setTitle(title);\n }\n });\n }\n\n override async ngOnInit(): Promise<void> {\n super.ngOnInit();\n await this.loadHistory();\n }\n\n //#endregion\n\n //#region ---- Tab handlers ----\n\n protected handleTabChange(event: AXTabStripChangedEvent): void {\n this.activeTabIndex.set(event.index);\n }\n\n //#endregion\n\n //#region ---- Data loading ----\n\n private async loadHistory(): Promise<void> {\n const trimmed = this.instanceId?.trim();\n if (!trimmed) {\n this.isBusy.set(false);\n return;\n }\n\n this.isBusy.set(true);\n try {\n const emptyLabel = '—';\n const loaded = await this.entityService\n .withEntity('WorkflowManagement', 'WorkflowInstance')\n .data<string, AXMWorkflowManagementWorkflowInstanceEntityModel>()\n .byKey(trimmed);\n\n const defId = loaded?.definitionId?.trim();\n let definition: AXPWorkflowDefinition | null = null;\n if (defId) {\n definition = (await this.workflowDefinitionService.getWorkflowByName(defId)) ?? null;\n }\n\n this.definition.set(definition);\n this.popupTitle.set(\n await buildWorkflowHistoryPopupTitleAsync(this.translationService, definition, loaded ?? null),\n );\n this.summary.set(buildWorkflowHistorySummary(loaded ?? null));\n\n const titleResolveContext: WorkflowHistoryTitleResolveContext = {\n resolveActivityDefinitionTitle: async (activityName) => {\n const activityDef = await this.activityDefinitionService.getActivityByName(activityName);\n return activityDef?.title ? (this.translationService.resolve(activityDef.title) ?? '') : '';\n },\n resolveEntityRefTitle: async (moduleEntityRef) => {\n const [module, entity] = moduleEntityRef.split('.');\n if (!module?.trim() || !entity?.trim()) {\n return '';\n }\n try {\n const entityDef = await this.entityDefinitionRegistry.resolve(module.trim(), entity.trim());\n return entityDef?.title ? (this.translationService.resolve(entityDef.title) ?? '') : '';\n } catch {\n return '';\n }\n },\n };\n\n const historyRows = await buildWorkflowHistoryRows(\n loaded ?? null,\n definition,\n this.translationService,\n this.userEntityData,\n emptyLabel,\n {\n expressionScopeService: this.expressionScopeService,\n expressionEvaluator: this.expressionEvaluator,\n translationService: this.translationService,\n resolveWorkflowStateForTasks: (workflowState) =>\n rehydrateWorkflowStateInputTitles(\n workflowState,\n this.translationService,\n async (entity, id) => {\n const row = await this.entityService.withEntity(entity).data().byKey(id as never);\n return row && typeof row === 'object' ? (row as unknown as Record<string, unknown>) : null;\n },\n ),\n },\n titleResolveContext,\n );\n this.rows.set(historyRows);\n } finally {\n this.isBusy.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<ax-content>\n <div class=\"axm-workflow-run-history-popup\">\n <div class=\"axm-workflow-run-history-popup__sticky\">\n <div class=\"axm-workflow-run-history-popup__sticky-bar\">\n @if (summary().reporter || summary().startedAt) {\n <div class=\"axm-workflow-run-history-popup__overview\" role=\"list\">\n @if (summary().reporter) {\n <div class=\"axm-workflow-run-history-popup__overview-item\" role=\"listitem\">\n <span class=\"axm-workflow-run-history-popup__overview-k\">\n {{ '@workflow-management:workflow-run.history.field.reporter' | translate | async }}\n </span>\n <span class=\"axm-workflow-run-history-popup__overview-v\" [textContent]=\"summary().reporter\"></span>\n </div>\n }\n @if (summary().startedAt) {\n <div class=\"axm-workflow-run-history-popup__overview-item\" role=\"listitem\">\n <span class=\"axm-workflow-run-history-popup__overview-k\">\n {{ '@workflow-management:workflow-run.history.field.started-at' | translate | async }}\n </span>\n <span class=\"axm-workflow-run-history-popup__overview-v\">\n {{ summary().startedAt | format: 'datetime' : 'short' | async }}\n </span>\n </div>\n }\n </div>\n }\n\n <ax-tabs\n class=\"axm-workflow-run-history-popup__tabs\"\n [look]=\"'with-line'\"\n (onActiveTabChanged)=\"handleTabChange($event)\"\n >\n <ax-tab-item\n [key]=\"'timeline'\"\n [text]=\"('@workflow-management:workflow-run.history.tabs.timeline.title' | translate | async)!\"\n [active]=\"activeTabIndex() === 0\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-list-timeline\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n <ax-tab-item\n [key]=\"'visual'\"\n [text]=\"('@workflow-management:workflow-run.history.tabs.visual.title' | translate | async)!\"\n [active]=\"activeTabIndex() === 1\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-diagram-project\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n </ax-tabs>\n </div>\n </div>\n\n <div class=\"axm-workflow-run-history-popup__panel\">\n @if (activeTabIndex() === 0) {\n @defer (on viewport) {\n <axm-workflow-run-history-timeline-tab [rows]=\"rows()\" [isBusy]=\"isBusy()\" />\n } @placeholder {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n } @loading {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n }\n }\n\n @if (activeTabIndex() === 1) {\n @defer (on viewport) {\n <axm-workflow-run-history-visual-tab\n [definition]=\"definition()\"\n [rows]=\"rows()\"\n [isBusy]=\"isBusy()\"\n />\n } @placeholder {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n } @loading {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n }\n }\n </div>\n </div>\n</ax-content>\n"],"names":["i1","i2","i4","i6"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { AXPTaskPopoverComponent, AXPTaskBoardService, getTaskTranslationKey, fo
|
|
|
13
13
|
import { AXPSettingsService } from '@acorex-platform/framework-client/common';
|
|
14
14
|
import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
|
|
15
15
|
import { AXPWidgetSerializationHelper, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';
|
|
16
|
-
import { a as AXMWorkflowManagementCommandKeys } from './acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-
|
|
16
|
+
import { a as AXMWorkflowManagementCommandKeys } from './acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-BcOBHoOK.mjs';
|
|
17
17
|
import * as i7 from '@acorex/core/translation';
|
|
18
18
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
19
19
|
import * as i1$1 from '@angular/common';
|
|
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
297
297
|
}], ctorParameters: () => [], propDecorators: { task: [{ type: i0.Input, args: [{ isSignal: true, alias: "task", required: true }] }] } });
|
|
298
298
|
|
|
299
299
|
export { AXMWorkflowTaskPopoverComponent };
|
|
300
|
-
//# sourceMappingURL=acorex-platform-module-workflow-management-client-workflow-task-popover.component-
|
|
300
|
+
//# sourceMappingURL=acorex-platform-module-workflow-management-client-workflow-task-popover.component-BXutLQAO.mjs.map
|