Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Интерфейс: построитель выражений   Найти похожие ветки 

 
Walker ©   (2005-10-27 13:17) [0]

Попытаюсь описать проблему абстрактно.

Есть программа (или комплекс программ). В этой программе:
1. Есть список зарегистрированных пользователей, которые входят в ту, или иную группу.
2. Есть список объектов, над которыми можно производить некие действия.
3. Есть ряд других критериев.

Для того, чтобы пользователь смог проделать на объектом какое-либо действие, должно выполниться определённое условие, назовём его РАЗРЕШЕНИЕ. Если РАЗРЕШЕНИЕ для конкретного пользователя+объекта+действия_над_объектом возращает TRUE - то действие_над_объектом можно выполнить.

На данный момент, эти РАЗРЕШЕНИЯ прописываются вручную, программистом, или продвинутым пользователем, и хранятся в базе данных в виде текстовых строк.
(Например в таком виде:
объект1.действие1 = (тек_пользователь in [группа1, группа2] && объект1.состояние == состояние1) || тек_пользователь == группаАдминистраторов

что расшифровывается так:
над объектом1 можно произвести действие1 в том случае, если тек_пользователь входит в группу1 или в группу2, и при этом объект1 находится в состоянии1, либо же действие1 можно произвести если текущий пользователь является администратором.

Теперь собственно проблема. Не хочется изобретать велосипед, может кто сталкивался, может кто подскажет где поискать.
Нужно предоставить пользователю инструмент, визуальный инструмет, чтобы он смог строить РАЗРЕШЕНИЯ с помощью некоего мастера, накликав мышкой правила и их взаимозависимость. Некий инструмент, типа построителя выражений в Access"е, когда пользователь на экране видит названия таблиц и задаёт связи между ними, а в результате получается SQL-запрос.

Спасибо за внимание


 
Walker ©   (2005-10-27 16:08) [1]

Другими словами, вопрос можно свести к селдующему:
Как написать свой построитель выражений?


 
Kolan ©   (2005-10-27 19:27) [2]

что расшифровывается так:
над объектом1 можно произвести действие1 в том случае, если тек_пользователь входит в группу1 или в группу2, и при этом объект1 находится в состоянии1, либо же действие1 можно произвести если текущий пользователь является администратором.

Кажется это конечный автомат, точно незнаю как правильно. Вообщем строиш граф состояний...


 
Walker ©   (2005-10-27 19:43) [3]

Проблема не в том как расшифровать строку, а как её построить. Точнее не просто построить, а дать пользовотелю интерфейс-построитель.
Чуствуется, что есть уникальные решения, которые адаптируются под конкретную задачу, просто не хочется терять время на создание "велосипеда".


 
Суслик ©   (2005-10-27 21:03) [4]

Не думаю, что есть универсальные решение. Нужно будет писать самому...

Не скажу ничего полезного, но все же...

Ну типа такого:
1. Создать хранилище с метаданными - т.е. описанием того, к чему можно дать доступ
2. Создать читатель и преобразователь данного хранилища в некую структуру классов.
3. Написать gui, которое понимает структуру и выводит диалоги.....



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
2-1130392505
Zaletchik
2005-10-27 09:55
2005.11.20
Изменение позиции в файле поБИТно


14-1130281721
Умник
2005-10-26 03:08
2005.11.20
Есть ли на свете...


2-1130762140
Fast2
2005-10-31 15:35
2005.11.20
Как, во время выполнения приги, узнать колличество и имена полей


1-1130335109
alex870
2005-10-26 17:58
2005.11.20
Поиск в TreeView


14-1130352465
Gero
2005-10-26 22:47
2005.11.20
Гениальность дизайна