Как можно блокировать действие или шаг действия?

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Как можно блокировать действие или шаг действия?

Сообщение Александр »

мы опять стали налетать на двойные номера.... (2 одинаковых из 2000 сформированных) разница в захвате - доли секунды
правда для нас не очень принципиально - поскольку мы разруливаем через 'хвостики' юзеров - типа номер+тире+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: Как можно блокировать действие или шаг действия?

Сообщение Anderyt »

а запуск еще одного действия - это принципиально лучше?
те же шаги можно провернуть и в одном действии, обставив нужный блок Update'ом..
или нет?
лучше день потерять, потом за пять минут долететь!
Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Re: Как можно блокировать действие или шаг действия?

Сообщение Юрий »

У нас просто реализованно. Уникальные номера по порядку у нас только в одном модуле используются.
Мы завели таблицу счетчик и при первом обращении выставляем блокировку на уровне БД.
Это гарантирует что значение из таблицы может считать только один пользователь. Затем идет
наращивание счетчика и разблокировка по завершении транзакции. Все проблемы нет.
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: Как можно блокировать действие или шаг действия?

Сообщение Anderyt »

ух ты.. блокировка на уровне БД - это каким образом?
лучше день потерять, потом за пять минут долететь!
Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Re: Как можно блокировать действие или шаг действия?

Сообщение Юрий »

Anderyt писал(а):ух ты.. блокировка на уровне БД - это каким образом?
Прочитай про команду SET TRANSACTION ISOLATION LEVEL для MsSQL
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Как можно блокировать действие или шаг действия?

Сообщение Александр »

>Anderyt
а запуск еще одного действия - это принципиально лучше?
ну типа СК говорил что это отдельная транзакция... вроде вероятность меньше, наверно
а в БД честно говоря неохота программировать :wink:

ps
хотя штук 30 своих процедур и функций активно используются- в основном для поиска и отчетов и списков - но не для чего более

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Re: Как можно блокировать действие или шаг действия?

Сообщение Юрий »

А без БД никак не получиться, для этого и был придуман механизм блокировок.
Или можно идти по пути лоции (генерация ид). Т.е. для каждого пользователя свой диапазон номеров.
Т.е. счетчиков столько, сколько пользователей.
Или перейти на GUID, если это подходит по смыслу. Тут вообще ничего контролировать ненадо.
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Как можно блокировать действие или шаг действия?

Сообщение Александр »

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

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Re: Как можно блокировать действие или шаг действия?

Сообщение Юрий »

Дело в том, что в Лоции не реализован механизм блокировки необходимых данных.
А база работает в многопоточном режиме и поэтому нет гарантии, что данные считанные
разными клиентами не совпадут.
Даже в программировании многопоточных задач реализован механизм блокировки для
сохранности целостности данных. Но автоматически это не работает.
Поэтому программист сам должен решать к каким данным установить последовательный доступ.
При не правильной реализации блокировок можно полностью потерять мультизадачность.

И кто говорит что надо именно в базу лоции добавлять счетчик. Это может быть
абсолютно любая база хоть MySQL.
А доступ к ней осуществлять через скрипт.
Ответить