[ 
https://issues.apache.org/jira/browse/ODE-912?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tammo van Lessen updated ODE-912:
---------------------------------

    Labels: gsoc2013  (was: gsoc2012)
    
> [GSoC] Dynamic OModel: Refactor OModel and provide migration
> ------------------------------------------------------------
>
>                 Key: ODE-912
>                 URL: https://issues.apache.org/jira/browse/ODE-912
>             Project: ODE
>          Issue Type: Improvement
>          Components: BPEL Compilation/Parsing, BPEL Runtime
>            Reporter: Tammo van Lessen
>              Labels: gsoc2013
>             Fix For: 1.4
>
>
> The OModel is currently not evolveable. It heavily relies on Java 
> serialization, which tends to fail on backward compatibility, which in turn 
> means we are very restricted regarding changes on that compiled model without 
> losing binary compatibility. This is however important for long-running 
> processes, which is a somewhat crucial feature.
> What we need is a mechanism that enables us to maintain backward 
> compatibility but also to be able to enhance the model (e.g. for extension 
> activities, BPEL4People, or simply bug fixing). In the experimental branch, 
> Matthieu added OModel versioning, which means we can run different OModels in 
> parallel (along with a respective version of the runtime code). The drawback 
> of this approach is that each non-binary-compatible change to the most recent 
> but released OModel version will force us to create a new version, which is 
> code duplication of the OModel + Runtime code.
> Here is my proposal: Address the issue on a different level of abstraction. 
> Instead of using simple fields in serializable classes, we could just store a 
> Map<String, Object> and wrap all data that is currently stored in field in 
> this Map. This means, even if we add new keys/fields, the structure of the 
> class will not change, thus serialization will not be affected. Another 
> benefit of this would be that the extension activity support can be more 
> sophisticated: the compiler part of an extension would be capable to add 
> extension specific information directly to the OModel,
> and the runtime part can directly access that. The downside is a slightly 
> larger memory/serialization footprint (we are now storing Strings instead of 
> the field number).
> In my opinion, this approach could solve our problems with the current 
> OModel, implementing such a new model is not too hard, though boring task. 
> The most difficult part is providing a migration from the old to the new 
> OModel.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to