Thanks for all your inputs to the discussion.
I see that probably many of you come from B2B world. I don’t think that the solutions posted so far will be suitable for EAI integration, say the CRM & Billing scenarios. Creating multiple brokers and filters might work for small numbers of customers, but imagine I am a telco operator and I have 5 millions of customers… What then??
Let me present the problem in more detail. Let say we have a CRM system and an IS adapter for it. In the CRM system we have 5 millions of customers. Then we have several backend systems, SCE (say SAP), billing system and mobile network activation platform.
The problematic scenario I see could happen when a customer places and order through the CRM system. To order completion process may take couple of days. This would be a long lived process, which would go to SCE system to say order a phone. After the order is executed in SCE the process continues and creates an account in the billing and finally activates a customer on the mobile network. Now what if the same customer want to place another order while the previous is still being executed? Of course you could limit your CRM system functionality and disallow the customer to place another order. But this is too much of a limitation. The desired would be to allow the customer to place another order and have the middleware layer to assure the correct execution of the order. Say now that the other order is to add some extra mobile services (call barring, etc.). To execute the order one needs to send it only to the mobile activation platform.
This scenario shows that the target application queuing is not a suitable solution. The network activation platform will not know about the first order if the first order is stuck in the SCE. It is the middleware layer that needs to maintain the order.
To summarize the problem the source application is a single IS publisher. It has huge number of customers. The customer may place and order without waiting for completion of the previous order. Each order triggers a process and its execution may involve many different target application, say in A, B and C applications or only in C application.
IMHO, webMethods does not support this kind of solutions. To make it work one would need to build some kind of locking mechanism in the middleware layer. I was thinking in trying to use Xref and latching wM tables and use them in this specific customized way.
What are your thoughts?
Thanks again for your opinions.