Фреймворк конечных автоматов для JBoss/Java?
Мы разрабатываем приложение, которое включает в себя множество различных тестов, каждый из которых приводит пользователей к нескольким этапам. Мы думаем об использовании инфраструктуры конечных автоматов для захвата состояний / переходов из кода. Мы также думаем об использовании механизма правил для дополнения правил. Кто-нибудь имеет опыт работы с любой структурой конечного автомата, которая будет работать с JBoss и / или Java? Заранее спасибо.
-nguyen
8 ответов
jbpm делает это и хорошо интегрируется с jboss. По моему опыту, он довольно прост в использовании и мощный.
Вы можете посмотреть на StatefulJ. Он построен на основе Spring Data для поддержки постоянства, а сама модель состояния определяется с помощью аннотаций. Такой подход упрощает настройку и обслуживание по сравнению с XML. Что касается правил - я использовал Drools в прошлом и, кажется, очень хорошо поддерживается.
Отказ от ответственности: я автор StatefulJ
У меня был очень хороший опыт использования ragel для создания легко обслуживаемых конечных автоматов. Полученный код Java очень высокого качества. Тем не менее, это просто генератор конечных автоматов, который не предназначен для конкретного использования, поэтому вы можете найти другие решения, которые будут более эффективно работать в проблемной области, связанной с Интернетом.
Попробуйте Activiti, кажется, многие люди используют его. http://activiti.org/
Конечно, для части движка правил можно использовать Drools.
Может быть, вы можете взглянуть на JBoss PVM. Это все еще в альфа-версии, но может использоваться для моделирования любого типа конечного автомата. Мы также ищем это для графических переходов.
Если вы строите какую-то систему, основанную на переходе между экранами, то вам обязательно стоит проверить Spring WebFlow http://springframework.org/webflow
Взгляните на StateBuilderJava, генератор кода конечного автомата, который преобразует XML-описание конечного автомата в расширенную версию шаблона состояния Java. Он поддерживает всю семантику UML: конечный автомат может быть иерархическим, параллельным и асинхронным.
Каждый тестовый сценарий можно смоделировать с помощью описания XML конечного автомата, генератор кода записывает шаблон состояния от вашего имени, который утомителен и подвержен ошибкам, если выполняется вручную.
Другим преимуществом является визуализация и редактирование сценария тестирования с помощью графического инструмента. Это позволяет быстро реализовать и задокументировать набор тестовых сценариев. В примерах был написан набор тестов клиента XMPP, чтобы проиллюстрировать, как можно легко и быстро использовать генераторы кода конечного автомата для написания сложных сценариев тестирования.
Отказ от ответственности: я автор этих программ.
Я использовал activiti. Это лучшая структура. Это облегченная платформа рабочих процессов и управления бизнес-процессами (BPM). С открытым исходным кодом и работает на любой платформе Java или в облаке. Все, что нужно, это знание BPMN, Maven, Spring и Activiti.