Конфигурация процессного движка
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Для запуска процессного движка можно использовать XML-файл Spring application context. Через Spring можно запускать как процессные движки, управляемые приложением, так и процессные движки, управляемые контейнером.
Обратите внимание, что вместо XML для запуска можно также использовать Spring JavaConfig.
Настройка процессного движка, управляемого приложением
ProcessEngine можно сконфигурировать как обычный Spring-бин. Точкой входа интеграции является класс io.openbpm.bpm.engine.spring.ProcessEngineFactoryBean. Этот бин принимает конфигурацию процессного движка и создаёт сам процессный движок. Это означает, что создание и настройка свойств для Spring выполняются так же, как описано в разделе конфигурации. Для интеграции со Spring конфигурационный бин и бин движка будут выглядеть так:
<bean id="processEngineConfiguration"
class="io.openbpm.bpm.engine.spring.SpringProcessEngineConfiguration">
...
</bean>
<bean id="processEngine"
class="io.openbpm.bpm.engine.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
Обратите внимание, что бин processEngineConfiguration использует класс SpringProcessEngineConfiguration.
Настройка процессного движка, управляемого контейнером, как Spring-бина
Если вы хотите, чтобы процессный движок был зарегистрирован в ProcessEngineService OpenBPM Engine, необходимо использовать io.openbpm.bpm.engine.spring.container.ManagedProcessEngineFactoryBean вместо ProcessEngineFactoryBean, показанного в примере выше. Также необходимо убедиться в следующем:
-
Ни одно из ваших web-приложений не должно содержать
openbpm-webapp*.jarв собственной папкеlib; эта библиотека должна находиться на общем уровне. -
Ваш
server.xmlдолжен содержать JNDI-записи дляProcessEngineServiceиProcessApplicationService, как показано ниже:
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<Resource name="java:global/camunda-bpm-platform/process-engine/ProcessEngineService!io.openbpm.bpm.ProcessEngineService"
auth="Container"
type="io.openbpm.bpm.ProcessEngineService"
description="Camunda Platform Process Engine Service"
factory="io.openbpm.bpm.container.impl.jndi.ProcessEngineServiceObjectFactory" />
<Resource name="java:global/camunda-bpm-platform/process-engine/ProcessApplicationService!io.openbpm.bpm.ProcessApplicationService"
auth="Container"
type="io.openbpm.bpm.ProcessApplicationService"
description="Camunda Platform Process Application Service"
factory="io.openbpm.bpm.container.impl.jndi.ProcessApplicationServiceObjectFactory" />
...
</GlobalNamingResources>
В этом случае созданный объект процессного движка регистрируется в OpenBPM Engine и может использоваться для создания deployment процессных приложений, а также экспортироваться через интеграцию с runtime-контейнером.
Настройка плагина процессного движка
В Spring можно настроить плагин процессного движка, задав список значений в свойстве processEnginePlugins бина processEngineConfiguration:
<bean id="processEngineConfiguration" class="io.openbpm.bpm.engine.spring.SpringProcessEngineConfiguration">
...
<property name="processEnginePlugins">
<list>
<bean id="spinPlugin"
class="io.openbpm.spin.plugin.impl.SpinProcessEnginePlugin" />
</list>
</property>
</bean>
Использование Spring JavaConfig
Помимо XML-файла Spring application context, процессный движок можно запускать с использованием Spring JavaConfig. Класс конфигурации может выглядеть следующим образом:
@Configuration
public class ExampleProcessEngineConfiguration {
@Bean
public DataSource dataSource() {
// Use a JNDI data source or read the properties from
// env or a properties file.
// Note: The following shows only a simple data source
// for In-Memory H2 database.
SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
dataSource.setDriverClass(org.h2.Driver.class);
dataSource.setUrl("jdbc:h2:mem:camunda;DB_CLOSE_DELAY=-1");
dataSource.setUsername("sa");
dataSource.setPassword("");
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
public SpringProcessEngineConfiguration processEngineConfiguration() {
SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();
config.setDataSource(dataSource());
config.setTransactionManager(transactionManager());
config.setDatabaseSchemaUpdate("true");
config.setHistory("audit");
config.setJobExecutorActivate(true);
return config;
}
@Bean
public ProcessEngineFactoryBean processEngine() {
ProcessEngineFactoryBean factoryBean = new ProcessEngineFactoryBean();
factoryBean.setProcessEngineConfiguration(processEngineConfiguration());
return factoryBean;
}
@Bean
public RepositoryService repositoryService(ProcessEngine processEngine) {
return processEngine.getRepositoryService();
}
@Bean
public RuntimeService runtimeService(ProcessEngine processEngine) {
return processEngine.getRuntimeService();
}
@Bean
public TaskService taskService(ProcessEngine processEngine) {
return processEngine.getTaskService();
}
// more engine services and additional beans ...
}
Обратите внимание, что собственные бины можно определять прямо в классе конфигурации, комбинировать этот подход с дополнительным XML-файлом или использовать component scan. Следующий пример добавляет в класс конфигурации component scan, который обнаруживает и создаёт все бины в пакете com.example.
@Configuration
@ComponentScan("com.example")
public class ExampleProcessEngineConfiguration {
// ...
}
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org