Why Notifications’ WF events go to a WF_DEFERRED queue instead of directly to WF_NOTIFICATION_OUT?

Hello everyone !!!

WF ADMINISTRATION QUESTION:
Does anybody aware why notifications' WF events go to the WF_DEFERRED
queue first of all instead of going directly to a WF_NOTIFICATION_OUT
queue?

The process of Notifications processing is as follows:
================================================
A. CALL wf_notification.send
You (or others modules) call this procedure if you would like to send
a Notification.
This procedure places a record in to WF_NOTIFICATIONS table
and enquiring a corresponding event into a WF_DEFERRED queue.

B. Workflow Deferred Agent Listener, dequeues event
A Deferred Agent dequeues event from the WF_DEFERRED queue
Generates Email (if needed) text in XML format
Puts event into the WF_NOTIFICATION_OUT queue

C. Workflow Notification Mailer dequeues event
Notification Mailer dequeues event from the WF_NOTIFICATION_OUT queue
Sends an email and updates WF_NOTIFICATIONS table accordantly.
================================================

UNCLEAR QUESTIONS where your input would bee more then appreciated:
------------------------------------------------------------------------------
I. Why we need WF_DEFERRED queue in Notification Sending process?
Oracle theoretically can use WF_NOTIFICATION_OUT queue directly.
Eliminating B phase completely.

II. Who a Deferred Agent Listener process knows that it need to
enqueue event in to the WF_NOTIFICATION_OUT queue?
There are a lot different events processed by this Agent from
WF_DEFERRED queue. Just wonder who Agent knows that notifications
events need to be enqueued in to WF_NOTIFICATION_OUT? There are no any
event subscriptions or something that would tell Oracle.
------------------------------------------------------------------------------

I would really appreciated your ideas and opinions.
Please help me to put light on that question.

Thank you in advance,
Yury

Other related posts: