Author |
Message
|
millerca |
Posted: Wed Nov 08, 2006 5:51 am Post subject: Automated flow from 2 XML's |
|
|
Novice
Joined: 04 Sep 2001 Posts: 12 Location: OCLC - Dublin, OH
|
First off...I'm new to Workflow and what we currently have in place was written for us by consultants. I'm looking at tutorials etc but not finding anything that helps with this task. All of the examples I've read so far at some point have a user go into the client and complete a process.
Any help would be great
Version: WebSphere MQ WorkFlow 3.5
Platform: Windows 2000
DataBase: DB2
IT Staff training: Minimal (Had one class 4yrs ago then didn't get to use anything from it)
We are starting a new project where we are required to do the following tasks:
1) A new customer creates an account and places an order from our web store. The order will be an XML message and arrives via a queue.
2) The order needs held in WorkFlow until an account update (another XML) message arrives. The key to match account and order will be the user_id of the person who created the account and placed the order.
It sounds simple BUT this have to have no human intervention in WorkFlow. There is no known/set wait time for the order.
I'm really at a loss on how to even approach this using WorkFlow. We need to get answers to mgmt and project sponsors soon and I've been charged with the task of figuring this out and starting design and development ASAP. |
|
Back to top |
|
|
jmac |
Posted: Wed Nov 08, 2006 8:06 am Post subject: |
|
|
Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
This might be done more easily using WPS and BPC than with MQWF.
I am not saying that this can not be done with MQWF, but there are some facilities in WPS that would make this a little easier.
Based on the details you have provided, I would say that you need to start the instance, and then wait for the 2nd message. The trick will be collating the 2nd message with its partner. In MQWF I would approach this by putting the instance into a wait (i.e an activity that never runs) and waiting for this 2nd message, once it arrives you would need to force finish the waiting activity to get the instance moving. _________________ John McDonald
RETIRED |
|
Back to top |
|
|
millerca |
Posted: Wed Nov 08, 2006 9:49 am Post subject: |
|
|
Novice
Joined: 04 Sep 2001 Posts: 12 Location: OCLC - Dublin, OH
|
How would I associate the 1st message with the second? Is there a table that my second process can kick off a query of to find the correct process id? Any examples or further details would really help.
Cat |
|
Back to top |
|
|
jmac |
Posted: Wed Nov 08, 2006 9:59 am Post subject: |
|
|
Jedi Knight
Joined: 27 Jun 2001 Posts: 3081 Location: EmeriCon, LLC
|
This is the part you are going to have to figure out... I do not know enough about your application to answer that.
Typically you would put something in the PI description, or AI description, so that you could do a query and find the proper activity to update.
What you are trying to do is non-trivial, and you likely should get some help in implementing this project. _________________ John McDonald
RETIRED |
|
Back to top |
|
|
millerca |
Posted: Wed Nov 08, 2006 10:02 am Post subject: |
|
|
Novice
Joined: 04 Sep 2001 Posts: 12 Location: OCLC - Dublin, OH
|
That is starting to be my feelings on this too. Without training we are trying to learn this on the fly and I had a feeling when they came to me about it that it was going to be a huge challenge. I'm getting this because I am a MQ admin/developer but WorkFlow looks to be a different animal than writing MQI programs.
I'll keep looking for examples, etc that I can use to help me in this quest. If you think of anything else that would really help too. The current time line is to install in Feb 2007.
Thanks,
Cat |
|
Back to top |
|
|
kotha |
Posted: Wed Nov 08, 2006 11:56 am Post subject: |
|
|
Partisan
Joined: 12 Mar 2005 Posts: 333
|
To compare two xml messages you got into workflow:
Create an sync automatic activity. Input data structure should hold the data from the previous two activities in the child data structures within. This way you can send all the data into a queue as xml message.
Now, write a java program to parse, read and compare the elements (user_id )you want.
Create a xml message and put in a system queue where the sync upes will pick and the process will continue in workflow.
This is my approach to your scenario. |
|
Back to top |
|
|
tsrisudh |
Posted: Mon Nov 13, 2006 1:58 am Post subject: |
|
|
Centurion
Joined: 11 Aug 2005 Posts: 113
|
I would suggest a slightly different approach.
When the first message arrives create a workitem which has a manual start, make sure the data structure contains the identifier (User ID) also make it available in the GC (to make it easy to search)
When the second message arrives search for the workitem created in the workflow and do a check in and checkout this will complete the workitem
Hope this helps _________________ Srisudhir Tadepalli |
|
Back to top |
|
|
millerca |
Posted: Wed Nov 15, 2006 12:13 pm Post subject: |
|
|
Novice
Joined: 04 Sep 2001 Posts: 12 Location: OCLC - Dublin, OH
|
Here is an update on this process we are trying to design/build:
We are going to have up to three XML message types going into this process (can you even do that?)
Part 1:
A new account and new order are placed via the online store. These are two XML messages that need held in workflow while we wait for an institution admin to approve of the account creation and order.
Part 2:
Assuming the admin approves of the creation of account and order the account XML needs released so that the data can be inserted into Siebel. The order is still held.
Part 3:
The account requires manual processing to set some critical fields in Siebel. Once this is complete an new (and different) account XML is created. This XML will need to go back to WF to trigger the held order to resume processing.
All of these are tied together via an id (be it userid or orderid). I have a mdoel FDL where I take in a mocked up order and hold it. I set the process name to the userid. I have yet to figure out how to get the second XML (account) to go into workflow to force this held order to process.
Like I said in the original post I'm new to this (I've done MQI coding and MQ admin support for over 4yrs) and any guidance would be great.
tsrisudh - Could you provide me a little more info on what your suggestion means? I'm not up to speed yet with all the acronems etc.
Thanks,
Cat |
|
Back to top |
|
|
koko |
Posted: Tue Nov 21, 2006 2:49 pm Post subject: |
|
|
Master
Joined: 26 Sep 2003 Posts: 206
|
Let me take a shot at it. Please excuse me if I say something totally irrelevant to your problem here.
1. Create Two structs called OrderStruct and AccountStruct and fill in these structures with whatever they need thru the span of flow.
2. Also create a higherlevel struct which can be carried all along the flow and include the above created structs as its members. It will also have a few other members within it apart from these two structs( May be IsAccountApproved & IsOrderApproved).
3. Instantiate the workflow with the Higher level struct.
4. Create two parallel automatic synchronic steps one for Account and one for Order. ( These can be implemented by UPES)
5. Have a NO-OP just to join these two steps.
6. The decision after this NO-OP can decide on all the various combination of outcomes you have, including creating a fall-out manual task.
What you are trying to do is not real complicated but to *me* it looks like lack of expereince in the workflow world is making things outlandish here. _________________ Thanks
Koko |
|
Back to top |
|
|
|