Избежать конфликтов

imendan

Green Team
22.09.2010
159
4
BIT
0
Господа профессионалы! Как избежать конфликтов в документах?
Пример, в одно мгновение 3 человека делают одно действие с документом. Первый подписывает, второй добавляет визирующего, третий отклоняет. Все действия используют бэкграунд агенты, которые изменяют документ. В итоге, документ в конфликте. Не каждое действие отображено.

Есть выход, но он мне не нравится. Можно все действия записывать в очередь событий (notesdocument.save в events.nsf). А потом агентом обрабатывать все действия. Плюс данного подхода в том, что он все события обрабатывает по-очереди. Минус, агент вызывается каждые 5 минут и пользователь звонит и говорит, что он вот подписал, а подписи своей не видит. Подпись отображается в худшем случае через 5 минут.

Прошу помощи, господа! Возможно есть другое решение данной ситуации, о котором я не догадался :)

P.s.: Всем добра!
 
Последнее редактирование модератором:

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
делать такие действия в виде отдельных документов
подписи - в отдельной базе подписей - и тогда всегда будут видны сразу все подписи - и их может быть много
и не нужно будет док передёргивать изменениями из-за подписи

и т.д.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
466
Как избежать конфликты
исправьте на согласованную форму
то что написал @ToxaRat , но все зависит от процесса...
если действия должны обладать последовательностью - знаит её и нужно придерживаться
"синхронизация/блокировка" возможна на отдельном документе, в отдельной БД, на "очередях" и т.п. уже не раз здесь описано, везде есть нюансы
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
но все зависит от процесса...
согласен что зависит от процесса
но давно заметил тенденцию, что срать всё в один доки и одну базу в итоге аукнется через время, когда наберется достаточный объём ;)
 

NetWood

Lotus Team
17.04.2008
565
96
BIT
174
Есть выход, но он мне не нравится. Можно все действия записывать в очередь событий (notesdocument.save в events.nsf). А потом агентом обрабатывать все действия. Плюс данного подхода в том, что он все события обрабатывает по-очереди.
Блокчейн — наше все. Нормальное решение. Мессадж повесьте побольше про подписи и срок принятия решения. Ломиться всем в один док не есть гуд. Если важна только подпись, то можно делать ее отдельным ответом к доку, который будет видно сразу (Подписано - на рассмотрении, Подписано - утверждено). А уже агентом решать, утвержден док или нет из результатов подписей.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
353
Как вариант - должно быть workflow, последовательность действий. Первый - подписывает документ и только у него есть парво редактировать документ в этот момент (Authors/Readers поля), когда он сделает своё дело, права доступа к документу меняются, по e-mail отправляется уведомление следующему пользователю, что надо что-то сделать с документом. Ну, и так далее...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!