Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: -0.961 c
8-1119617498
MixAnOL
2005-06-24 16:51
2005.11.20
Проигрывание музыки другим приложением


4-1126976090
bigear
2005-09-17 20:54
2005.11.20
Иконка+текст на кнопке тулбара


4-1126843766
SergeyGood
2005-09-16 08:09
2005.11.20
Функция CreateProcessWithLogonW


3-1129003870
k2
2005-10-11 08:11
2005.11.20
Oracle9. ORA-03113


14-1130428910
Gydvin
2005-10-27 20:01
2005.11.20
Помогите выбрать принтер




   Наверх