Siebel – EAI Queue – Usage
by Nitin JainI had introduced the concept of Siebel EAI Queues in my last post. You can read it here.
Today, I would discuss its usage, as to how we can use it in our implementations.
A simple ‘About View’ of the EAI Queue screen shows us that the two applets are based on the following -
| Business Component | Table |
| EAI Queue | S_EAI_QUEUE |
| EAI Queue Item | S_EAI_QUEUE_ITM |
The usage of these Siebel EAI Queues is through the vanilla Business Service, “EAI XML Queuing Service”. The various self explanatory methods on this Business Service are:
AddMessage – Add message to the EAI Queue
DeleteMessage – Delete message from the EAI Queue
GetMessage – Retrieve a message from the EAI Queue
UpdateStatus – Update the status of an existind message on the queue
GetStatus – Get the Status of a particular message on the queue. The messages supported OOB are – Confirmed, Error in Processing, Error in Sending, Initial, Processed, Sent
I will try to demonstrate the usage through a TEST queue.
Navigate to the screen Administration – Integration -> EAI Queue.
Do a NewRecord with the Queue name of your choice. I gave the name, “Nitin Test Queue”.
To use it, I created a simple two step workflow-
Step 1:
Query step using EAI Siebel Adapter. I made a simple query on Order Header. This returned a SiebelMessage.
Step 2:
Use the Business Service, “EAI XML Queuing Service”, method “AddMessage”.
Input Paramters:
QueueName Nitin Test Queue
ReferenceID Dummy-01
SiebelMessage
Status Initial
You will notice that a new record will be created on the EAI Queue screen. I noticed that Siebel uses the Windows temp directory as a temporary storage area. The working is something similar to the way Siebel handles the Attachments. Siebel creates separate attachment files in the Siebel Filesystem and exposes that through an interface. Siebel will autogenerate a Sequence Number everytime a new message is inserted into the EAI Queue.
Voila! No need for any customization. I have a ready made OOB solution which is scalable, robust and can be used for for Logging and Error Handling purposes. The best part is, I got it up and working in say about 5-10 minutes. Any other custom architecture could possibly take 2-3 resources working on it maybe for Weeks, if not months. They could be covering phases like conceptualizing, architecting, prototyping, implementing, testing, embedding in our flows, testing again, etc. However, a custom architecture comes with its own set of pros and cons. This may not just be the best of solutions after all. Stay tuned for my critique on EAI Queues..
This is an interesting Siebel functionality. I don’t think you need any custom modules after this, unless you have very specific requirements from the client.
It is good article. Thanks for sharing the info and your time. Thanks
Thanks, Kathir. Appreciate your comments!
Really nice post on EAI..
Regarding this EAI Queue..I have a question(Being new to EAI)
Does this mean that a new Queue will be created in system which is not connected to any system and when will simulate the above workflow, it will just place message in the queue which is not being listened by any system..
Yes, you are right. The messages just hold there.
You have to create a new Custom component to read the messages on this queue, and take action as per the Business Requirement. Nice concept, eh?
EAI Queue is not typically a Queue (Queue Based systems like IBM MQ, JMS Queue or MSMQ wherein the data is stored as a CLOB object in one of the columns). Rather the data (the message which you intend to store) is stored as a file in the Siebel Filesystem. A link is provided on the UI to access the content easily by a single mouse click.
Apart from storing messages for Interfaces, EAI Queue can also be used as a means to retry messages if interfaces fail due to system exceptions.
Typically when you intend to use EAI Queue for integrations (wherein multiple interfaces have been implemented) here are some best practices to follow:
1. A standard operating procedure has to be in place to archive the messages on a regular basis lest it will consume HD space on the application server host).
2. The Reference Id, Additional Field 2, Additional Field 3 and Comments fields can be used to store some meaningful information which will allow an Admin or a developer per say to access the correct data set being searched for. Else search becomes a tedious process.
Hi Nitin,
Does the “EAI XML Queuing Service” allow us to store the raw response XML in “EAI Queues” for error handling purposes, before it is converted to a SiebelMessage?
Jason
Nice point, Jason. I haven’t tried it actually, but, I guess it’s possible. It could act as a complete Logging mechanism this way.
Jason, why don’t you give it a shot, and update your findings on this post?!
I see this topic turning into a nice discussion here.
Hi Nitin
The AddMessage method in “EAI XML Queuing Service” looks like it only accepts a SiebelMessage, which makes it pretty useless as a XML logger.
You could get around this limitation, by injecting the XML into a wrapper IO, but it would be nice if we could log the raw XML.
Jason
You certainly deserve a round of applause for your post and more specifically, your blog in general. Very high quality material
You certainly deserve a round of applause for your post and more specifically, your blog in general. Very high quality material