Геройчиковый » 10 апр 2012 15:26
"можно в методе в явном виде написать, для каких объектов должна отображаться кнопочка, задав этот список файлом, таблицей в базе и т.п." - естественно так делать ни в коем случае нельзя. Система должна жить сама, без вмешательства, а задавая такие вот списки - мало того, что этому противоречит, так ещё и превращает поддержку системы в ужос. В общем, вы это и так знаете.
А я имел в виду не это.
Я имел в виду, что именно ограничения по классу, как вы их называете, и должны быть теми условиями, когда объект виден/редактируем/и т.п., а когда нет.
Привожу пример:
когда объект в состоянии Approved имеет незавершённый роут в котором проверяющий Иванов И.И. (начальник отдела) - тогда этот объект не должен быть виден всем людям его отдела за исключением Петрова П.П. (создатель объекта, подчинённый Иванова).
Так вот такую вещь можно решить триггерами и грантами,а можно, все эти перечисленные мною условия, с лёгкостью засунуть в Access Function, только Иванова заменяя на роль Head Department а Петрова на originator. И это будет справедливо для этого объекта, для аналогичных, а также для подобных объектов но для других отделов.
В общем я хочу сказать, что все условия видимочти/невидимочти объекта можно сформулировать применительно к классу. И нет необходимости делать это персонально для каждого объекта. Прсото надо посидеть и подумать, как поточнее эти условия выявить.
А в триггеры забить не вариант, потомучто это почти что как "в методе в явном виде написать, для каких объектов должна отображаться кнопочка, задав этот список файлом, таблицей в базе и т.п." только в другой плоскости. Да и потом этих триггеров наплодиться столько, что сами запутаетесь. И замучаетесь потом выяснять почему кто-то имеет доступ, а кто-то нет.
Используйте Роли и Группы более гибко. И уже на их основе выделяйте условия, которые применимы к классу. Чтобы вся системы автоматически всё делала.
Будь у героев время подумать - героизма не было бы вовсе...
Все люди, занятые истинно важным делом, всегда просты, потому что не имеют времени придумывать лишнее. (Лев Николаевич Толстой)
Делай, что можешь, с тем, что имеешь, там, где ты есть. (Теодор Рузвельт)