Author |
Message
|
Liquid |
Posted: Thu Feb 15, 2007 2:55 am Post subject: [SOLVED] Process instance environment inheritance |
|
|
Acolyte
Joined: 08 Sep 2004 Posts: 52 Location: Hungary, Europe
|
Hello!
I've a question about subprocess handling within the wf runtime.
Let's assume thhat there's a process 'A' and a process 'B'.
Process B is a subprocess of process A.
Process A uses process B in a block, so process B is executed
more than once within the lificycle of process A.
Both process definitions has been loaded into wf runtime
and there're many running process instances in wf runtime
form process A.
And here comes the question
I need to change process B (for example I put a new activity into it or
change data container mappings etc.).
What happens with the already running A process instances after
I load (and overwrite the previous template definitions)
process A and B into the runtime?
I mean, the already running A instances will call the changed B subprocess
OR they call that version of B process which template was loaded into
runtime at the moment when A was instancialized (just like the data structures)?
I hope I was understandable. Pls. help!
Liquid
What happens wi
Last edited by Liquid on Mon Feb 19, 2007 1:33 am; edited 1 time in total |
|
Back to top |
|
 |
Liquid |
Posted: Thu Feb 15, 2007 5:06 am Post subject: |
|
|
Acolyte
Joined: 08 Sep 2004 Posts: 52 Location: Hungary, Europe
|
I made some tests which proved that always that B process will be
instancialized, which process template is actually being loaded into
runtime _at that time_ when the subprocess call is executed.
But in this case, my question is:
What happens if the input data stucture of B sub process is changed?
(and of course the A process is also modified and translated into runtime
with process B)
How will the _already running_ A process instances call the changed
data structured B process???
Thanks in advance,
Horváth Róbert Márk |
|
Back to top |
|
 |
jmac |
Posted: Thu Feb 15, 2007 6:33 am Post subject: |
|
|
 Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
Liquid wrote: |
I made some tests which proved that always that B process will be
instancialized, which process template is actually being loaded into
runtime _at that time_ when the subprocess call is executed.
|
This is what MQWF refers to as Late Binding. The Subprocess instance is instantiated at the point that the Subprocess activity is executed.
Liquid wrote: |
But in this case, my question is:
What happens if the input data structure of B sub process is changed?
(and of course the A process is also modified and translated into runtime
with process B)
How will the _already running_ A process instances call the changed
data structured B process??? |
Since the Top Level process "A" was instantiated with the OLD process A template that is what the already running instances will be using. You are going to have to design around this. _________________ John McDonald
RETIRED |
|
Back to top |
|
 |
Liquid |
Posted: Thu Feb 15, 2007 7:10 am Post subject: |
|
|
Acolyte
Joined: 08 Sep 2004 Posts: 52 Location: Hungary, Europe
|
Hi John!
Thanks for the fast reply.
Quote: |
Since the Top Level process "A" was instantiated with the OLD process A template that is what the already running instances will be using. You are going to have to design around this |
This means that I've to deal more versions from the B subprocess. One for the old and already running A process instances, and one for the newly instantiated A processes. Am I right?
--
One more question about the details:
Let's assume that the input data structure of process B is called inB_DS.
Obviously I use inB_DS in the process activity in process A (which calls B).
I change inB_DS, for example I add one element into it.
And finally, import process A, B and inB_DS into runtime.
What happens with the already running A process instances??
They inherited the inB_DS structure when they instantiated in the PAST,
which now changed and OVERWRITED in runtime.
Which inB_DS version is used by the alredy running A instances,
when the process activity is executed (the old or the new one)?
I emphasize, that the process names and also the data strucure
names are NOT changed. So, everything is overwrited
in runtime (with fmcibie .... -f ...).
What is the appropriate "design pattern" for this issue?
Robert
Last edited by Liquid on Thu Feb 15, 2007 7:42 am; edited 2 times in total |
|
Back to top |
|
 |
jmac |
Posted: Thu Feb 15, 2007 7:39 am Post subject: |
|
|
 Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
Liquid wrote: |
This means that I've to deal more versions from the B subprocess. One for the old and already running A process instances, and one for the newly instantiated A processes. Am I right? |
You are correct.
Liquid wrote: |
Which inB_DS version is used by the alredy running A instances, when the process activity is executed (the old or the new one)? |
These "in-flight" instances are already instantiated with the OLD data structure. _________________ John McDonald
RETIRED |
|
Back to top |
|
 |
