Интерфейс: построитель выражений
От: WalkerSW Россия  
Дата: 27.10.05 10:12
Оценка:
Попытаюсь описать проблему абстрактно.

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

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

На данный момент, эти РАЗРЕШЕНИЯ прописываются вручную, программистом, или продвинутым пользователем, и хранятся в базе данных в виде текстовых строк.
(Например в таком виде:

объект1.действие1 = (тек_пользователь in [группа1, группа2] && объект1.состояние == состояние1) || тек_пользователь == группаАдминистраторов


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

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

Спасибо за внимание
Re: Интерфейс: построитель выражений
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 31.10.05 09:37
Оценка:
Здравствуйте, WalkerSW, Вы писали:

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


Во-первых и сразу — можешь рассказать что это такое ты творишь? (Есть аналогичная задача, просто не дошел ещё до этого момента.)

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


Пользователи — это подмножества Ролей + работать с единичными пользователями не хорошо. Итог — две сущности: Роль и Разрешения. Роли — можно деревом.
Ну на первый взгляд сразу приходит мысль — разделить окно на 3 части:
Роли       |   Роль + Разрешение     |      Разрешения

А дальше уже надо смотреть на задачу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[2]: Интерфейс: построитель выражений
От: WalkerSW Россия  
Дата: 01.11.05 08:09
Оценка:
Хорошо, попробую сказать по другому.
Есть то самое выражение, которое описывает правило.
По этому выражению пробегает парсер и строит дерево, в качестве ноды у этого дерева — структура (запись), которая может быть нескольких типов (например оператор или параметр).

Теперь мне нужно это дерево отобразить на экране, но не ввиде TreeView (это слишком просто для программиста и не понятно для обывателя), а ввиде древоидной структуры.
И не просто отобразить, а дать пользователю возможность мышкой двигать объекты (ноды), определять связи и естественно добалять/править/удалять ноды.

Ну и в конце, после манипуляций пользователя, заново построить выражение-правило. (собственно, это тоже не сложно).
Re[3]: Интерфейс: построитель выражений
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 01.11.05 08:40
Оценка:
Здравствуйте, WalkerSW, Вы писали:

WSW>Теперь мне нужно это дерево отобразить на экране ...


Так:
 Item1
  |
  |
 -----------------
 |               |
 |               |
Item2          Item3

(Нормально не смог нарисовать — табы мешают.)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[4]: Интерфейс: построитель выражений
От: WalkerSW Россия  
Дата: 02.11.05 07:37
Оценка:
Здравствуйте, Real 3L0, Вы писали:

R3>Здравствуйте, WalkerSW, Вы писали:


WSW>>Теперь мне нужно это дерево отобразить на экране ...


R3>Так:

R3>
R3> Item1
R3>  |
R3>  |
R3> -----------------
R3> |               |
R3> |               |
R3>Item2          Item3
R3>

R3>(Нормально не смог нарисовать — табы мешают.)

Так — это проще простого.
ммм, по-моему я уже писал... вот, цитирую

И не просто отобразить, а дать пользователю возможность мышкой двигать объекты (ноды), определять связи и естественно добалять/править/удалять ноды.

А вообще, строго говоря, в виде бинарного дерева оно по любому для пользователя будет не понятно. В итоге я отказался от своей идеи, буду делать по-другому, что из этого выйдет — посмотрим
Re[5]: Интерфейс: построитель выражений
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 02.11.05 09:50
Оценка:
Здравствуйте, WalkerSW, Вы писали:

WSW>Так — это проще простого.


Ну так делай так!

WSW>А вообще, строго говоря, в виде бинарного дерева оно по любому для пользователя будет не понятно.


С чего это?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re: Интерфейс: построитель выражений
От: Зверёк Харьковский  
Дата: 02.11.05 17:09
Оценка:
Здравствуйте, WalkerSW, Вы писали:

WSW>Есть программа (или комплекс программ). В этой программе:

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

* Ориентировочное количество всех сущностей, какие участвуют в построении запроса (состояний, групп, ...)?
* Разнородность сущностей (у всех объектов одинаковые наборы состояний, все группы одинаково выглядят)?
* Необходимая расширяемость решения (могут ли дальше добавляться совсем другие сущности)?



А вообще (и я требую занесения этой фразы в FAQ ) — в вопросах по юзабилити действует простое правило:

На любой вопрос — любой ответ.


То есть, чем абстактнее (в смысле общо) сформулировать проблему, тем абстрактнее (в смысле — неприменимо в реальной жизни) получится решение.

dixi.
FAQ — це мiй ай-кью!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.