Author |
Message
|
tinnapat |
Posted: Tue Mar 21, 2006 4:35 am Post subject: Can all collaboration process events sequencially |
|
|
Novice
Joined: 20 Jan 2006 Posts: 19
|
If I have a connector deliverying BOs handled by different collaboration. Each collaboration process different BOs and is set to handle only 1 concurrent event. I want all event to be processed sequencialy by the time it is delivered to ICS. Can I archive this?
I am thinking of the situation that there are 10 BOs "A" and 10 BOs "B" delivered to ICS. What I need is that those 20 BO be processes sequencially but it is possible that both BOs "A" and "B" are processed simultaiously since they are handled by different collaboration, isn't it?
Thank you very much in advanced.
Best regards, |
|
Back to top |
|
 |
vennela |
Posted: Tue Mar 21, 2006 8:39 am Post subject: |
|
|
 Jedi Knight
Joined: 11 Aug 2002 Posts: 4055 Location: Hyderabad, India
|
What you are saying doesn't make sense. |
|
Back to top |
|
 |
djeripo |
Posted: Tue Mar 21, 2006 12:09 pm Post subject: |
|
|
 Master
Joined: 25 Jan 2004 Posts: 225
|
To acheive whatever you have described(and whatever I have understood) you havent have to do anything.That is how ICS is designed.
Say,If you have 10 different collaborations all 10 different collaborations operate parallelly meaning,One collaboration is going to process 1 event at a time in the sense 10 collaborations are going to process 10 events.
If you want acheive more through put than this default behaviour,
you have to tweak a parameter called Max Number Concurrent Events on your Collab Object. |
|
Back to top |
|
 |
vennela |
Posted: Tue Mar 21, 2006 12:40 pm Post subject: |
|
|
 Jedi Knight
Joined: 11 Aug 2002 Posts: 4055 Location: Hyderabad, India
|
djeripo wrote: |
To acheive whatever you have described(and whatever I have understood) you havent have to do anything.That is how ICS is designed.
Say,If you have 10 different collaborations all 10 different collaborations operate parallelly meaning,One collaboration is going to process 1 event at a time in the sense 10 collaborations are going to process 10 events.
If you want acheive more through put than this default behaviour,
you have to tweak a parameter called Max Number Concurrent Events on your Collab Object. |
Based on the question, he most likely wants to do it the other way. |
|
Back to top |
|
 |
tinnapat |
Posted: Tue Mar 21, 2006 4:41 pm Post subject: |
|
|
Novice
Joined: 20 Jan 2006 Posts: 19
|
Yes . What I want is the other way. Basically I have 2 collaboration, One is to create master data, and another one is to create transaction data. These 2 collatboration handle different BOs. All events have to be handled sequentially since master data has to be created before transaction data depended on it.
Lets says there are 10 master data BOs coming followed by a transaction BO which depend on 10th master BOs. It is possible that this transaction BO (11th event) is handled before the 10th master BO (10th event), isn't it? If it is so, can I avoid that.
Thank you very much again. |
|
Back to top |
|
 |
