Сейчас я не думаю, что есть пошаговые инструкции, которые помогут вам реализовать подключаемый модуль Grails Activiti. Я нахожусь в той же лодке (магазин разработки, использующий Grails, который хотел бы реализовать механизм рабочего процесса), и до сих пор плагин Activiti не был действительно полезен. Те, кто использует его , похоже, на самом деле не используют обеспечивает интеграцию между GORM и Activiti.
В общих чертах, вот шаги, которые я бы рекомендовал для использования Activiti в Grails. вы, вероятно, могли бы взять или оставить плагин Activiti.
- Создайте механизм Activiti в своей базе данных. Если вы используете базу данных H2 в памяти и позволяете Grails выполнять операторы создания/удаления, вам может потребоваться добавить сценарии h2 в процесс запуска вашего приложения.
- Сопоставьте процесс, который вы хотите использовать в своем приложении Grails, в формате XML BPMN 2.0. Вы можете использовать Activiti Eclipse Designer, который отлично подключится к GGTS, запустите Activiti Исследуйте где-нибудь и используйте веб-дизайнер или кодируйте необработанный XML самостоятельно.
- Включите Activiti в качестве зависимости в ваше приложение Grails. Это можно сделать, включив подключаемый модуль Activiti Grails в BuildConfig.groovy или просто включив jar-файл движка Activiti в качестве зависимости (см. ниже).
- Use calls to the Activiti engine's API (preferably from a Grails service) to deploy your process model(s), start up individual instances of the process(es), and move through the various steps in the workflow.
- You may need to pass information about your Grails domain objects as process variables, and then draw them back out again later. Teasing out where to let Grails persist the data in a domain object, and where to make Activiti keep it as a process variable is simply going to take some thought on the developer's part.
Как правило, мое эмпирическое правило заключается в том, чтобы позволить Activiti управлять процессом, а Grails — всем остальным (пользовательский интерфейс, сохранение данных и манипулирование ими, проверка и т. д.).
Я рекомендую этот подход, чтобы вы по-прежнему могли использовать Grails для управления всем пользовательским интерфейсом с помощью контроллеров и GSP, а также большей частью объектной модели с помощью объектов предметной области и служб. В пользовательском интерфейсе, который разрабатывает команда Activiti, нет ничего плохого, но он основан на Vaadin, собственной Java/ Фреймворк пользовательского интерфейса со своим характером и философией. Я уверен, что супер-разработчик мог бы без проблем комбинировать их и, вероятно, уже сделал это, но если он/она не спустится с горы и не научит меня, мне придется ограничить количество инструментов, которые я буду пробовать. освоить сразу. :)
Как включить Activiti в качестве зависимости
В вашем файле BuildConfig.groovy закройте следующие зависимости и репозитории:
repositories {
inherits true // Whether to inherit repository definitions from plugins
mavenRepo "https://maven.alfresco.com/nexus/content/groups/public/"
//any other repositories you need go here, including grailsCentral(), etc.
}
dependencies {
compile("org.activiti:activiti-engine:5.13"){
excludes "spring-beans"
}
}
Вам не нужно исключать зависимости spring-context, но Grails 2.3.1 использует более позднюю версию Spring, чем Activiti 5.13. На 2/3 машинах, на которых я пробовал, это нормально, и Grails просто использует более позднюю версию Spring, игнорируя старую версию, требуемую Activiti. Однако на одной машине разница вызвала привередливое исключение, которое было трудно отследить.
person
jonnybot
schedule
17.11.2013