Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
Всем доброго самочувствия. Заранее прошу извинить за многословие и наличие "абстрактной шелухи", прошу сильно не пинать. Ситуация, с которой наверняка сталкивалось множество из присутствующих здесь спецов: 1) есть пользователи с достаточно чёткими должностными ограничениями на просмотр/изменение чего-нить; пользователи, как правило, объединены понятием "ДОЛЖНОСТЬ" ("подразделение", "роль"); 2) есть некие сущности, с которыми работают эти пользователи (например, изделия склада, контрагенты (покупатели/поставщики/сотрудники), деньги, трудозатраты, ...) 3) есть атрибуты сущностей (названия, артикулы, цены закупочные и розничные для изделий; реквизиты для контрагентов, и т.д и т.п.) 4) есть операции над сущностями (ИЗМЕНЕНИЕ цены розничной или места хранения какого-либо изделия; ОТГРУЗКА товара со склада и перевод документа в разряд недоступных для дальнейших изменений; ОБЪЕДИНЕНИЕ балансов двух контрагентов; много еще чего). Программная система должна предоставлять для некоторого пользователя какой-то конкретной должности при работе над "сущностью" какого-то конкретного вида РОВНО столько информации (возможностей), сколько: ( 1) ему положено по должностным обязанностям этого бизнес-процесса; {OR} 2) ему ДОПОЛНИТЕЛЬНО РАЗРЕШЕНО "за то, что умный" ) AND 3) он НЕ находится в списке тех, кому ЗАПРЕЩЕНО "за то, что глупый" AND 4) может быть представлено атрибутами "сущности", с которой он сейчас работает (напр., для "Контрагента" не может быть понятия "Место хранения" (если это не вытрезвитель, конечно :)) {AND} 3) допустимо в текущем СОСТОЯНИИ сущности (напр., в документе склада со статусом "Отгружен" нельзя менять никаких данных, касающихся его содержимого; однако можно менять данные, касающиеся его оплаты) {AND} 4) допустимо (сейчас) с точки зрения... администратора БД(!) Потому что иногда ОЧЕНЬ надо, чтобы база была доступна всем, но только на ЧТЕНИЕ. {AND} 5) еще чего-нибудь, что знаете Вы лично. Возможности пользователя выражаются в наборах операций, которые он видит (например, в виде PullDown-меню, панелей инструментов etc). А информация, чаще всего, представлена в виде таблиц ("гридов", "вьюх", кому как нравится) с теми столбцами, которые он, юзверь ЭТОЙ ДОЛЖНОСТИ, имеет право смотреть. Для меня совершенно очевидно, что все эти "менюхи да вьюхи" должны жить в БД. Может, это спорный взгляд, но когда у тебя 10 должностей с ОЧЕНЬ разными обязанностями и правами (уровнем допуска) и 15 разных видов документов (и очень многие -- с разными наборами состояний, которые надо автом. отслеживать и отображать), то я не представляю, как это всё хранить "на клиенте". Но тогда для записи всех возможных вариантов этих "менюх+вьюх" потребуется "ну очень" много дней и, возм., ночей, т.к. встаёт зловещая тень "декартова произведения" справочников "Должности", "Виды состояний сущностей", "Атрибуты сущностей" и "Операции над сущностями". В голове периодически возникают мутные мысли о наследовании, но не более того (да и какое наследование можно сделать с помощью таблиц?) Догадываюсь, что народ как-то решает эту задачу. Как ? Всем ответившим заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 01:49 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
Так и делается во многих системах - вся административная информация лежит в базе. Возьмите какую-нибудь реальную систему и посмотрите . Рассказывать слишком долго. Полезно еще иметь понятие Автор документа (раздела справочника, операции и т.д.) и соответсвенно различать права на свои и чужие объекты. Не забудьте также права администрирования - на функции раздачи прав и информацию о правах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 09:44 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
Да, еще про наследование - Вы сами сказали что субъектом прав у вас может быть и человек и группа пользователей (должность). Т.е. пользователь наследует права всех групп, членом которых является. Также можно поступить и с объектами - классифицировать документы по видам например. Право на документ есть, если есть право хотя бы на один из видов, к которым он отнесен. Запрещения я бы не стал вводить - только разрешения. Права отсутвуют, если не определены явно. Форма определения конечно может включать что-то типа "все платежки кроме налоговых". Результатом вычисления определения является список ИД платежек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 09:55 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
По поводу запрещений и разрешений: у меня для данных действует принцип "все запрещено, что не разрешено", а для интерфейса в целях экономии времени при настройке - "разрешено то, что не запрещено" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 11:00 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
ModelR Возьмите какую-нибудь реальную систему и посмотрите Дык реальная система у меня есть, я её сам сбацал несколько лет назад и она успешно крутится на достаточно большом предприятии. Только вопрос о реализации "менюх+вьюх" для всех ячеек пересечения множеств (должностей/видов документов/состояний/...) решён был просто топорно, "в тупую": на каждую такую "ячейку" в БД создавались отдельные строки и всё описывалось "с нуля". Не бейте только, господа: времени на обдумывание просто не было, надо было делать ОЧЕНЬ быстро. Соотв-но, и повторов получилось неимоверное число, один и тот же код (синтаксис вызовов, описания, текстовые строки) хранится в десятках (сотнях!) строк. И хотя обновлять что-то в этой куче достаточно просто (это же таблицы, а не исходники!), всё равно не покидает ощущение, что "что-то не так". Можно было бы, уверен на 1000%, сделать поизящнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 11:03 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
По поводу страшных таблиц: у меня система СКД (контроля доступа) состоит из 60 таблиц. Я бы порекомендовал бы Вам сделать так: 1. разработать полностью универсальную систему контроля доступа с максимальным использованием возможностей Вашей СУБД в части доступа к данным и там же систему изменения внешнего вида приложения 2. а непосредственно для Вашего ПО - надстройку, которая уже автоматически заполняет на основе модели доступа, определенной предметной областью (уже не универсальной), справочники системы, созданной на предыдущем этапе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 11:05 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
Довольно эффективно всё сводить к ролям. Например, роли пользователей. Если пользователь входит в эту роль, то он может всё, что ему позволяет делать эта роль. Достаточно один раз сконфигурировать роль и потом только привязывать к ней юзеров. Также можно одним махом изменить права большой группы юзеров. Экономится производительность т.к. ролей намного меньше, чем "контролируемых" записей. Можно ввести понятие public-role т.е. роль для всех. У меня это роль № 0. Это значит, что её могут использовать все. На SQL это выглядит примерно так: WHERE role=0 or role=XXX это заметно сокращает кол-во ролевых ссылок, и унифицирует доступ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 11:35 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
Shtock у меня система СКД (контроля доступа) состоит из 60 таблиц. 2Shtock: Можно узнать, почему так много ? 2LSV: про роли (или "должности") всё понятно, так делают, наверное, в 99% систем. Но что делать, когда несколько ролей по производственной необходимости должны работать с одними и теми же пресловутыми "сущностями" (документами определённых видов, контрагентами, курсами-валютами и проч.), причём каждой роли можно давать далеко не весь набор операций и показывать эту "сущность" не всю, а только некоторые атрибуты ? Тогда запросы к административной части БД для получения прав, списка возможностей и др. будут усложняться. Но главное, что ЧИСЛО запросов на все эти вариации бизнес-процесса будет большим (мягко сказать!). Поясню свой вопрос двумя простыми ситуациями: 1) Добавление всего одного вида документа (скажем, появится какой-нибудь новый вид поступления изделий -- "Оприходование товара на условиях консигнации") -- так вот, появления новой строки в справочнике "Вид документов" повлечет за собой добавление десятков строк, описывающих то, какие возможны операции с ним для разных ролей и разных состояний этого вида документа. А также появятся десятки строк с описанием того, как должно выглядеть СОДЕРЖИМОЕ этого документа для разных подразделений (то бишь "вьюхи"). 2) Добавление всего одной РОЛИ (например, "Менеджер работе с корпоративными клиентами") также влечёт за собой необходимость описания того, к каким видам документов (или других "сущностей") его допускать, ЧТО он там может видеть и что имеет право делать. Я спрашиваю как раз про это: есть у кого-нибудь идеи на тему, как уменьшить объём работы по описанию всех этих менюшек, вьюшек и прочей мути в такий случаях ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 12:14 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
> Как ? Вы свалили в кучу и реальные объекты базы данных, и метаданные, и хотите строить модель доступа по отношению к этой куче. Решение в данном случае существует, конечно, но будет исключительно кривым. Есть четыре уровня метамоделей. Выберите уровень, на котором Вы хотите реализовать контроль доступа, - все сразу станет сильно проще. Собственно контроль доступа - простая задача; три основных подхода: ACL, rwe и их комбинация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 12:51 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
У меня матрица прав состоит из трех полей Object - абстрактный объект БД, все остальные объекты наследуются от него Operation - наследуется от Object и это то что является строчкой в контекстном меню AUser - наследуется от объекта и является абстрактным пользователем. Группы и реальные пользователи наследуются от него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 13:51 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
Читал, Old Nick, о Вашем фреймворке. Хотел поинтересоваться: выбор собственной метамодели (причем, с элементами разных уровней) был чем-то обусловлен? Или просто так сложилось исторически? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 13:56 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
Обусловлен опытом работы с некоторыми системами: NEXUS, Ontario ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 14:03 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
> Обусловлен опытом работы с некоторыми системами: NEXUS, Ontario В Nexus жутко не понравилась архитектура. Imho отличное пособие "Как не нужно проектировать приложения". Ontario - что за зверь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 14:13 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
Упрощенный аналог NEXUS с клиентом на Дельфи А что не понравилось в NEXUS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 14:32 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
таблицы используются для описания наборов ролей моих пользователей с привязкой к организационой структуре и ролям в БД, наборов различных АРМ (могут ведь и другие приложения, а не мои), которые могут коннектиться к БД и их ролей, справочники для автоматической генерации предикатов доступа (см. Oracle FGAC), описания элементов интерфейса, также там у меня находятся справочники настройки системы аудита действий пользователей, списки часто используемых паролей (чтобы пользователи при заводе своих паролей не заводили 123, password и прочие (следует обратить внимание, что эту возможность я не использую на клиенте, все делает сервер, причем стандартными функциями)) и др. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 14:34 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
и плюс само собой модель предметной области ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 14:35 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
> А что не понравилось в NEXUS? 1. Отсуствие четких уровней моделей, отсутствие поддержки стандартных моделей. 2. Собственно реализация. Попробуйте его переписать для другой СУБД. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 14:46 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
1. Не понял. Я таких слов не знаю 2. А зачем переписывать для другой СУБД? Если есть такая необходимость, то, пожалуйста, берете Дельфи 2000 и используя ECO пишете трехзвенку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 14:52 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Есть четыре уровня метамоделей. Выберите уровень... - все сразу станет сильно проще. Собственно контроль доступа - простая задача; три основных подхода: ACL, rwe и их комбинация. guest_20040621, можно Вас попросить какую-нибудь ссылку на темы уровней метамоделей, ACL, RWE etc (или название книги/статьи) ? А то в поисковиках слишком много всего вытряхивается на эту тему, просто "в лом" всё это перелопачивать. Буду весьма признателен, если укажете, куда копать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 14:56 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
> А зачем переписывать для другой СУБД? А затем, что в природе существуют другие операционные системы, которые, например, умеют работать на серверах. ;) Но на них не запустить M$ SQL. ;) > Не понял. ОК, на примерах. Например, потребовалось Вам описать некий автомат (внешнее приложение), который каким-то образом будет взаимодействовать с Вашей базой данных. Вы от чего его "наследовать" собираетесь? Это как бы не объект базы данных. ;) А если этот автомат, например, будет взаимодействовать еще и с другими базами данных (абсолютно разными, не Вами спроектированными), но у которых тоже есть и права доступа, и собственная метамодель, чего делать будем? ;) А если, например, Вам потребуется доступ к данным этих сторонних баз данных, Вы их тоже будете описывать в Вашей системе метаданных? Очень большая вероятность того, что не получится. ;) Если Вам, например, понадобится построить онтологическую модель Вашей базы данных, Вы не сможете этого сделать на основе Вашей системы метаданных. Ну, и дальше в том же духе. ;) Повторюсь: есть четыре уровня метамоделей. Важно четко представлять себе каждый из этих уровней для того, чтобы не ограничивать функционал приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 15:12 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Повторюсь: есть четыре уровня метамоделей. Важно четко представлять себе каждый из этих уровней для того, чтобы не ограничивать функционал приложения. guest_20040621, уж простите за назойливость, но тогда и я повторюсь: какие это "уровни метамоделей", как они зовутся, что обозначают, ГДЕ ПРО НИХ ПОЧИТАТЬ ? ЗЫ. Никакой подоплёки, никакого сарказма в моём вопросе нет: я просто хочу получить новые знания по этой теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 15:22 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
> ссылку на темы уровней метамоделей Не могу так вот навскидку. Поищите в google "Meta Object Facility", - думаю, спецификацию найдете без проблем. Непосредственно спецификация Вам не понадобится, но из нее станет понятно, что читать дальше. > ACL, RWE etc (или название книги/статьи) ? Книг не знаю. Какие-то материалы были на ibase.ru. Есть даже что-то типа стандартов (например, Role Based Access Control). А вообще идея простая: используется либо явный список разрешенных операций для каждого объекта базы данных (ACL; аналог системы прав MS), либо каждому объекту базы данных ставится в соответствие свойство read-write-execute (аналог системы прав *nix), либо эти методы комбинируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 15:28 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
Например, потребовалось Вам описать некий автомат (внешнее приложение), который каким-то образом будет взаимодействовать с Вашей базой данных. Вы от чего его "наследовать" собираетесь? Это как бы не объект базы данных. ;) В моей системе будет объект, описывающий внешний объект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 15:46 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
MOF незамысловато именует эти уровни M0...M3. По сути - информация, модель (словарь данных) конкретной базы, мета-модель (модель словаря) и мета-метамодель (сресдтво конструирования моделей словарей). MetaObjectFacility(MOF) Specification - детище OMG http://www.omg.org Цель - обмен метамоделями между различными CASE. В идеале - приложения также умеют понимать XMI. К разграничению доступа имеет весьма отдаленное отношение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 15:59 |
|
||
|
Менюхи и вьюхи как функции от N аргументов (N>=3). Как хранить их в БД ?
|
|||
|---|---|---|---|
|
#18+
> В моей системе будет объект, описывающий внешний объект Это понятно. Так от чего Вы его "наследовать" будете? ;) Как Вы собираетесь отразить факт, что это не обычный пользователь, а автомат? Как Вы собираетесь контролировать доступ, если он не использует стандартный интерфейс (если, конечно, у Вас часть ограничений доступа вынесена в интерфейс)? Т. е., если собрать все вместе: почему Вы уверены, что Ваша система метаданных универсальна и подходит для описания любых объектов? Кстати, остальные примеры Вы просто проигнорировали? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 16:02 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33365583&tid=1545567]: |
0ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 431ms |

| 0 / 0 |
