Author |
Message
|
mca |
Posted: Thu Nov 02, 2006 3:22 pm Post subject: Workflow overwrite process |
|
|
Disciple
Joined: 09 Mar 2005 Posts: 196
|
We are enhancing an existing project in production for which we have hundreds of in-flight orders. Making changes to the project will include changing the data structures and fields for the processes in that project.
My requirement is -> In-flight orders must be using old workflow code and new orders must point to new code. I did some testing of this by changing the way i export the FDL. Here are the results ... but nothing worked.
fmcibie -t -o -> Some process, that are yet to be called in Inflight orders are incorporating new code, which i dont want.
fmcibie -t -> Got lots of errors saying "Process already exists". Not able to overwrite
fmcibie -0 -> Even new instances are using old process, which means new processa re not getting imported.
So, in this above scenario what approach would be good for me to support in-flight orders and new orders using new code.
Thanks,
MCA |
|
Back to top |
|
 |
tsrisudh |
Posted: Thu Nov 02, 2006 11:50 pm Post subject: |
|
|
 Centurion
Joined: 11 Aug 2005 Posts: 113
|
I use -o -f -t and this makes sure that the old processes follow old FDL and new ones the latest FDL
But beware of one thing, if you are using a UPES with an MDB then be sure to handle that differntly for both FDLs _________________ Srisudhir Tadepalli |
|
Back to top |
|
 |
jmac |
Posted: Fri Nov 03, 2006 6:20 am Post subject: Re: Workflow overwrite process |
|
|
 Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
mca wrote: |
We are enhancing an existing project in production for which we have hundreds of in-flight orders. |
If I understand correctly what you are saying, then I do not understand your problem. To me an "in flight" instance is one which has been instantiated but not yet complete. There is no way that this instance is going to run using new data structures, or newly defined programs. Once a process is instantiated it runs as the template was defined. This sounds to me like what you want.
Perhaps I just need a better explanation of the problem, but I don't see how import helps this issue at all. _________________ John McDonald
RETIRED |
|
Back to top |
|
 |
kotha |
Posted: Fri Nov 03, 2006 9:35 am Post subject: |
|
|
Partisan
Joined: 12 Mar 2005 Posts: 333
|
I agree with John on this. There is better mechanism in WPS but that is another whole different one.
The simplest way of doing this is: You have one template deployed and is currently running and it has in-flight orders etc. So use the same FDL code and change the template name and deploy it. Use this template name for interfacing with ICS or any broker that use. This way your end business users wont see a change and also for sure you wont get any problems. Once the in=-light orders completed, remove the old template. |
|
Back to top |
|
 |
koko |
Posted: Fri Nov 03, 2006 10:10 am Post subject: |
|
|
 Master
Joined: 26 Sep 2003 Posts: 206
|
mca wrote
Quote: |
Making changes to the project will include changing the data structures and fields for the processes in that project. |
Jmac :
I *think* mca is trying to refer to the subprocesses in an inflight instance. Like for example a MAINProcess is in middle of the flow and after a few activities in its route, it would hit a SUBProcess. I guess his question to make sure this MainProcess would use all the datastructures and logic of SUBProcessVersion1 where as the newly instantiated processes should use the SUBProcessVersion2( the one which replaced SUBProcessVersion1).
Kotha
How to make an in flight process NOT to use the latest subprocess WITHOUT using a different name for it?
But then, I do not exactly know if this is what mca wants to know here.LOL _________________ Thanks
Koko |
|
Back to top |
|
 |
jmac |
Posted: Fri Nov 03, 2006 10:27 am Post subject: |
|
|
 Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
Koko:
IF the question is about a subprocess, then there is no way around changing the name of the subprocess. Through dynamic subprocess invocation, this could be possible without changing the top level process.
However, I think this is moot, I see nothing in mca's original question that leads me to believe that it is referring to subprocesses. _________________ John McDonald
RETIRED |
|
Back to top |
|
 |
