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

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

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

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

ситуация такая
есть номер (в атрибуте)
есть действие которое прибавляет к этому номеру 1

проблема в том что пару раз сталкивались с тем что два юзера одновременно с разностью в пол секунды запускали это действие и получали одинаковый номер - что не совсем интересно спасал только 'хвост' id юзера из базы - иначе-бы не разошлись

вот собственно и вопрос как заблокировать/поставить на ожидание действие (или его часть) для всех если оно уже кем то запущено???

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

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

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

Сообщение Anderyt »

мы для уменьшения вероятности одинаковых номеров поступили следующим образом.
действие запускается, работает над чем то, а когда дело доходит до получения порядкового номера - получает его от определенного объекта и ТУТ ЖЕ обновляет счетчик, увеличивая его на 1. для этого используем update().
вероятность одинаковых номеров стала намного меньше (но они каикм то образом все таки встречаются, но ОЧЕНЬ-ОЧЕНЬ редко).
один из минусов - если отменить действие, которое уже успело получить свой порядковый номер, то номер пропадает, то есть выпадает из цепочки. какое то время объясняли юзерам, что это не страшно, вроде в итоге объяснили.
хотя конечно можно брать номер на шаге, после которого уже сложно отменить действие (когда например остались только автоматические шаги).. тогда и вероятность пропусков тоже уменьшится..
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

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

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

номер ставим на последнем шаге вместе с Update
читаем правда на предпоследнем
....
может шаг все-же является 'изолированной' (однозадачной) конструкцией???
попробую 2 in 1 :wink:

к сожалению (к счастью) у нас это тоже случалось крайне редко - 2-3 раза за всю историю
так что результат увижу (если увижу) не скоро

ps
а может попросить добавить функции под это дело??? для блокировки шага/шагов?

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

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

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

Сообщение Anderyt »

да кто его знает..
тоже ломал голову, как такое может быть, что одинаковые номера все же появлялись..
раньше было без update - вот была веселуха! :-)
если 2-е действие запустить, когда первое еще не выполнено, то они схватывают один и тот же номер и используют его :-)
но с update вроде стало намного правильнее..
думаю, можно стремиться к приближению attribget, attribset и update друг к другу, чтобы между ними было как можно меньше времени (в одном шаге хотя бы).. надеясь на транзакционность работы сервера БД можно надеяться, что совсем одновременно данные не смогут записаться...
но с другой стороны.. надежнее было бы рассматривать получение номера, увеличение счетчика и обновление счетчика как одну транзакцию.. вот тогда было бы да..
сейчас вроде шаг с тремя функциями не моежт считаться одной транзакцией...
вот блин... в такие моменты я невольно вспоминаю форум Касперского.. там пользователи так же задают вопросы, думают, обсуждают решение... но там время от времени в беседу включаются сотрудники Касперского..
а здесь почему не так???
гадаем тут что то... как да как... :-(
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

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

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

а что гадать :wink: техподдержка здесь не отвечает - так что в развитие переведем - туда как никак заглядывают люди принимающие решения :wink: :wink: :wink:
а вдруг? :wink: :wink:

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

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

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

Сообщение Anderyt »

Александр писал(а):а что гадать техподдержка здесь не отвечает
дак вот это и плохо..
я конечно догадываюсь, что других проблем хватает..
но это смотря как смотреть на ЭТУ проблему.
если просто как общение на приближенные к Лоции темы - то наверное на самом деле Николай Викторович прав, когда грозится премии лишить..
но если осуществлять здесь техподдержку - это совсем другое дело..
то ли в письмах одно и тоже всем рассказывать и показывать, то ли один раз на форуме все разжевать и потом пусть народ сам ищет (или хотя бы ссылки кидать в ответ)..
и кроме того, ведь письма не все пишут.. кто нить наверное просто сидит, бьется и корпит над Лоцией, и ругает ее про себя, типа "непонятная, сложная и все такое", а все потому, что не знает, как ей пользоваться.. а зачем нужны такие клиенты с такой антирекламой? лучше их переубедить, чтобы по-нормальному рекламировали.. ;-)
лучше день потерять, потом за пять минут долететь!
Admin_PLM_Board
Site Admin
Сообщения: 391
Зарегистрирован: 18 июн 2004, 17:53
Используемое ПО: Lotsia PLM

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

