簡體   English   中英

如何在Camunda中觸發表格更改(使用Grails)?

[英]How to trigger table changes in camunda (using grails)?

我正在將我的grails應用程序從activiti遷移到camunda(都用作grails插件)。 因為沒有完整的(自動)數據庫遷移,所以我必須自己做一些更改(使用db migration plugin)。 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)。

最好的問候,並感謝您的幫助,丹尼爾

有趣的問題,看來您已經解決了大多數問題。

看一下executeSchemaOperations()受保護的方法,看起來好像它只是簡單地調用從流程引擎配置中檢索的命令執行程序一樣。

因此,可能您可以執行以下操作:

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

SchemaOperationsProcessEngineBuild應該從org.comunda.bpm.engine.impl導入

顯然,正如您所說的,您可以簡單地調用protected方法,但是以上內容使您擺脫了protected方法的問題。

干杯,格雷格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM