我正在将我的 grails 应用程序从 activiti 迁移到 camunda(都用作 grails 插件)。因为没有完全(自动)数据库迁移,所以我必须自己做一些更改(使用 db 迁移插件)。 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(),但是这个方法是 protected (是的,我知道这在 groovy 中并不是真正的问题,因为可以调用私有(private)/ protected 方法)。但是,这是我的问题,有没有更好的方法来触发表创建?
我正在使用 grails 2.3.11 和 camunda 插件 0.4(带有 camunda 7.2)。
最好的问候和感谢您的帮助,
丹尼尔
最佳答案
有趣的问题,似乎您已经解决了大部分问题。
查看 executeSchemaOperations() protected 方法,看起来好像它只是调用从流程引擎配置中检索的命令执行器。
因此,您可能可以执行以下操作:
processEngineConfiguration.getCommandExecutorSchemaOperations().execute(new SchemaOperationsProcessEngineBuild())
SchemaOperationsProcessEngineBuild 应该从 org.comunda.bpm.engine.impl 导入
显然,正如您所说,您可以简单地调用 protected 方法,但上面的内容让您摆脱了 protected 方法的问题。
干杯,
格雷格
关于grails - 如何触发camunda中的表更改(使用grails)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30958109/