flowable-engine icon indicating copy to clipboard operation
flowable-engine copied to clipboard

Missing HSQL create scripts in 7.1.0

Open bgiaccio opened this issue 1 year ago • 1 comments

Describe the bug I switched from flowable 7.0.0 to 7.1.0 and ran my unit test which uses HSQL and Autowires org.flowable.engine.RuntimeService via one of my classes, it fails with

Caused by: org.flowable.common.engine.api.FlowableException: resource 'org/flowable/app/db/create/flowable.hsql.create.app.sql' is not available
	at org.flowable.common.engine.impl.db.AbstractSqlScriptBasedDbSchemaManager.executeSchemaResource(AbstractSqlScriptBasedDbSchemaManager.java:230)
	at org.flowable.common.engine.impl.db.AbstractSqlScriptBasedDbSchemaManager.executeMandatorySchemaResource(AbstractSqlScriptBasedDbSchemaManager.java:221)
	at org.flowable.common.engine.impl.db.EngineSqlScriptBasedDbSchemaManager.dbSchemaCreateEngine(EngineSqlScriptBasedDbSchemaManager.java:108)
	at org.flowable.common.engine.impl.db.EngineSqlScriptBasedDbSchemaManager.schemaUpdateInLock(EngineSqlScriptBasedDbSchemaManager.java:159)
	at org.flowable.common.engine.impl.db.EngineSqlScriptBasedDbSchemaManager.schemaUpdate(EngineSqlScriptBasedDbSchemaManager.java:129)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.flowable.common.engine.impl.db.SchemaOperationsEngineBuild.executeSchemaUpdate(SchemaOperationsEngineBuild.java:98)
	at org.flowable.common.engine.impl.db.SchemaOperationsEngineBuild.execute(SchemaOperationsEngineBuild.java:68)
	at org.flowable.common.engine.impl.db.SchemaOperationsEngineBuild.execute(SchemaOperationsEngineBuild.java:30)
	at org.flowable.app.engine.impl.interceptor.AppCommandInvoker.execute(AppCommandInvoker.java:36)
	at org.flowable.common.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:53)
	at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:105)
	at org.flowable.common.spring.SpringTransactionInterceptor.lambda$execute$0(SpringTransactionInterceptor.java:57)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
	at org.flowable.common.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:57)
	at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30)
	at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:56)
	at org.flowable.app.engine.impl.AppEngineImpl.<init>(AppEngineImpl.java:45)
	at org.flowable.app.engine.AppEngineConfiguration.createEngine(AppEngineConfiguration.java:190)
	at org.flowable.app.engine.AppEngineConfiguration.createEngine(AppEngineConfiguration.java:105)
	at org.flowable.common.engine.impl.AbstractBuildableEngineConfiguration.buildEngine(AbstractBuildableEngineConfiguration.java:30)
	at org.flowable.app.spring.SpringAppEngineConfiguration.buildEngine(SpringAppEngineConfiguration.java:66)
	at org.flowable.app.spring.SpringAppEngineConfiguration.buildEngine(SpringAppEngineConfiguration.java:47)
	at org.flowable.app.engine.AppEngineConfiguration.buildAppEngine(AppEngineConfiguration.java:199)
	at org.flowable.app.spring.AppEngineFactoryBean.getObject(AppEngineFactoryBean.java:58)
	at org.flowable.app.spring.AppEngineFactoryBean.getObject(AppEngineFactoryBean.java:31)
	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:186)
	... 96 more

Expected behavior org.flowable.engine.RuntimeService should be able to instantiate when connecting to HSQL

Work around I was able to work around by copying

  • https://github.com/flowable/flowable-engine/blob/main/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.h2.create.app.sql
  • https://github.com/flowable/flowable-engine/blob/main/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.h2.create.dmn.sql
  • https://github.com/flowable/flowable-engine/blob/main/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.h2.create.eventregistry.sql

To src/test/resources and rename them with hsql vice h2, meaning I wound up with

  • org/flowable/app/db/create/flowable.hsql.create.app.sql
  • org/flowable/eventregistry/db/create/flowable.hsql.create.eventregistry.sql
  • org/flowable/dmn/db/create/flowable.hsql.create.dmn.sql

Then the test passed

bgiaccio avatar Jan 08 '25 20:01 bgiaccio

thanks for the feedback, we indeed didn't include hsql in the changes done for 7.1.0. We'll take care of this for the next minor release.

tijsrademakers avatar Jan 09 '25 08:01 tijsrademakers