Регистрация документов

  • Автор темы selfar
  • Дата начала
S

selfar

Почитал форум, но "сходу" решения не нашел.
Собственно задача вроде бы простая - реализовать регистрацию документов.
Есть счетчик на основании которого присваивается номер и есть несколько простых условий.
1. При одновременном использовании счетчика разными пользователями номер не должен задваиваться.
2. Необходимо сократить (в идеале убрать) время ожидания другими пользователями пока освободиться счетчик.
3. Желательно не использовать серверные блокировки.

Подскажите какие могут быть решения. Спасибо.
 
A

Akupaka

есть одно могучее решение! регистратор должен быть ОДИН! :)
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Вот тут немного обсуждали, да и еще где то была тема.

Нет однозначного решения, если есть реплики базы то о сквозной нумерации по запросу(при сохранении документа) стоит забыть, если нет то обычно делают созданием некоторого файла в котором храниться счетчик, и оттуда агентом тягают значения)


selfar
А сколько у вас пользователей? Мб скрип получения номера из счетчика не оптимальный поэтому и повторы)
 
30.05.2006
1 345
12
BIT
0
У Домины база нереляционная, т.е. НЕтранзакционная.
А задача сквозной уникальной нумерации в общем случае не разрешима
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Ну можно попробовать вести два списка номеров. Точнее даже один дополнитеьный... первый - это основной список документов по номерам.
Второй список - это резерв номеров... например давать пользователю возможность резервировать номер при создании документа.
А собственно в момент резервирования проверять последний номер в основном списке и в резервном. тогда можно поробовать реализовать сквозную нумерацию
 
30.05.2006
1 345
12
BIT
0
Сквозную нумерацию можно обеспечить только "задним числом", когда ВСЕ (? как в этом убедиться?) док-ты соберутся в одном месте.
Или когда они изначально ВСЕ В ОДНОМ МЕСТЕ (на одном сервере). Не и тут не выйдет... Сквозная, но не последовательная получится
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Даже в децентрализованом варианте построения системы документооборота должно быть место где есть все документы.
Если речь идет о децентрализированой системе - то лучше заводить "журналы регистрации" в каждом отдельном подразделении...это сократит вероятность ошибки... и там уже реализовывать методы нумерации.
 
A

Akupaka

че не говорите, а мой метод самый лучший! один регистратор - и нет проблем :(
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
ну не все документы можно назначить одного регистратора :(
И, к сожалению, условия зачастую диктуются бизнесом - а не программистом
 
A

Akupaka

ну не все документы можно назначить одного регистратора :)
И, к сожалению, условия зачастую диктуются бизнесом - а не программистом
та не выдумывай :rolleyes: никакое бизнес ПО не делает больше чем в нем реализовал программер ;)
на каждый журнал регистрации (грубо говоря документ-счетчик) не более одного регистратора :rolleyes:
 
S

selfar

Спасибо всем за советы и идеи.

После длительного анализа и обсуждения различных вариантов реализации был найден довольно простой, но действенный способ на основании советов от IBM.



Основная идея решения - использование механизма управления конфликтами в своих целях :).
Вообще документ познавательный и содержит много интересных советов. Рекомендую к ознакомлению.
 
Мы в соцсетях:

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