Проверка/классификация структур на соответствие пользовательским правилам/шаблонам — есть ли универсальный метод?
Хотел было уже быстренько велосипед соорудить, но подумал - задача вроде крайне частая - наверняка же есть общее универсальное решение? (логика говорит - всяко должно существовать, опыт админства говорит - везде свои самодельные "велосипеды").
Много где требуется проверять, что структура данных соответствует (или нет) пользовательскому шаблону:
- файрвол позволяет проверять данные из пакета и из статуса сессии ("если protocol==tcp и dst_post==80, то ...")
- какой-нибудь модуль веб-сервера: ("если request=="/admin/.* и remote_ip != 1.2.3.4" )
- само приложение ("если тест комментария содержит слово "гуппи" ( то выставляем метку "аквариумистика"")
- емейл клиент ("если From=="root@.* и (subject содерижит "error" или body содержит "error") " -помещаем в папку "сообщения об ошибках от серверов")
Все это можно представить как проверяемая структура (пакет, запрос, комментарий, сообщение эл. почты) и пользовательский набор правил (достаточно мощный, с поддержкой булевой логики, итд, но все таки простой, не встаиваемый язык программирования, вроде LUA (это уже overkill было бы), легко сериализуемый).
Есть ли уже готовый механизм, делающий это? Так чтобы любая софтина, где нужно классифицировать любые сколь угодно сложные структуры, просто бы могла подключить нужную либу, и сразу можно было бы писать сколько угодно сложные правила классификаций в каком-то более-менее стандартизованном формате?
Об универсальных способах прямо таки для любой предметной области мне неизвестно. Однако для сложной логики следует применять таблицы принятия решений
По идее, эти таблицы можно хранить в БД, собрав воедино с учётом предметной области.