kotha |
Posted: Fri Nov 03, 2006 11:54 am Post subject: |
|
|
Partisan
Joined: 12 Mar 2005 Posts: 333
|
If there are subprocesses to be invoked should also need changes, You may need to deploy a whole new one.
That is the only way I think of right now.  |
|
Back to top |
|
 |
mca |
Posted: Mon Nov 06, 2006 12:51 pm Post subject: |
|
|
Disciple
Joined: 09 Mar 2005 Posts: 196
|
Thanks for all your replies. Let me eloborate my question.
I have a project whose template Name for example is "ProcessMain", which is the name of process. I have 3 steps in it. First Step is a sub-process is named say SubProcess1, second step(Sub-Process) SubProcess2 and SubProcess3 respectively.
There is an instance of this project which is in SubProcess1 and we deploy the ehancement of this project adding new UPES step to the SubProcess2. Now when the instance is done processing SubProcess1, will it call the old sub-process with out the new UPES step or call the new one with UPES step? I want it to call the old one because the UPES step was not present when it got instantiated and it may break my code and data mappings with this addition of new steps in the enhanced project. So, is there a way for new instances to follow new code and old instances to call the old sub-process.
That was my question.
Now after further investigation, i figured out that even using -f option, the new sub-process will be instantiated. The old one will be over writen. These are the results of my various exporting options
fmcibie -t -i -> Lots of errors saying Proces and Users already exists
fmcibie -o -i -> Even new instances are using old sub-process. New one did not get deployed.
fmcibie -t -o -i -> Old Instances are incorporating new Sub-Process.
fmcibie -t -f -o -i -> Old instances are incorporating new Sub-Process.
So, finally i decided to change the Process names of the enhanced version so that old process remains same and new ones call the new Sub-Process. If there is any other way for doing this please let me know.
MCA |
|
Back to top |
|
 |
jmac |
Posted: Mon Nov 06, 2006 1:10 pm Post subject: |
|
|
 Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
OK This is what you have
Process Model: MainProcess
Contains 3 (sub)Process activities
SubProcess1
SubProcess2
SubProcess3
You currently have an Instance: Instance001
This instance is currently in the SubProcess1 activity.
Prior to activity SubProcess2 being run, you deploy a new version of the process invoked by SubProcess2.
Your question is what will run.
The answer to this has to do with what MQWF calls "late binding" A Process activity does not instantiate the associated process model until the activity is run so in your case this will run the newly deployed process model 2.
mca wrote: |
I want it to call the old one because the UPES step was not present when it got instantiated and it may break my code and data mappings with this addition of new steps in the enhanced project. So, is there a way for new instances to follow new code and old instances to call the old sub-process. |
The only way to make this happen is to use a different name for the new subprocess.
mca wrote: |
Now after further investigation, i figured out that even using -f option, the new sub-process will be instantiated. The old one will be over written. |
This is moot... how you import has absolutely no effect on this. What you are seeing is entirely the result of MQWF's "late binding". _________________ John McDonald
RETIRED |
|
Back to top |
|
 |
mca |
Posted: Mon Nov 06, 2006 2:19 pm Post subject: |
|
|
Disciple
Joined: 09 Mar 2005 Posts: 196
|
Thanks a lot JMAC. That was my exact question and i wish i could explain like the way you did, elaborately. So, the answer to this is to change the process names and i will do that.
Will we need to change the Block names the same way that are present in process and sub-process or this rule will only apply to Process and Sub-Process, not blocks?
MCA |
|
Back to top |
|
 |
jmac |
Posted: Mon Nov 06, 2006 2:31 pm Post subject: |
|
|
 Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
Late binding only applies to Process activities.
NOTE: My personal preference is to call these (sub)Process activities, since they always indicate you will be calling a child process. _________________ John McDonald
RETIRED |
|
Back to top |
|
 |
|