Конфигурационная структура, которая позволяет определять вычисления, которые используют методы Java? - PullRequest
0 голосов
/ 13 ноября 2011

Должны быть файлы конфигурации для указания предикатов, которые агенты в модели с несколькими агентами учитывают при принятии решений.Требования: пользователи могут указывать логические выражения, а пользователи могут использовать набор нестатических методов, определенных в Java, в своих определениях предикатов.например, вот так (нотация XML используется только в качестве примера):

<AgentConfigurations>
    <Agent Name="ExampleAgentConfig1">
        <Predicates>
            <Predicate Name="ThereIsAFullMoon">FullMoon("18/06/1987")</Predicate>
            <Predicate Name="DayNotTheFifth">5 != Today()</Predicate>
        </Predicates>
    </Agent>
</AgentConfigurations>

Если я сам кодирую эту функцию, вызов метода может быть выполнен с использованием отражения, но для операторов требуется некоторый синтаксический анализ и т. д.

Есть ли рамки, которые могли бы помочь с этим?

Большое спасибо заранее, Томас

Ответы [ 2 ]

2 голосов
/ 13 ноября 2011

Вот несколько предложений:

2 голосов
/ 13 ноября 2011

Подумайте об использовании «скриптового» языка, такого как Groovy, JRuby, Scala, Rhino (даже BeanShell) и т. Д. Они отлично подходят для «внутренних» DSL и могут оставаться очень удобочитаемыми.

В качестве альтернативы, хранимые выражения могут оцениваться по заданному контексту (например, объект или более глубокая структура) с использованием любого из нескольких языков выражений (EL), таких как MVEL, OGNL и т. Д.

Как только они начинают усложняться или имеют глубокие отношения друг с другом, вам лучше использовать механизм правил, такой как Drools или Jess.

Вы можете сделать некоторые очень интересные вещи, также извлекая определения правил из базы данных, включая обновление системы в реальном времени (возможно, из проверенной тестовой системы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...