1、关于邮件发送原理的研究:

the email sending process in EBS isn’t transparent and intuitive. It involves several steps from different EBS areas and utilizes multiple Oracle technology components like:(Notification Mailer的实现是如下组件协作的结果)

  • Workflow Notification module
  • Generic Service Management Framework (GSM)
  • Business Event System (Subscriptions, Deferred processing)
  • Workflow Directory and users setup
  • Vacation rules or routing rules
  • Oracle Advance Queues

如上图三个步骤(蓝色部分),涉及三个地方数据的存储:2个高级队列( Advanced Queues (in red))和1个表 (green).

注意: AQ并不是传统的关系表. An additional care should be taken while accessing these tables (we will talk about this later).

邮件发送进程包括如下步骤:

1. EBS user sends email – EBS使用标准的API实现邮件发送,这个Email的API是用过plsql包 WF_NOTIFICATION来实现的,这个WF_NOTIFICATION包后续会讲到。

1.1. Provides application data – 首先用户session插入业务数据 (比如接收者,信息类型,信息内容) 到 WF_NOTIFICATIONS 表 (不要和上面提的 PL/SQL 包弄混了,这里是表);

1.2. Defers processing Generates event –当一个用户或者进程离开ebs去做发送邮件的工作时,是 通过一个 Business Events System (BES)来做. 会话通过WF_EVENT PL/SQL package 引发一个事件 “oracle.apps.wf.notification.send” 。每一个延迟的事件都被放入到下面这两个高级队列中的一个: WF_DEFERRED or WF_JAVA_DEFERRED 来进行接下来的工作。所有的邮件发送事件都会通过WF_DEFERRED队列.

2. Deferred Agent Listener – 是一个处理所有ebs事件的进程。It executes all deferred events calling subscriptions’ functions defined for each business event.(它通过调用每个事务事件订阅的功能运行所有的延期事件 ) There are several more things to explain about Agent Listeners and subscription processing (e.g. there are several differed agents, subscriptions groups etc.) This is one more subject for further articles.

2.1. Reads event and starts subscriptions processing – Strictly speaking there is no any enabled subscription for the “oracle.apps.wf.notification.send” event (submitted during the first step). This event is a part of “oracle.apps.wf.notification.send.group” event group. The Deferred Agent executes subscriptions for that group rather than for the stand alone event. At this stage the Agent knows that it should process the notification with given notification id (it is a part of the event data passed via the event).

2.2. Reads application data(读取) – in order to generate the email/notification the Agent reads business data from the WF_NOTIFICATIONS table and a few related tables and during the next step builds up the email’s text in XML format.

2.3. Generates data for outbound interface(为输出接口生成数据) – This is the last step executed by the Deferred Agent Listener. It generates XML representation of email to be sent and together with other important bits of information posts it to the Notification Mailer outbound queueWF_NOTIFICATION_OUT.

3. Notification Mailer – As you see it was a long journey even before we started to talk about the Notification Mailer. There are a lot of things which may go wrong and this is why it is important to know the whole flow of the events to troubleshoot the mail sending functionality in EBS. We’ve come to the last processing step before the message leaves EBS boundaries.

3.1. Reads message – the Notification Mailer dequeues(出列) messages fromWF_NOTIFICATION_OUT queue on regular basis. In fact this is the only place where it looks for the new messages to be sent. This means if a notification doesn’t has a corresponding event ready for dequeuing in the WF_NOTIFICATION_OUT queue it will never be send. As soon as a new message arrives Notification Mailer dequeues it and gets prepared for sending;

3.2. Sends email via SMTP – This is the step when the message leaves EBS. The Notification Mailer sends the email using text retrieved from the advanced queue during previous step;

3.3. Updates status – as the last step in the notification sending process the Notification Mailer updates a MAIL_STATUS column in WF_NOTIFICATION table.(最后一步,Notification Mailer会更新WF_NOTIFICATION表的MAIL_STATUS列)

This article gives us rather good basis for further discussion of how to troubleshoot the notifications/emails sending process in Oracle e-Business Suite. Now we are aware of the complete email sending flow and ready for the detailed discussion on how to troubleshoot it. Just to wrap up this very first article I would like to mention that the notification sending process didn’t change a lot since the moment when a Java based Notification Mailer has been introduced (~11.5.7 if I recall correctly) and it is still there in R12.1.1 version. That means that everything we discussed and will discuss is applicable to all current EBS versions.

根据如下例子我们分析问题:

1、EBS user sends email (第一行) –  notification message 在 2009.06.29 14:07:15放入表, 并且enqueued to WF_DEFERRED queue a second later. MAIL_STATUS is set to “MAIL”.  STATE in the deferred queue is “READY” ,信息准备好被出队列.

2、Deferred Agent Listener (第二行) – the deferred agent processed the message. It dequeued the message at 14:08:27 (1 minute 11 seconds after the EBS user initiated the sending process). The state of the message in deferred queue is “PROCESSED”. The message is enqueued in WF_NOTIFICATION_OUT queue and is ready to be processed by the next process.

