Параллельные шаги (#3)
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/3
This commit was merged in pull request #3.
This commit is contained in:
@@ -76,13 +76,24 @@ export async function writeRoute(
|
||||
const submitted = status === REQUEST_STATUS.onApproval;
|
||||
const rowStatus = submitted ? REQUEST_STATUS.queued : status;
|
||||
|
||||
// Смещение фазы исполнения — по МАКСИМАЛЬНОМУ номеру шага согласующих, а не по
|
||||
// их количеству: при параллельных шагах несколько согласующих делят один номер,
|
||||
// поэтому approvers.length больше последнего реального шага (три согласующих,
|
||||
// из которых двое параллельны, — это шаги 1 и 2, а не 1..3). На очередь это не
|
||||
// влияет (activateNextQueued берёт минимальный order среди ждущих, разрывы ему
|
||||
// безразличны) — но нумерация шагов в таблице «Исполнение» шла бы с пропуском.
|
||||
const lastApprovalStep = approvers.reduce(
|
||||
(max, a, i) => Math.max(max, a.order ?? i + 1),
|
||||
0
|
||||
);
|
||||
|
||||
await approval.createSteps(requestId, approvers, rowStatus, APPROVAL_PHASE.approval, 1);
|
||||
await approval.createSteps(
|
||||
requestId,
|
||||
executors,
|
||||
rowStatus,
|
||||
APPROVAL_PHASE.execution,
|
||||
approvers.length + 1
|
||||
lastApprovalStep + 1
|
||||
);
|
||||
|
||||
if (submitted) {
|
||||
|
||||
Reference in New Issue
Block a user