Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.047 c
2-1130604971
Alex7
2005-10-29 20:56
2005.11.20
свойство "Parent"


4-1126932892
Наиль
2005-09-17 08:54
2005.11.20
Определение экранных координат текстового курсора


8-1113905574
LineSoft
2005-04-19 14:12
2005.11.20
SD4.DLL - недопустимая операция


1-1130388400
dreamse
2005-10-27 08:46
2005.11.20
Обрезать строку по определёной длине


2-1130410496
kosha
2005-10-27 14:54
2005.11.20
Перегрузка виртуального метода





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский