|
05.07.2022, 09:39 | #1 |
Administrator
|
А в чём проблема? Есть элементы WF в АОТе, они ссылаются на классы - там логика. Фантазии можно разные реализовать
__________________
Возможно сделать все. Вопрос времени |
|
05.07.2022, 10:01 | #2 |
Участник
|
Цитата:
Сценарий из разряда есть WF с параллельными заданиями например условно ищут потерянные вещи сотрудники А Б (параллельно ищут вещь 1) и С с D (ищут другую вещь 2)) при одобрении сотрудниками AA или ББ знающими как выглядит вещь 1 факта что сотрудник А нашел нужную вещь отпускаем с чистой совестью и А и Б но С и D продолжает трудиться для них ободрить могут ББ и CC. |
|
05.07.2022, 15:56 | #3 |
Administrator
|
Цитата:
Сообщение от axm2017
например условно ищут потерянные вещи сотрудники А Б (параллельно ищут вещь 1)
и С с D (ищут другую вещь 2)) при одобрении сотрудниками AA или ББ знающими как выглядит вещь 1 факта что сотрудник А нашел нужную вещь отпускаем с чистой совестью и А и Б но С и D продолжает трудиться для них ободрить могут ББ и CC. Т.е. WF не задумывался в роли алгоритма поиска потерянных вещей, т.е. ситуация, когда А нашел чего-то, а C и D ещё ищут - неприменима для WF (понятно, что "натянуть" функционал с некоторыми ограничениями можно всегда)
__________________
Возможно сделать все. Вопрос времени |
|
07.07.2022, 11:00 | #4 |
Участник
|
Цитата:
Типичное в коде SysWorkflowWorkItem метод completeWorkItems X++: while select forupdate * from workItemTable where // BP deviation documented workItemTable.CorrelationId == _correlationId && workItemTable.StepId == _stepId { if (workItemTable.Status != WorkflowWorkItemStatus::Completed) { if (_isClaimed && workItemTable.ActivityId == _claimedActivityId) { if (workItemTable.Queue) { SysWorkflowWorkItem::completeNotification(workItemTable.CompanyId, workItemTable.NotificationId); workItemTable.NotificationId = 0; workItemTable.UserId = _user; workItemTable.Subject = _subject; workItemTable.Description = _instructions; } workItemTable.IsClaimed = NoYes::Yes; } else { workItemTable.Status = WorkflowWorkItemStatus::Completed; SysWorkflowWorkItem::completeNotification(workItemTable.CompanyId, workItemTable.NotificationId); workItemTable.NotificationId = 0; } workItemTable.update(); } |
|
|
|