Я хочу проверить, есть ли какие-нибудь компоненты, которые могут дать мне базовый механизм правил. Движок должен иметь возможность принимать строку правила, которая будет основным логическим правилом, которое будет возвращать либо ИСТИНА, либо ЛОЖЬ. Он должен принимать карту строк для входных данных и карту строк для сравнения.
Пример 1:
I want to check if the Object is of type "Apple"The text rule would say "OBJECT_TYPE=="FRUIT" & FRUIT_TYPE=="Apple""If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Apple) }
MAP2 ==> NULL
Output should be TRUE
If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Orange) }
MAP2 ==> NULL
Output should be FALSE
Пример 2:
I want to check if the Object is of type "Apple" and group with size
The text rule would say "OBJECT_TYPE=="FRUIT" & FRUIT_TYPE=="Apple""If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Apple), (SIZE->BIG) }
MAP2 ==> {(SIZE==BIG)}
Output should be TRUE
If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Apple), (SIZE->SMALL) }
MAP2 ==> {(SIZE==BIG)}
Output should be FALSE
Идея состоит в том, чтобы сравнить 2 карты согласно логическому правилу и вернуть TRUE или FALSE. Он также должен поддерживать арифметическую логику, например, вес> 50 в правилах, и так же проверять с входной картой. Выход системы может быть что-то вроде ИСТИНА, ЛОЖЬ, ВХОДНАЯ КАРТА, не заполненная полностью, Ошибка в правиле и т. Д.
Кто-нибудь знает, если какой-то Opensource уже предоставляет этот тип функциональности?
Может быть, ответ нет. Ваша ситуация слишком специфична, поэтому вы, вероятно, должны написать свои компоненты owen. По моему опыту, вы можете написать парсер грамматики, boost.spirti, возможно, хороший партнер.
Других решений пока нет …