Hey Flowables,
I am trying to run Flowable 6.4.1 in Micronaut using an H2 in-memory database. I can deploy a process definition and I can start a simple process, which is executed to the end, if the process does not contain any wait states.
If I alter the process so that I have one service task, that is marked as Asynchronous, the process can be started, but it is never finished. My wild guess is, that there is no job executor running.
These are my dependencies in the build.gradle file (extract, I left out some unimportant stuff):
dependencies {
annotationProcessor "io.micronaut:micronaut-inject-java"
annotationProcessor "io.micronaut:micronaut-validation"
annotationProcessor "javax.persistence:javax.persistence-api:2.2"
implementation "io.micronaut:micronaut-http-client"
implementation "io.micronaut:micronaut-http-server-netty"
implementation "io.micronaut:micronaut-runtime"
// For transaction management
implementation "io.micronaut:micronaut-spring"
implementation "io.micronaut.configuration:micronaut-hibernate-jpa"
implementation "io.micronaut.configuration:micronaut-jdbc-hikari"
// Flowable
implementation "org.flowable:flowable-engine:6.4.1"
kapt "io.micronaut:micronaut-inject-java"
kapt "io.micronaut:micronaut-validation"
runtime "ch.qos.logback:logback-classic:1.2.3"
runtime "com.fasterxml.jackson.module:jackson-module-kotlin:2.9.4.1"
runtime "org.springframework:spring-jdbc"
runtime "com.h2database:h2"
}
I am starting the engine like this:
@Factory
class Config {
companion object : KLogging()
@Bean
@Singleton
fun processEngine(): ProcessEngine {
// Initialize process engine
val cfg = StandaloneProcessEngineConfiguration()
.setJdbcUrl("jdbc:h2:mem:flowable;DB_CLOSE_DELAY=-1")
.setJdbcUsername("sa")
.setJdbcPassword("")
.setJdbcDriver("org.h2.Driver")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
return cfg.buildProcessEngine()
}
@Bean
@Singleton
fun repositoryService(processEngine: ProcessEngine): RepositoryService = processEngine.repositoryService
@Bean
@Singleton
fun runtimeService(processEngine: ProcessEngine): RuntimeService = processEngine.runtimeService
@Bean
@Singleton
fun deployment(repositoryService: RepositoryService): Deployment {
return repositoryService.createDeployment()
.addClasspathResource("canary.bpmn")
.addClasspathResource("canary.dmn")
.deploy()
}
}
Can you point me in a direction on what I am missing? If you need a small example project to inspect this, let me know and I will strip it down.