Я занимаюсь разработкой программного обеспечения, которое принимает правила вида «A запрещает B» или «X требует Y» для создания приложения, которое позволит вам настроить сложный элемент.
Чтобы описать это более полно, представьте, что у вас есть уровень папок, у которых есть некоторое количество подпапок, и каждая из этих подпапок имеет некоторое количество элементов. Цель состоит в том, чтобы выразить отношения между элементами таким образом, чтобы помочь пользователю создать действительную коллекцию выбранных элементов.
Таким образом, фактические правила больше похожи на «Все (A, B, C) Disallows Any (X, Y, Z)», в котором говорится, что если пользователь выбирает A, B и C, он не может выбрать ни один из X, Y или Z. Это просто логическая логика.
Существуют дополнительные типы, например, те, которые говорят, что если вы выберете A, вы также должны выбрать B, но не стоит вдаваться в подробности всего этого.
Это не бизнес-логика (по крайней мере, в обычном смысле), и правила могут измениться в любое время (и они будут), поэтому их нужно читать из строки и интерпретировать или подключать через запутанную структуру базы данных (что я бы предпочитаю держаться подальше).
Реальный вопрос: есть ли какая-то система или фреймворк, который имеет дело с таким поведением во время выполнения? Я знаю, что у Oracle есть вещь, называемая «Oracle Configurator», которая делает именно то, о чем я говорю, но я думаю, что это слишком дорого.
Проект почти завершен, и я построил «рабочую» систему, но я пытаюсь провести вскрытие, чтобы посмотреть, можно ли было сделать лучше / быстрее / дешевле.