Мы работаем с текстовыми сообщениями (без XML).Наша цель заключается в проверке сообщений, сообщение является действительным, если содержание является правильным.Мы разработали наш собственный язык, определенный в XML, чтобы выразить правила для сообщения.Нам нужно добавить более сложные правила, и мы думаем, что пришло время взглянуть на другую альтернативу и использовать механизм настоящих правил.Мы поддерживаем следующие типы правил:
- имя в списке значений или регулярное выражение ex {SMITH, MOORE, A *}
- имя присутствует в сообщении -
- имя отсутствует в сообщении
- если условие, то имя = Джон, иначе имя = Джейн Обратите внимание, что условие простое и не содержит никаких логических операторов.
Нам необходимо поддерживать следующие типы правил:
- , если не указано иное, но условие содержит логические операторы
- for ... loop:
- Для всех клиентов в сообщении мы хотим, чтобы по крайней мере один из США и по крайней мере один из Франции
- Для всех клиентов в сообщении мы хотим по крайней мере пять из США, которые покупают больше, чем1000 долларов в год
- Для любого клиента с именем Джон фамилия должна быть Doe
- Всего клиентов с именем Джон <15 </li>
- Имякомпания совпадает с названием компании в другом месте в гоСообщение
Правила будут зависеть от типа сообщений, которые мы обрабатываем.Итак, мы исследовали несколько существующих решений, таких как:
- JESS
- OWL (проверка согласованности)
- Schematron (путем преобразования сообщения в XML)
Каковы были бы лучшие альтернативы, учитывая, что мы разрабатываем на Java?Еще одна вещь, которую следует учитывать, - это то, что мы должны иметь возможность создавать отчеты об ошибках, такие как описание ошибки, местоположение ошибки (номер строки и столбца).