Also, if we can get this done - it would be possible to plug and play
multiple engines. Each engine may be optimized for a different use
case (for example,  Long Running Processes vs. Short Processes).

Thanks,

Shivaraj


On Tue, Mar 22, 2011 at 9:50 PM, Gary Brown <g...@pi4tech.com> wrote:
> Agreed - just need to use a reference that remains stable across
> compilations, but still uniquely identifies the relevant node in the
> DAG.
>
> Regards
> Gary
>
> On Tue, Mar 22, 2011 at 3:43 PM, Shivaraj Tenginakai
> <tshiva...@gmail.com> wrote:
>> Way I have seen this implemented is that we need to distinguish
>> between user state and ode state. ODE state represents the structure
>> of the DAG while the user state represents the value of the variables
>> and the position in the DAG .
>>
>> If we can achieve a clean separation between ODE state and user state,
>> then future evolution would become easy.
>>
>> Shivaraj
>>
>>
>> On Tue, Mar 22, 2011 at 8:42 PM, Tammo van Lessen <tvanles...@gmail.com> 
>> wrote:
>>> Hi Shivaraj, hi Gary,
>>>
>>> yes and no: first, when compiling the process model, each OModel node
>>> contains a unique ID and this is currently a GUID. Thus, even if the
>>> BPEL code is unchanged, the OModel nodes will have different IDs after
>>> compilation. Second, these IDs are used when serializing the runtime
>>> state. The JACOB soup keeps references to the OModel. When serializing
>>> the state, these references are replaced by placeholder objects that
>>> store the GUID of the original node to avoid serializing the whole
>>> OModel object graph. This is an optimization to save time and space.
>>>
>>> Tammo
>>>
>>> On 22.03.2011 15:35, Gary Brown wrote:
>>>> Hi Shivaraj
>>>>
>>>> As far as I am aware this issue is not related to state - only the
>>>> static representation of the business process. The OModel simply
>>>> represents a binary compiled version of the BPEL process definition.
>>>> So all I am suggesting is rather than store the binary version, we
>>>> store the xml version, compile on first load, and the end result is an
>>>> up-to-date OModel, regardless of the age of the process instance.
>>>>
>>>> Regards
>>>> Gary
>>>>
>>>> On Tue, Mar 22, 2011 at 12:34 PM, Shivaraj Tenginakai
>>>> <tshiva...@gmail.com> wrote:
>>>>> Gary,
>>>>>
>>>>> Would it be possible to distinguish between execution optimization and
>>>>> state? As long as state information can be derived from one version to
>>>>> another, it should be fine to recompile (to achieve execution
>>>>> optimization).
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Shivaraj
>>>>>
>>>>>
>>>>> On Tue, Mar 22, 2011 at 3:40 PM, Gary Brown <g...@pi4tech.com> wrote:
>>>>>> As discussed on the call today, we need a way to overcome the
>>>>>> constraints of the serialized OModel which is produced when compiling
>>>>>> the BPEL process.
>>>>>>
>>>>>> Although a more flexible serialization mechanism may provide a
>>>>>> solution, as was also discussed, there will be cases where additional
>>>>>> logic would be required to determine how an older representation
>>>>>> should be evolved into a new representation.
>>>>>>
>>>>>> Another approach would be to use the BPEL process (xml) directly, so
>>>>>> rather than using a binary representation compiled in advance, the
>>>>>> runtime would simply load the BPEL DOM.
>>>>>>
>>>>>> If this required a change to the internal OModel mechanism, then it
>>>>>> may be more work than the proposed dynamic OModel idea, however if we
>>>>>> simply took the approach of "compile on load", then we get away from
>>>>>> the issue, which is the persisted serialized form. We also no longer
>>>>>> require any specific migration logic to move from older versions of
>>>>>> the persisted representation (dynamic or not).
>>>>>>
>>>>>> So we could keep the existing OModel format, which can evolve as
>>>>>> required as long as the compiler is kept in step, and we should no
>>>>>> longer have any issues with long running processes.
>>>>>>
>>>>>> This change could be introduced into the current 1.3.x trunk without
>>>>>> any backward compatibility issues.
>>>>>>
>>>>>> The only trade off is the speed difference between (1) loading the
>>>>>> compiled representation versus (2) parsing the XML & compiling the
>>>>>> BPEL process. If this would need to be performed multiple times in the
>>>>>> same runtime, then a hash of the process could be used to cache the
>>>>>> compiled version so this is only performed once per process
>>>>>> definition.
>>>>>>
>>>>>> Thoughts?
>>>>>>
>>>>>> Regards
>>>>>> Gary
>>>>>>
>>>>>
>>>
>>> --
>>> Tammo van Lessen - http://www.taval.de
>>>
>>
>

Reply via email to