如何触发camunda中的表更改(使用grails)?

时间:2015-06-20 19:36:24

标签: grails activiti camunda

我正在将我的grails应用程序从activiti迁移到camunda(都用作grails插件)。因为没有完整(自动)数据库迁移,所以我必须自己做一些更改(使用db migration插件)。 camunda将只创建一些新表(如果属性 cmmn 设置为true)。

为此,我必须从camunda禁用作业执行程序并禁用cmmn(以避免迁移)。如果我不禁用这两个提到的属性,那么camunda会尝试在数据库迁移插件可以发挥作用之前创建新表 。这将失败,因为缺少某些列(用作外键约束)。

数据库迁移插件完成迁移后,其余表应由camunda创建。如果启用了cmmn,则仅执行此操作。所以我在bootstrap.groovy中启用了作业执行程序并启用了cmmn。

// will be injected by spring
def processEngine

processEngine.jobExecutor.start() 
processEngine.processEngineConfiguration.cmmnEnabled = true

现在的问题是,我无法触发数据库表的创建。因为这是在流程引擎创建/实例化期间完成的(我已经有了流程引擎)。调用的必要方法是 executeSchemaOperations(),但是这个方法是受保护的(是的,我知道这在groovy中确实不是问题,因为可以调用私有/受保护的方法)。但是,这是我的问题,是否有更好的方法来触发表创建?

我正在使用grails 2.3.11和camunda插件0.4(使用camunda 7.2)。

致以最诚挚的问候和感谢您的帮助, 丹尼尔

1 个答案:

答案 0 :(得分:0)

有趣的问题,似乎你已经解决了大部分问题。

查看executeSchemaOperations()受保护的方法,它似乎只是调用从流程引擎配置中检索的命令执行程序。

所以,你可能会做类似的事情:

processEngineConfiguration.getCommandExecutorSchemaOperations()。execute(new SchemaOperationsProcessEngineBuild())

应从org.comunda.bpm.engine.impl导入SchemaOperationsProcessEngineBuild

显然,正如你所说,你可以简单地调用受保护的方法,但上面的内容会让你超越受保护方法的问题。

干杯, 格雷格