3、Notification Mailer (第三行) – Notification Mailer dequeued the message at 14:09:03 (1 minute 48 seconds after it was submitted for sending) and sent it out via configured SMTP process. The MAIL_STATUS field is updated to indicate the sending fact.

As you see the method described gives us detailed information on where the notification message is and what components we should focus our troubleshooting efforts on in case of any problems.

Let’s summarize what we have described in this article. The very first troubleshooting activity the Apps DBA should do in case of reported missing emails from EBS is to send the test email (noticing its ID). If it doesn’t arrive in 5-10 minutes we run described SQL using the notification id in order to find where the notification got stuck. Depending on the observation you focus your attention on the particular EBS component for further troubleshooting.

I hope you find this information useful and will use it in the Notification Mailer troubleshooting process. I am sure that your feedback will inspire me for further articles. Please do not hesitate to leave any feedback, questions or share any issue you had/have related to the topic. I will be more than happy to assist.

Oracle WorkFlow 工作流 中篇相关推荐

  1. Oracle WorkFlow(工作流)(一)

    转载自:http://hi.baidu.com/quce227/item/3dee702c66466a0343634a58 1概述 1.1工作流的概念 Workflow是EBS的基础架构技术之一,系统 ...

  2. Oracle Workflow Demo 1 - 一个简单的请假申请工作流

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 目标:通 ...

  3. Oracle WorkFlow(工作流)详解

    原文地址:http://hutianci.iteye.com/blog/1023363 1概述... 2 1.1工作流的概念... 2 1.2工作流的目的... 2 1.3工作流体系结构:... 2 ...

  4. oracle制作假数据,Oracle Workflow Demo (一) - 一个简单的请假申请工作流

    Oracle Workflow Demo (1) - 一个简单的请假申请工作流 目标:通过Oracle Workflow做一个简单的请假申请工作流,效果:经理接到流程后,可以Approve,也可以Re ...

  5. Oracle Workflow Demo (1) - 一个简单的请假申请工作流

    目标:通过Oracle Workflow做一个简单的请假申请工作流,效果:经理接到流程后,可以Approve,也可以Reject. File > Quick Start Wizard Item ...

  6. Oracle WorkFlow基础笔记

    1. Workflow Builder的默认访问级别是100,以下是Oracle对访问级别的一个大致分类: 0-9 Oracle Workflow  10-19 Oracle Application ...

  7. Git workflow工作流及边角知识

    Git workflow工作流及边角知识 开篇 workflow工作流 rebase onto reset revert 开篇 Git是个老生长谈的问题了,如何在工作协作中使用Git,不同团队有不同的 ...

  8. Git三大特色之WorkFlow(工作流)

    开篇 Git 三大特色,分支,暂存区,工作流,今天终于要写到 WorkFlow 了,我彷佛已经看到胜利的曙光,走起. 何谓工作流 WorkFlow 的字面意思,工作流,即工作流程.在分支篇里,有说过这 ...

  9. 企业级开发:Gitflow Workflow工作流

    http://www.jianshu.com/p/104fa8b15d1e http://www.jianshu.com/p/104fa8b15d1e http://www.jianshu.com/p ...

最新文章

  1. PHP生成各种验证码和Ajax验证
  2. html中的时间代码怎么写,html网页代码中的时间样式怎样设置
  3. 网络嗅探器如何嗅探_SQL Server中的运行时常量嗅探
  4. 万里航行总舵手——业务测试架构的设计
  5. fdisk 创建和维护磁盘分区命令(MBR分区方案)
  6. 【Electron-Vue】构建桌面应用(42)- 企业微信扫码登录
  7. 彻底删除mysql server 2005_sql2005卸载工具(sql server 2005卸载工具)
  8. 家庭农场海边作弊工具的Andr​​oid的ios
  9. iOS13 微信消息不通知 打开微信才能看到消息
  10. Java实现复数运算
  11. Qt实现word文档转html
  12. 中国工程院院士评选结果公布,阿里王坚当选
  13. Typro的基础使用以及画图
  14. 个人计算机使用的标准键盘,电脑键盘的基本操作规范 -电脑资料
  15. 大厂程序员推荐的linux内核学习路线
  16. 面试知识点-网络——HTTP与TLS
  17. Android第一行代码-Fragment
  18. zblog php 火车头,ZBLOG PHP版火车头采集器免登录文章发布模块使用记录
  19. 【独家】彩虹最新6.6版本/免授权/后台同步官方版本升级
  20. 特殊矩阵的压缩存储(详细版 通俗易懂 含c语言稀疏矩阵十字链表代码 )

热门文章

  1. Android镂空字体,TextvView实现镂空字体效果
  2. 冒泡排序MATLAB实现
  3. java毕业设计读书网络社区设计Mybatis+系统+数据库+调试部署
  4. 串口编程 - 串口简介
  5. 学习笔记——Day1——Python歌词解析
  6. 公差带与配合 常用基孔制公差带的相互关系
  7. 2019SUCTF EasyWeb
  8. POST加电自检及BIOS常见故障
  9. 事件驱动模型与IO多路复用
  10. python:用OLS 求企业的净利润年平均增长率