sdng |
Posted: Wed Mar 22, 2006 12:20 am Post subject: |
|
|
Acolyte
Joined: 23 Nov 2005 Posts: 53
|
it is very good question ))
i dont know why IBM did not make it (may be thay right because it will be work slow)
it is need for send related data when one bo have fk to other
i have solved it so:
1. in all gbo i have made add event "lock"
2. in all collab i have made scenario "lock" that is empty
3. in collab for bo that have foreign key to other bo i invoke child collab with child bo's keys before doing anything in parent collab
4. it is working (when you invoke child collab it will wait while child collab dont finish all process for child bo _________________ Are you gangsters? No, we are Russians! |
|
Back to top |
|
 |
tinnapat |
Posted: Wed Mar 22, 2006 9:46 am Post subject: |
|
|
Novice
Joined: 20 Jan 2006 Posts: 19
|
Hi. Thanks again for your comment but I don't quite get it. Can you explain more about your solution please?
Quote: |
1. in all gbo i have made add event "lock" |
Did you mean to add child BO called "lock" to all GBOs ?
Quote: |
2. in all collab i have made scenario "lock" that is empty |
Is this mean to create scenario called "lock" in all collaboration and also create a new port, let's say "lock" to activate this scenario?
Quote: |
3. in collab for bo that have foreign key to other bo i invoke child collab with child bo's keys before doing anything in parent collab
|
Is this mean for each collaboration, I have to create 2 collaboration objects ? Let's say called "CollaborationA" and "CollaborationA_Lock". Then wire the "Lock" port of these two collaboration objects together ?
Does anyone else has any suggestion? Any comments and suggestions are very welcome. Thanks. |
|
Back to top |
|
 |
Kram |
Posted: Wed Mar 22, 2006 10:24 am Post subject: |
|
|
Voyager
Joined: 02 Mar 2006 Posts: 87
|
you can try using a DB connection Pool where you insert the masterdata's indentifier information and any additional information which helps you to indentify the message into the table.
When you have the transaction data object event it would try to check if the masterdata info is available in the table, if yes it would go ahead and process the message, else you can try to wait for a certain time and then retry.
you can also try putting the trasanction data messages if the masterdata is not avaialble onto a different queue and configure your connector to poll after a significant amount of time
I am not sure if this is a best solution for sequencing but it will help you to avoid sending the transactional data before the masterdata. this will definitely affect performance .. keep that in mind too _________________ Regards,
Ram |
|
Back to top |
|
 |
tinnapat |
Posted: Thu Mar 23, 2006 7:23 pm Post subject: |
|
|
Novice
Joined: 20 Jan 2006 Posts: 19
|
Thanks Kram. Yes I think it is one of the workaround but it will be quite diffecult for me since in my project there are many master data and transction data. Some transaction data also depends on more than one master data. If ICS just provide ability to config maximum instance of active colaboration, it would solve my problem.
By the way, does ICS provide any managament API that I can programmatically check the number of event buffered in a collaboration? If so it may solve my problem.
Thanks |
|
Back to top |
|
 |
Kram |
Posted: Fri Mar 24, 2006 6:46 am Post subject: |
|
|
Voyager
Joined: 02 Mar 2006 Posts: 87
|
Why do you need to store all the data, just the unique ID for the master data should be good for you to know if the master data has already been submitted to the target application or not...
i dont think ICS provides any management API to check the number of buffered events...
what do you mean by
If ICS just provide ability to config maximum instance of active colaboration, it would solve my problem... can you let us know how? _________________ Regards,
Ram |
|
Back to top |
|
 |
Curry |
Posted: Fri Mar 24, 2006 9:56 am Post subject: Probable workaround |
|
|
Newbie
Joined: 22 Feb 2006 Posts: 7
|
Here is how i know someone designed this long time ago. I am not even sure if its feasible for you.
Design your Generic Business Object as a Wrapper Object (Master + whatever). Have a single collaboration object and write the splitter logic in the collab. Ensure that everything is single threaded (max concurency of collab, connector, etc).
Hope this helps |
|
Back to top |
|
 |
tinnapat |
Posted: Sun Mar 26, 2006 11:56 pm Post subject: |
|
|
Novice
Joined: 20 Jan 2006 Posts: 19
|
Kram wrote: |
what do you mean by
If ICS just provide ability to config maximum instance of active colaboration, it would solve my problem... can you let us know how? |
I was thinking that I would check to see if there is no event for master data processing in queue before continue processing transaction data event
Curry wrote: |
Here is how i know someone designed this long time ago. I am not even sure if its feasible for you.
Design your Generic Business Object as a Wrapper Object (Master + whatever). Have a single collaboration object and write the splitter logic in the collab. Ensure that everything is single threaded (max concurency of collab, connector, etc).
Hope this helps |
I will think about it. Thanks for your comment. |
|
Back to top |
|
 |
Kram |
Posted: Mon Mar 27, 2006 8:08 am Post subject: |
|
|
Voyager
Joined: 02 Mar 2006 Posts: 87
|
based on what you said... suppose you get master data and transactional data almost at the same time and if your master data takes a split second longer than the transactional data ...
when you check for any events in the master data processsing while processing the transactional data it would be zero.. but actually the master data message has not been processed.. .. would that not be an issue...
would suggest rather than checking for any events its a good solution to check for the exact master data ID.
extending curry's suggestion... why dont you use a single GBO and then handle your sequencing using 1 collaboration...thats a pretty easy soln.. _________________ Regards,
Ram |
|
Back to top |
|
 |
tinnapat |
Posted: Mon Mar 27, 2006 6:49 pm Post subject: |
|
|
Novice
Joined: 20 Jan 2006 Posts: 19
|
Hello kram.
Thanks for your comment . Yes, i am thinking that using single BO and sinle collaboration would be the right way to do it. I have to say that I am inexperience with ICS and this is my first project with it. There are many interface to call many SAP RFC so at first, I model calling to different RFC using difference collaboration ad different BO. I wll try out the single BO and single collaboration approach.
Thanks again. |
|
Back to top |
|
 |
|