Страница 1 из 1

Ахилесова пята...

Добавлено: 02 ноя 2006, 16:32
Александр
Подскажите кто знает?
Наша замечательная, шикарная настройка, которая легко позволяет творить с базой все что угодно - имеет один маленький но существенный недостаток в виде кнопки 'Del' и контекстного меню 'Добавить.../Удалить из проекта' применяемых на дереве проекта. И наши веселые пользователи так и норовят удалить что-нибудь из дерева проекта - внести так-сказать свой вклад в общее дело. :?

Как защитить дерево проекта от разрушения пользователем если это самое дерево создал он сам и по умолчанию является автором объектов??? да и вообще как отучить его от этой ужасной привычки - думать? :) когда за него все уже придумано :roll:

Этот вопрос неоднократно задавался на конференциях-но...
Как Вы решаете эту проблему? :wink:

Добавлено: 02 ноя 2006, 22:17
Старик Крупский
Мы - просто! Назначили наследуемые права так, чтобы проект мог расти, но не мог уменьшаться. Все права на проект дали кроме права на удаление.
Можно кнопку del выломать :-) И правую кнопку мыши :twisted:

Добавлено: 03 ноя 2006, 12:58
Александр
Это понятно, но вот-в чем проблема. Наша настройка эмулирует WorkFlow-действиями Party.
И кроме непреднамеренного вредительства со стороны пользователей в плане разрушения деревьев-некоторые наши действия производят самостоятельную, множественную перепревязку объектов меджу деревьями с удалением из одних и дбавлением в другие и все это в фоновом режиме(без вывода дерева на экран).
В связи с этим два вопроса:
1.-Можно ли считать два связанных объекта - деревом проекта если они НЕ отображаются на экране (т.е. не выведены в отдельное окно дерева проекта)? Соответственно действует ли в этот момент ограничение на удаление???? Или все ограничения действительны для конкретного открытого окна-дерево проектов???
2.-Если мы все-таки запретим удаление-как защиту от дурака, но в действиях нам тем не менее нужно это делать от имени пользователя. Что делать в этом случае?
Как физически работает сервер автопереходов -который может дать пользователю на время административные права?? Можно ли использовать эту возможность в Party?, если да- то как? Нужно в действии писать какую то функцию??? или что?

Не поможете разобраться :?

Добавлено: 03 ноя 2006, 19:50
Старик Крупский
Александр писал(а): 1.-Можно ли считать два связанных объекта - деревом проекта если они НЕ отображаются на экране (т.е. не выведены в отдельное окно дерева проекта)? Соответственно действует ли в этот момент ограничение на удаление???? Или все ограничения действительны для конкретного открытого окна-дерево проектов???
Безусловно! Если связь "деревянная", т.е. не горизонтальная, то это дерево.
Александр писал(а):2.-Если мы все-таки запретим удаление-как защиту от дурака, но в действиях нам тем не менее нужно это делать от имени пользователя. Что делать в этом случае?


Это сложнее. Нужно фантазировать... Например, вот что. Нужно сделать бизнес-правило (БП), которе будет проверять у объекта наличие какого-либо атрибута. По умолчанию этого атрибута нет. Соответственно, при удалении руками БП ласково пошлет пользователя :D А когда запускаем действие, то можно на первом шаге добавлять атрибут, а на последнем, после разрыва связи, удалять. Здоровски? Какой я умный! Сам себя не похвалишь - никто не похвалит :D Вот только в БП я не силен :roll:
Александр писал(а):Как физически работает сервер автопереходов -который может дать пользователю на время административные права?? Можно ли использовать эту возможность в Party?, если да- то как? Нужно в действии писать какую то функцию??? или что?


Сервер автопереходов используется в документообороте и выполняет все действия от имени администратора (или того пользователя, от имени которого он запущен). Соответственно, у админа есть все права и сервер автопереходов все замечательно проделывает.

Добавлено: 04 ноя 2006, 21:40
Anderyt
ух ты, неплохая идея про бизнес-правило :-) возможно, придется дополнительно использовать функцию update(), но в целом - ощущение такое, что должно сработать.
автосервер в этом плане тоже многое может, у него права (обычно) есть на все. единственное неудобство - для обработки какого-либо действия на автосервере нужно запустить работу. и пока эта работа дойдет до автосервера - пройдет какое то время. интерактивность будет страдать. но это тоже вариант. хотя и выглядит менее изящно, чем БП ;-)

Добавлено: 04 ноя 2006, 22:07
Старик Крупский
Вот в функции update собака как раз и порылась. Хорошо бы обойтись без нее. Т.к. если мы в начале сделали update, а потом пользователь нажал отмену, то атрибут так и останется и тогда можно будет руками все удалять. Короче, необходимость update надо проверять и хранить это в тайне от пользователей :lol:
Конечно, можно на автосервере запустить работку, которая в конце дня или утром будет проверять наличие этого атрибута у всех объектов и удалять его.
Вывод такой: все проверить, и если нельзя без update, принять обет молчания :P

Добавлено: 07 ноя 2006, 09:44
Александр
Интересная мысль :idea: Бизнес -правила как и документооборот мы отложили в долгий ящик, но возможно настало время... :)