Wir haben ein Produktionssystem, das eine Menge Serialisierung verwendet. Was wir im Grunde tun, ist ein Objekt namens ProcessData als Byte-Array in der jbpm-Datenbank zu speichern. Daher ist dies serialisiert.
Betrachten Sie das folgende Objekt.
public class ProcessData implements Serializable {
private static final long serialVersionUID = -4859440951531011062L;
public void getX() {
//nicht wichtig
}
}
Nehmen wir nun an, wir haben dieses Objekt als Byte-Array in der JBPM-Datenbank gespeichert und verwenden es in der Produktion.
Jetzt wollen wir später dieses ProcessData-Objekt mit neuen Daten aktualisieren
public class ProcessData implements Serializable {
private static final long serialVersionUID = -4859440951531011062L;
public void getX() {
//nicht wichtig
}
public void getY() {
//nicht wichtig
}
}
Das Problem ist nun, dass wir beim Laden des alten
gespeicherten ProcessData-Objekts in JBPM eine Ausnahme erhalten Caused by: java.io.InvalidClassException: my.package.ProcessData; lokale Klasse inkompatibel: stream class desc serialVersionUID = 6651422488035743444, lokale Klasse serialVersionUID = -7966721901330644987
Meine Frage ist nun, wie können wir dieses Problem lösen? Wie können wir das serialisierte Objekt lesen und irgendwie in dieser neuen Klasse transformieren. Ist das überhaupt möglich? Denken Sie daran, dass wir nur begrenzte Kontrolle über die JBPM-Bibliothek haben.