|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
Пишу фреймворк для создания бизнес приложений на Qt/C++/PostgreSQL . Создание и редактирование справочников, документов, периодических реквизитов, и т.д. по типу 1С Предприятия работают. Дошло до организации многопользовательской работы. Как в таких случаях осуществляются в блокировки открытых пользователями документов, чтобы исключить одновременное редактирование несколькими пользователями? Можно хранить информацию о заблокированных объектах в самой БД, в какой либо таблице. Но может есть другие, более надежные варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2009, 10:14 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
блокировки в этих случаях можно не применять - пусть разные пользователи редактируют себе сохранение разрешать только первому (перед сохранением проверять timestamp) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2009, 19:02 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
Приведи пример, зачем в бизнес-системе нужно одновременное редактирование одного и того же реквизита одного и того же документа или справочника. И при этом такое редактирование критически недопустимо. Вот открыли 2 юзера один и тот же документ (уже созданный). Вот оба видят на экране все его, к примеру, 20 реквизитов. Один исправил 2 реквизита, второй - 3 реквизита. От одного ушел update двух полей, от другого - update 3 полей. Вот зачем тут блокировка ? Юзеры-то в реальности решают разные задачи (и исправлять будут разные реквизиты). А если одну и ту же - то кто ж им доктор - кто последний - того и правда. PostgreSQL - версионник. Поверь моему богатому опыту. Не применяй вообще блокировки в бизнес-системах на PostgreSQL - и будет тебе счастье. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2009, 19:09 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
strizh, помогите советом-как без блокировки решить задачу: несколько пользователей интенсивно выписывают товар. при вводе кода товара считаю остатки(с группировкой по цене, партии) на этот момент, пользователь выбирает нужный вариант, вводит количество - в пределах остатка при сохранении блокирую таблицу, еще раз считаю остаток по выбранному варианту, если другие пользователи товар не увели-пишу, снимаю блокировку так я делаю на Foxpro как быть с sql-сервером? думаю, автору тему тоже будет интересно... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2009, 19:25 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
Мне показался самым подходящим именно вариант - "кто успел, тот и съел". Т.е. кто первый, тот успел записать, остальным отказ. Т.к. у меня предусмотрено поле для записи даты/времени изменения документа, то получится. При открытии документа считываем, если к моменту сохранения она не изменилась (т.е никто не изменил), то можем записывать. Меня самого поведение 1С с блокировками документов и справочников достало, и как там делать не хотелось. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2009, 20:19 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
skmdeveloperКак в таких случаях осуществляются в блокировки открытых пользователями документов, чтобы исключить одновременное редактирование несколькими пользователями? Как в смысле "когда"? При открытии формы документов. Но форму в 1С можно открыть в 2-х режимах: - редактирования (тут идет блокировка) и - просмотра; это полезно и часто используется. skmdeveloperМожно хранить информацию о заблокированных объектах в самой БД, в какой либо таблице. И можно и нужно, полезно для анализа что заблокировано, когда юзверь не дай бог вылетит. на счет системы блокировок, не забывай, что есть не только документы, но и справочники и т.п. Блокировками лучше всего управлять. Есть пачка мыслей по этому поводу, исходя из моего личного опыта. Могу поделиться, если выйдешь в аську. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2009, 20:47 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
trdmskmdeveloper [quot skmdeveloper]Можно хранить информацию о заблокированных объектах в самой БД, в какой либо таблице. И можно и нужно, полезно для анализа что заблокировано, когда юзверь не дай бог вылетит. пусть сама СУБД занимается блокировками и вылетевшими юзерами - она для этого и существует про отвалившегося пользователя СУБД узнает в первую очередь, и сама снимет блокировку ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2009, 21:58 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
vill_agertrdmskmdeveloper [quot skmdeveloper]Можно хранить информацию о заблокированных объектах в самой БД, в какой либо таблице.И можно и нужно, полезно для анализа что заблокировано, когда юзверь не дай бог вылетит.пусть сама СУБД занимается блокировками и вылетевшими юзерами - она для этого и существует про отвалившегося пользователя СУБД узнает в первую очередь, и сама снимет блокировку СУБД не знает, как работать с блокировками, она их просто обслуживает. Управлять блокировками должен разработчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2009, 10:27 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
trdmУправлять блокировками должен разработчик. если не сложно - раскройте тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2009, 12:18 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
skmdeveloper, вообще то, фреймворк - это конструктор. Если пишите для себя, то ещё можно выбрать 1тип блокировок. Но вот если на продажу, то конструкто должен обеспечивать все возможные способы (логические, физические, на строку, на документ, на атрибут, на временную метку, на ....) Так что пишите под задачу, т.к. все случаи конструктора вы не опишите. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2009, 09:39 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
Как правило в моей практике полезны были 2 типа блокировки при редакции документов. Первый - когда документ блокируется при входе пользователя (более детальный вариант - поле при изменении пользователем), остальным желающим редактировать документ, выдается сообщение о блокировке (обязательно надо сообщать, кто заблокировал). Вариант 2 - практическое отсутствие блокировок, и последующие громкие разборки с пользователями "почему я туда ввела 5, а получилось 4". С ограничениями по рассчитываемым данным все сложнее, тут все зависит от "политики партии". Блокировать ввод на уровне полных документов обычно недопустимо, поэтому стоит либо делать сначала микрозапрос на временное резервирование по вводимому показателю (более пользовательски-дружественный вариант), либо после полного ввода документа делать проверку и давать отказ в случае "успевания" другим пользователем. Блокировки либо стоит делать с помощью СУБД, либо внимательно следить за транзакциями, чтобы при "нештатном" вылете пользователя не осталось неснятых блокировок. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2009, 09:04 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
Банально: Таблица блокированных д-тов. Перед открытием проверяем, есть ли д-т в списке. Если нет, то добавляем список и открываем документ "на запись". Если уже есть, то открываем "только на чтение". По выходу с редактирования удаляем из списка. Периодически сверяем этот список с активными юзерами. Если юзер числится в списке, но его нет в активных п-лях (отвалился) - удаляем "занятые им" строки. Запросто рулится одной простой ХП. Не зависит от платформы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2009, 11:49 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
Mik ProkoshinКак правило в моей практике полезны были 2 типа блокировки при редакции документов. есть еще очень полезный вариант №3 , суть которого заключается в организации бизнес-процессов обработки документов, распределении полномочий и разгребания "каши", в которой, зачем-то, 2 (и более) пользователя сталкиваются лбами при редактировании одного и того же документа. Отсюда и придумываются всякие изощренные средства блокировок, пишутся тонны ненужного кода и т.д. и и т.п. Mik Prokoshinотсутствие блокировок, и последующие громкие разборки с пользователями "почему я туда ввела 5, а получилось 4". Если внимательней посмотреть на эту ситуацию, то сразу же всплывает вся ее абсурдность. А абсурд заключается в том, что подобный вопрос возникнет и через секунду после снятия блокировки и изменения только что разблокированного документа другим пользователем. Счастье оказывается мимолетным. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2009, 12:08 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
iscrafmесть еще очень полезный вариант №3 , суть которого заключается в организации бизнес-процессов обработки документов, распределении полномочий и разгребания "каши", в которой, зачем-то, 2 (и более) пользователя сталкиваются лбами при редактировании одного и того же документа. Отсюда и придумываются всякие изощренные средства блокировок, пишутся тонны ненужного кода и т.д. и и т.п. Абстрактно бизнес-процессы могут регламентировать многое, но не вс е и не всегда могут жить только по расписанным "процессам". Например, типичный случай "сталкивания лбами" - когда надо массово отредактировать справочник. Это нештатная ситуация, но иногда бывает. И при этом бывают коллизии, как бы люди не пытались вручную распределить обязанности. И в решении этих коллизий помогают блокировки. Точно так же стандартный вариант, когда документ имеют право редактировать работники отдела, которые договориться между собой не смогли. И т.д. iscrafmMik Prokoshinотсутствие блокировок, и последующие громкие разборки с пользователями "почему я туда ввела 5, а получилось 4". Если внимательней посмотреть на эту ситуацию, то сразу же всплывает вся ее абсурдность. А абсурд заключается в том, что подобный вопрос возникнет и через секунду после снятия блокировки и изменения только что разблокированного документа другим пользователем. Счастье оказывается мимолетным. Если у пользователя, когда он входит в документ (начинает редактировать поле), сразу высвечивается - "документ занят Ивановой И.И.", то он сразу понимает, что что-то не то и выясняет, все-таки нормальные люди работают! Если же этот пользователь потом все равно меняет этот документ с последующими разборками, то таких случаев уже бывает на порядок меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2009, 12:39 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
Mik ProkoshinНапример, типичный случай "сталкивания лбами" - когда надо массово отредактировать справочник. Это нештатная ситуация, но иногда бывает. пример неудачный. Ситуация штатная вполне. С блокировками, превращается в садо-мазо игры между системой и пользователем. Особенно когда пакет достаточно объемный и один человек занимается прописыванием массо-габаритных параметров, к примеру, а другой параметров ГТД в номенклатурном справочнике. Эта ситуация и ситуация описанная ниже - более чем наиграны. Это все равно что резервировать в момент ввода документа. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2009, 12:48 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
Используйте интерфейс, аналогичный системам управления задачами. Никогда не возникнет необходимость в блокировках. Каждый документ в один момент может быть только у одного пользователя. Это и в жизни так же. Можете себе представить, что двое человек записывают данные в один листочек? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2009, 17:17 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
iscrafmЭта ситуация и ситуация описанная ниже - более чем наиграны. Это все равно что резервировать в момент ввода документа.Бывает и такое. Например он-лайн продажа билетов или быстрооборачиваемых товаров. Один товарный документ может набираться долго. При этом недопустимо, чтоб после того как набор окончен, вдруг оказалось, что внесенного товара уже нет на складе. Иначе придется снова садиться и подбирать аналог товара или корректировать документ. ЗЫ: встречал ситуацию на оптовом складе (продукты). Барыги беседуют с менеджерами и заказывают по 30-50 различных позиций. Иногда, когда желаемого товара нет или мало, берут близкие аналоги (масло, водка, кетчупы, консервы и пр.). Первое время без онлайн резервирования менеджеры и клиенты просто выли. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2009, 18:26 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
Old NickИспользуйте интерфейс, аналогичный системам управления задачами. Никогда не возникнет необходимость в блокировках. Каждый документ в один момент может быть только у одного пользователя. Это и в жизни так же. Можете себе представить, что двое человек записывают данные в один листочек? Думаю это правильный взгляд на вещИ. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2009, 18:50 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
LSVОдин товарный документ может набираться долго. При этом недопустимо, чтоб после того как набор окончен, вдруг оказалось, что внесенного товара уже нет на складе. резервируется конкретный товар или конкретный билет или конкретное место в кинотеатре. Долго набирается документ, но не резерв. Резерв - после ввода каждой позиции (см. рис. пример). Я как раз и имел ввиду ту ситуацию, когда документ из 500 позиций неспеша набирается, а потом резервируется. При активной конкуренции за ресурсы конечно половина отлетит. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2009, 18:55 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
iscrafm резервируется конкретный товар или конкретный билет или конкретное место в кинотеатре. Долго набирается документ, но не резерв. Резерв - после ввода каждой позиции (см. рис. пример). Я как раз и имел ввиду ту ситуацию, когда документ из 500 позиций неспеша набирается, а потом резервируется. При активной конкуренции за ресурсы конечно половина отлетит. С вами согласен, сам не использую блокировки. Но есть сомнения по поводу "правильно ли это". Очень интересно сравнить с фронт-офисными приложениями (кроме 1С конечно). Если располагаете информацией, поделитесь плиз. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2009, 03:34 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
iscrafmLSVОдин товарный документ может набираться долго. При этом недопустимо, чтоб после того как набор окончен, вдруг оказалось, что внесенного товара уже нет на складе. резервируется конкретный товар или конкретный билет или конкретное место в кинотеатре. Долго набирается документ, но не резерв. Резерв - после ввода каждой позиции (см. рис. пример). Mik ProkoshinС ограничениями по рассчитываемым данным все сложнее, тут все зависит от "политики партии". Блокировать ввод на уровне полных документов обычно недопустимо, поэтому стоит либо делать сначала микрозапрос на временное резервирование по вводимому показателю (более пользовательски-дружественный вариант), либо после полного ввода документа делать проверку и давать отказ в случае "успевания" другим пользователем. Ну и о чем спорим ? Об одном и том же ? Я просто четко понимаю, что в размеренной жизни всегда бывают хаотичные форс-мажорные ситуации, от которых никто не застрахован. И в этом случае помогать должны блокировки. Исключать подобный форс-мажор означает заведомо ставить потребителя в ситуацию, когда начальник сказал - сделать срочно, а он оправдывается, "да вроде сделали, только получилась какая-то фигня, разбираемся вот...". Опять же, тот, кто говорит о "заранее прописанных бизнес-процессах", сильно недооценивает роль "волевого руководства" и "форс-мажора", которые у нас сильно распространено. Кроме того, существуют еще и служебные блокировки для синхронизации при расчетах, типа как в 1С, о которых мы пока умалчиваем. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2009, 09:28 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
vak_200566iscrafm резервируется конкретный товар или конкретный билет или конкретное место в кинотеатре. Долго набирается документ, но не резерв. Резерв - после ввода каждой позиции (см. рис. пример). Я как раз и имел ввиду ту ситуацию, когда документ из 500 позиций неспеша набирается, а потом резервируется. При активной конкуренции за ресурсы конечно половина отлетит. С вами согласен, сам не использую блокировки. Но есть сомнения по поводу "правильно ли это". Очень интересно сравнить с фронт-офисными приложениями (кроме 1С конечно). Если располагаете информацией, поделитесь плиз. не представляю, как можно зарезервировать товар без блокировки ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2009, 17:55 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
vill_ager не представляю, как можно зарезервировать товар без блокировки Так же, как можно предоставить пользователю править запись, не гарантируя ему, что он сможет её сохранить... Зарезервировать товар без блокировки можно. А вот гарантированно, быстро и производительно зарезервировать товар без блокировки при большом скоплении желающих - гораздо сложнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2009, 19:06 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
vill_agerне представляю, как можно зарезервировать товар без блокировки это забота СУБД. Образно: Код: plaintext
qty - резервируемое количество onhandqty - доступное количество ограничение: resqty <= onhandqty. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2009, 20:10 |
|
Блокировки справочников и документов.
|
|||
---|---|---|---|
#18+
АнатоЛой Так же, как можно предоставить пользователю править запись, не гарантируя ему, что он сможет её сохранить... это уже не есть резервирование АнатоЛой А вот гарантированно, быстро и производительно зарезервировать товар без блокировки при большом скоплении желающих - гораздо сложнее... сложнее... - как? или все-таки нельзя? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2009, 20:48 |
|
|
start [/forum/topic.php?fid=33&tid=1547512]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 278ms |
0 / 0 |