The Streams concept was introduced to give the users the right notifications at the right time. Information about new Stream Notification are pushed from the server to connected clients so that it gives faster notification with less overhead on the application.
How it Works
Streams functionality uses an Oracle JMS Advanced Queue, a message driven bean connected the queue and Web Sockets. The following illustration shows how the functionality works.
All these functionalities create Streams through Fnd_Stream_API.New_Stream_Item which insert records into the FND_STREAM_TAB and put Oracle Advanced Queuing Messages to the queue CLIENT_NOTIF_Q. A Message Driven Bean (MDB) running on the middle-tier is subscribed to this queue and when a new message is queued, this MDB is invoked and starts processing the message. If the Notification is for a user who is currently connected, (has an active websocket connection) then a notification is sent to the client through the Web Socket Endpoint. If the user is not connected, then the message will be discarded. When the client receives the push notification via the web socket it issues a query to the database and fetches the new messages. If the streams panel is closed, then only the new message count is fetched.