Liquid |
Posted: Thu Feb 15, 2007 7:59 am Post subject: |
|
|
Acolyte
Joined: 08 Sep 2004 Posts: 52 Location: Hungary, Europe
|
Hi John!
Quote: |
These "in-flight" instances are already instantiated with the OLD data structure. |
Do you mean, the running B subprocesses instantiated with the OLD data structure? If you do, yes I know that.
My question wasn't exact enough. So , which data structure is used when the BLOCK, which contains the process activity, is RESTARTED and the runtime has to instantiate a new B subprocess AGAIN? Remember,
that meanwhile process B and datastructure inB_DS were changed.
Hard to explain, I hope I was understandable.
Offtopic: by the way, John you're very fast now, what I really appreciate! What's the local time out there? I'm sitting in Europe and it's afternoon here.. do you start your job as early??
Thanks,
Robert |
|
Back to top |
|
 |
jmac |
Posted: Thu Feb 15, 2007 8:13 am Post subject: |
|
|
 Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
Robert:
I saw your first post around 0630 PST. I am 9 hours (+/- 1) behind the IBM Workflow lab in Germany (just for your reference).
OK... I understood, but my answer was probably too short. It is my opinion that when the SubProcess activity runs (i.e. the one inside the block) it will have to use the data structure that was in use at the time Process Model A was translated (i.e. the OLD Process B source data structure). In the case of the in-flight instances this would be the old one.
Now, I have never tried this, but I believe it could cause a problem IF you had removed a member from this Data Structure used for the Source of Process B, but in your case you added one, so there will be no issue when the block repeats and you create a new instance of SubProcess B. The new member will always appear "unset" (i.e RC 113) if you access it. IN FACT, if you always set this new member this would be a way to detect an instance of SubProcess B that is using the OLD data structure.
I hope this is a better explanation. _________________ John McDonald
RETIRED |
|
Back to top |
|
 |
vijaycr |
Posted: Thu Feb 15, 2007 9:38 am Post subject: |
|
|
 Acolyte
Joined: 11 Oct 2006 Posts: 62 Location: Singapore
|
If u have removed any containers from B_DS and u have a mapping for that in process a you will not be able to import process a again without fixing the mapping.
if you import processb with addition or removal of containers the next time the block is restarted,Process b will be instantiated with the new DS additional containers will not be set (as tough there was no mapping for it) and the removed containers will be ignored |
|
Back to top |
|
 |
Liquid |
Posted: Thu Feb 15, 2007 10:41 am Post subject: |
|
|
Acolyte
Joined: 08 Sep 2004 Posts: 52 Location: Hungary, Europe
|
Hi John!
Ok, I think I start to see the big picture
Though, I've to think on about some details (for example mapping etc.).
Anyway, thanks for your help it was quite efficient. Offtopic: BTW, are
you sending posts to this forum just for fun or it's part of your job?
Robert |
|
Back to top |
|
 |
Liquid |
Posted: Thu Feb 15, 2007 10:43 am Post subject: |
|
|
Acolyte
Joined: 08 Sep 2004 Posts: 52 Location: Hungary, Europe
|
|
Back to top |
|
 |
jmac |
Posted: Thu Feb 15, 2007 10:51 am Post subject: |
|
|
 Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
Liquid wrote: |
BTW, are you sending posts to this forum just for fun or it's part of your job? |
I am simply a HUGE fan of IBM's workflow products and they have helped my make a fairly good living for over 10 years, so it's a way to give a little back. Now on a more selfish motive ( ) it doesn't hurt my reputation as an MQWF consultant to be known for mqseries.net. So I guess the answer is a little of both considering that posting to the forum is my advertising budget  _________________ John McDonald
RETIRED |
|
Back to top |
|
 |
Liquid |
Posted: Thu Feb 15, 2007 11:28 am Post subject: |
|
|
Acolyte
Joined: 08 Sep 2004 Posts: 52 Location: Hungary, Europe
|
very tricky!
Ok, after this discussion I've some more question about IBM products but once it's offtopic, secondly it's quite late here, thus I'll send them later in private if it's not a problem for you.
Regards,
Robert |
|
Back to top |
|
 |
|