Как можно блокировать действие или шаг действия?
- Александр
- Активный участник
- Сообщения: 1658
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Re: Как можно блокировать действие или шаг действия?
мы опять стали налетать на двойные номера.... (2 одинаковых из 2000 сформированных) разница в захвате - доли секунды
правда для нас не очень принципиально - поскольку мы разруливаем через 'хвостики' юзеров - типа номер+тире+id юзера
(для нулевого филиала - все ок - для остальных страшновато конечно - оч много нулей в id юзера, - но это тоже решаемо)
сейчас/сегодня перешли на совет СК - действие из действия (посмотрим что будет)
1. передать в действие - объект содержащий номер
2. передать в действие - атрибут содержащий номер
3. в действии - чтение атрибута
4. в действии - запись атрибута с инкременом
5. в действии - Update
6. вернуть из действия номер
а у вас как дела с этим - по какому пути пошли?
как Disillusioned или как Юрий или как СК?
правда для нас не очень принципиально - поскольку мы разруливаем через 'хвостики' юзеров - типа номер+тире+id юзера
(для нулевого филиала - все ок - для остальных страшновато конечно - оч много нулей в id юзера, - но это тоже решаемо)
сейчас/сегодня перешли на совет СК - действие из действия (посмотрим что будет)
1. передать в действие - объект содержащий номер
2. передать в действие - атрибут содержащий номер
3. в действии - чтение атрибута
4. в действии - запись атрибута с инкременом
5. в действии - Update
6. вернуть из действия номер
а у вас как дела с этим - по какому пути пошли?
как Disillusioned или как Юрий или как СК?
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
Re: Как можно блокировать действие или шаг действия?
а запуск еще одного действия - это принципиально лучше?
те же шаги можно провернуть и в одном действии, обставив нужный блок Update'ом..
или нет?
те же шаги можно провернуть и в одном действии, обставив нужный блок Update'ом..
или нет?
лучше день потерять, потом за пять минут долететь!
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Как можно блокировать действие или шаг действия?
У нас просто реализованно. Уникальные номера по порядку у нас только в одном модуле используются.
Мы завели таблицу счетчик и при первом обращении выставляем блокировку на уровне БД.
Это гарантирует что значение из таблицы может считать только один пользователь. Затем идет
наращивание счетчика и разблокировка по завершении транзакции. Все проблемы нет.
Мы завели таблицу счетчик и при первом обращении выставляем блокировку на уровне БД.
Это гарантирует что значение из таблицы может считать только один пользователь. Затем идет
наращивание счетчика и разблокировка по завершении транзакции. Все проблемы нет.
- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
Re: Как можно блокировать действие или шаг действия?
ух ты.. блокировка на уровне БД - это каким образом?
лучше день потерять, потом за пять минут долететь!
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Как можно блокировать действие или шаг действия?
Прочитай про команду SET TRANSACTION ISOLATION LEVEL для MsSQLAnderyt писал(а):ух ты.. блокировка на уровне БД - это каким образом?
- Александр
- Активный участник
- Сообщения: 1658
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Re: Как можно блокировать действие или шаг действия?
>Anderyt
а в БД честно говоря неохота программировать
ps
хотя штук 30 своих процедур и функций активно используются- в основном для поиска и отчетов и списков - но не для чего более
ну типа СК говорил что это отдельная транзакция... вроде вероятность меньше, наверноа запуск еще одного действия - это принципиально лучше?
а в БД честно говоря неохота программировать

ps
хотя штук 30 своих процедур и функций активно используются- в основном для поиска и отчетов и списков - но не для чего более
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Как можно блокировать действие или шаг действия?
А без БД никак не получиться, для этого и был придуман механизм блокировок.
Или можно идти по пути лоции (генерация ид). Т.е. для каждого пользователя свой диапазон номеров.
Т.е. счетчиков столько, сколько пользователей.
Или перейти на GUID, если это подходит по смыслу. Тут вообще ничего контролировать ненадо.
Или можно идти по пути лоции (генерация ид). Т.е. для каждого пользователя свой диапазон номеров.
Т.е. счетчиков столько, сколько пользователей.
Или перейти на GUID, если это подходит по смыслу. Тут вообще ничего контролировать ненадо.
- Александр
- Активный участник
- Сообщения: 1658
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Re: Как можно блокировать действие или шаг действия?

хоть мы и без техподдержки - но я все равно питаю иллюзию что далеко 'от Лоции отходить' не стоит...
ведь только перейдешь черту - и понеслась душа в рай...

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Как можно блокировать действие или шаг действия?
Дело в том, что в Лоции не реализован механизм блокировки необходимых данных.
А база работает в многопоточном режиме и поэтому нет гарантии, что данные считанные
разными клиентами не совпадут.
Даже в программировании многопоточных задач реализован механизм блокировки для
сохранности целостности данных. Но автоматически это не работает.
Поэтому программист сам должен решать к каким данным установить последовательный доступ.
При не правильной реализации блокировок можно полностью потерять мультизадачность.
И кто говорит что надо именно в базу лоции добавлять счетчик. Это может быть
абсолютно любая база хоть MySQL.
А доступ к ней осуществлять через скрипт.
А база работает в многопоточном режиме и поэтому нет гарантии, что данные считанные
разными клиентами не совпадут.
Даже в программировании многопоточных задач реализован механизм блокировки для
сохранности целостности данных. Но автоматически это не работает.
Поэтому программист сам должен решать к каким данным установить последовательный доступ.
При не правильной реализации блокировок можно полностью потерять мультизадачность.
И кто говорит что надо именно в базу лоции добавлять счетчик. Это может быть
абсолютно любая база хоть MySQL.
А доступ к ней осуществлять через скрипт.