Визуализатор логических выражений
Я разработал механизм бизнес-правил, который позволяет пользователям писать правила в логическом синтаксисе.
Например, правила: R1, R2, R3
Пример выражения: (R1 И R2) ИЛИ R3
Я хочу визуализировать это выражение. Например, среда визуализации может отображать выражение в виде дерева и вставлять цвета.
Есть ли какой-либо javascript или любой другой кодовый каркас для достижения этой цели? (Приложение является приложением ASP.NET)
1 ответ
Я не могу не ответить на этот вопрос, хотя мой ответ может не помочь вам легко решить вашу проблему. Еще в 1998 году мой самый первый проект Javascript был именно визуализатором логических выражений.
Код нигде не доступен, поэтому я не могу поделиться им. (Я сомневаюсь, что даже у моего бывшего работодателя все еще есть копия.) И даже если это так, она работала на IE4, 5.0 и 5.5; Я не думаю, что он когда-либо обновлялся для IE6, и не знаю, работал ли он там.
Но я все еще могу рассказать вам об основных идеях, и даже сегодня я по-прежнему горжусь результатами, хотя знаю, что мне было бы страшно увидеть сам код.
Конечно, логическое выражение может быть легко представлено древовидной структурой. Каждый неконечный узел был либо узлом AND, OR, либо NOT в дереве, и AND и OR могли иметь несколько дочерних элементов (поэтому я представлял ("A и B и C и D" как AND(A, B)., C, D), а не просто как комбинации двоичных AND.) Для отображения данных я просто использовал вложенные блоки. AND проходил горизонтально, OR проходил вертикально, с ключевым словом "and" и "or", повторяющимся между блоками. NOT была просто коробка в коробке с ключевым словом "не" во внешней.
Мои конечные узлы были связаны с реальными сценариями данных, которые пользователь мог использовать для тестирования, поэтому вместо "A" и "B" они выглядели, например, как
age < 30
gender = 'F'
income > 40000
Пользователь может ввести пример данных для полей age
, gender
, а также income
и вывод изменится на красно-зеленый дисплей, чтобы показать, был ли каждый блок выражения и, конечно, все выражение истинным или ложным.
Используемые поля были настраиваемыми, а контрольные примеры были сохранены для дальнейшей разработки.
Это был очень веселый проект, и он помог в общении между деловыми людьми, которые писали правила, и программистами, которые их выполняли, группами, которые часто имели совершенно разные представления о том, как можно использовать слово "и" в вежливой компании.:-)
Но главное в том, что одним из очень полезных способов визуализации логического выражения является использование простых блоков: NOT - это блок в блоке со словом "not" во внешнем. ИЛИ - это блоки, содержащие вертикально сгруппированные блоки с "или" между ними, а "И" - это блоки, содержащие горизонтально сгруппированные блоки с "и" между ними. Если вы действительно можете присвоить значения truey/falsey своим примитивам, то зеленый для блоков truey, красный для фальшивых - это очень убедительный показ.
...
Но вам придется написать свой собственный код. Сожалею.