我正在使用使用JBPM 3.1和MySQL的應用程序。核心問題是,流程實例的變量包含外部非JBPM Serializable
類的舊版本。當主應用程序升級時,由於特定類實例的SUID已在主應用程序中更改,因此這些流程實例會導致JBPM拋出異常。通過MySQL直接重新序列化JBPM過程變量
我相信我有使用以下描述的技術固定反序列化過程的方法:
How to deserialize an object persisted in a db now when the object has different serialVersionUID
不過,我的問題是搞清楚在MySQL JBPM商店流程實例變量,所以我可以編寫一個可以對所有實例的所有變量進行交互的程序,對變量重新進行串行化處理,以便有問題的類將擁有新的SUID,因此JBPM可以針對進程進行操作。
我最初看JBPM表時,看起來JBPM_BYTEARRAY和/或JBPM_BYTEBLOCK可能是要操作的表。但是,我不確定如何繼續。我猜每個流程變量都存儲在一個包裝容器類中。那班是org.jbpm.context.exe.VariableInstance
?或者是別的什麼?
我想,如果我在類路徑中有正確的jar文件,並且我知道JBPM用於在MySQL中存儲過程變量的主類實例,我可以反序列化類(它將修復SUID問題嵌入式問題類實例),並將該類重新串行化。由於JBPM文檔確實提到了有關轉換器的內容,我不確定是否必須複製JPBM在反序列化時執行的轉換過程,或者標準java反序列化是否足夠。
我感覺你的痛苦是:風滾草徽章..嘿 – mcraen 2015-02-02 20:34:41