Сообщение Admin_PLM_Board »

Господа, если вы хотите получать ответы на вопросы по технической поддержке, следует отправлять их по электронной почте.
Ещё раз уточняем, что официальная техподдержка в форуме не отвечает. Форум служит для общения пользователей.
Anderyt писал(а):и кроме того, ведь письма не все пишут.. кто нить наверное просто сидит, бьется и корпит над Лоцией, и ругает ее про себя, типа "непонятная, сложная и все такое", а все потому, что не знает, как ей пользоваться.. а зачем нужны такие клиенты с такой антирекламой? лучше их переубедить, чтобы по-нормальному рекламировали.. ;-)
Необходимые дополнительные разъяснение относительно "антирекламы".
Как вы знаете, мы - в отличие от наших коллег из некоторых других компаний-разработчиков - не удаляем критические замечания из сообщений на этом форуме. Более того, мы не удаляем критические замечания не только пользователей, но и наших партнёров, хотя они и несколько нарушают иной раз своими высказываниями правила деловой этики.

Но если человек не пишет в техподдержку, а потом начинает ругаться на форуме, что "всё плохо", - наверное, это не очень правильно. Также, вероятно, не очень корректно сначала получать помощь от техподдержки, а потом критиковать её, вырывая фразы и события из контекста. Так что необоснованные замечания и ругань мы будем удалять.

Разумеется, нам не хотелось бы, чтобы форум превращался в "стену плача". Но если вы настаиваете, мы легко пересмотрим нашу политику в этой части. И будут у нас публиковаться только "позитивные" сообщения. ;)

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

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

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

Выход из данной ситуации такой - создать свою табличку и в ней хранить значения
счетчиков. При считывании значения делать это командой SQL с установкой блокировки
наращивать значение и отпускать таблицу.
При таком подходе если кто-то в момент установленной блокировки попытается
считать значение - он будет ожидать конца блокировки, и только после этого получит значение.

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

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

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

вот эту бы блокировку и вынести в виде пары функций Party - для шага или действия в целом
....
неохота опять в SQL залезать :wink: :wink: :wink: и так уже много своих xp и видов создали :wink: теперь уже избавляемся от них понемногу... функционала Лоции достаточно на 90% наших задач, в остальном - лучше изменим свою структуру данных :wink: :wink: :wink: и выдвинем пару предложений на развитие

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

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

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

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

Если вы хотите заблокировать действие - это еще проще:
Для этого нам необходимо создать общую временную таблицу во время запуска действия.

1. при запуске действия проверяем есть ли таблица, если нет создаем ее (таблица вида ##имя MSSQL)
2. далее проверяем есть ли в ней признак что это действие необходимо блокировать, если есть - зацикливаемся
до пропадания данного признака.
Далее добавляем этот признак и делаем свои действия. Перед выходом из действия
убираем признак.

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

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

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

Александр писал(а):вот эту бы блокировку и вынести в виде пары функций Party - для шага или действия в целом
....
Если блокировать атрибуты Лоции - повиснет она у всех...
Александр писал(а):лучше изменим свою структуру данных :wink: :wink: :wink: и выдвинем пару предложений на развитие
Вот я и предлагаю свою структуру. А реализацию предложений для развития можно и не дождаться... :wink:
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

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

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

хотелось конечно базовым функционалом - я например второй раз не смогу погрузиться в SQL настолько чтобы понять как же он работает :wink: :wink: :wink: - не мое

а развитие - идет и в лучшую сторону :wink: :wink: :wink:
ps
вот только последнего обновления хочется дождаться уже в этом году или хотя-бы интересующей меня части :wink: :wink: :wink:

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

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

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

Сообщение Anderyt »

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

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

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

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

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

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

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

а можно из действия проверить запущено ли это действие другими?? и если да то подождать в самом действии запуская запросы на проверку занятости?

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

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

Ответить