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

标签 grails activiti camunda

我正在将我的 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/

相关文章:

grails - Grails Spring Security如何自定义(或添加)其他身份验证规则

javascript - Activiti错误:using JavaScript in . bpmn20.xml

workflow - 编辑任务工作流程 FORM 更改

spring-boot - 用Grails 3设置Camunda

grails - 使用变量作为键在gsp页面Grails中访问Map值

grails - GrailsUI(YUI)数据表悬停事件

grails - 开发阶段 "web-app"文件夹的位置

activiti - 如何为jsf页面设置activiti表单(来自xml文件)属性

javascript - 对 bpmn 属性面板的服务任务下的委托(delegate)条目的更改未在 UI 上更新

rest - 是什么导致 Camunda 流程定义 ID 的构建和管理方式不同?