离线审批概念
离线审批–是指不进入系统,通过邮件来完成工作流审批的工作。适用于不希望登录系统,又能及时做审批的情形。
当审批人点击了邮件中的批准或拒绝后,会向指定的收件人发一封邮件,Oracle会定时读取并处理收到的邮件,根据邮件中的标识来更新相应的单据状态,以使审批者不进系统而可以完成审批的工作。
通知和邮件处理过程
1. 邮件处理程序定时读取收件箱文件夹中的邮件。如果邮件是工作流节点的通知响应,这意味着它包含当前节点的节点标识(NID)和响应结果。
2. 如果通知不存在,意味着通知ID或NID是不合法或者是NID格式不对,邮件将被移到删除文件夹。
3. 如果通知存在,但已经关闭或取消,邮件将被移到删除文件夹,并发送工作流关闭或取消通知给相关职责。
4. 如果通知存在,并是打开的,邮件处理程序把响应的消息生成XML,并放到代理WF_NOTIFICATION_IN中。同时电子邮件将被移到已处理的文件夹。
OracleWorkflow支持的协议
目前,Oracle Workflow支持SMTP协议(默认端口是25)处理出站消息、IMAP4协议(默认端口是143)处理进站消息,不支持pop3,这也是Oracle Workflow对Mail服务器的要
求。
检查邮件服务器协议
如果想使用ORACLE的邮件离线审批功能,邮件服务器必须开通SMTP,IMAP4协议。这个要根据不同类型的邮件服务器去具体分析和设置。比如EXCHANGE服务器可以通过命令get-imapsettings得到imap4协议的配置。
一般常用的邮件服务器只会开通SMTP和POP3服务。如果邮件服务器支持的话,可以只对中转邮箱开通IMAP4协议。
最简单的做法,就是 通过客户端使用SMTP,IMAP4去登录,看是否能正常收发邮件。
创建收发中转邮箱
创建收发中转邮箱,EBS 通过此邮箱向用户发送消息;用户向此邮箱发送审批或拒绝信息。EBS定时读取和分析指定目录的邮件,以便完成流程的审批或拒绝。
中转邮箱中创建文件夹
文件夹 |
用途 |
举例 |
收件箱文件夹 |
EBS定时读取和分析此文件夹中的邮件 |
ERPINBOX |
已处理的文件夹 |
已读取并处理完成的邮件,将被转移到此文件夹 |
PROCESS |
删除文件夹 |
已读取并被删除的邮件,将被转移到此文件夹 |
DISCARD |
收件箱文件夹建议不要使用标准的收件箱(INBOX),把符合审批条件的邮件通过邮箱规则转移到收件箱文件夹。这样可以尽量避免无关邮件的干扰。
将mail server的ip和域名解析增加到erp server的host文件中。
unix下/etc/hosts中设置的是:
vi/etc/hosts
192.168.100.2 mailer.xxxxxx.com.cnmailer
检查“工作流代理接收器服务”和“工作流邮件程序服务”是否已经启动,如没有启动,请选择并通过下方的按钮来激活。
系统管理员/工作流/工作流管理器/
点击Service Components,出现服务列表窗口
(注:这里查看“WorkflowNotification Mailer”的当前状态,并可以在动作框中选择启动,停止,刷新等操作。由于邮件服务器、网络等原因导致“WorkflowNotification Mailer”服务中断停止,可以通过这里重新启动。)
点击WorkflowNotification Mailer,出现工作通知邮件设置窗口
点击Edit按钮,可以进行设置
参数 |
值 |
说明 |
Outbound Server Name |
mailer.xxxxxx.com.cn |
默认端口是25 |
Outbound SSL Enabled |
N |
|
Inbound Processing |
Y |
启用离线审批 |
Inbound Server Names |
mailer.xxxxxx.com.cn |
默认端口是143 |
Username |
|
|
Password |
****** |
|
Reply-To Address |
|
|
Inbound SSL Enabled |
N |
|
1.1. 修改参数
参数 |
值 |
说明 |
JOB_QUEUE_PROCESSES |
20 |
它指定每个例程的 SNP 作业队列进程的数量 |
AQ_TM_PROCESSES |
10 |
启用对队列消息的时间监视。该时间值可用于指定消息的延迟和失效属性 |
WF_NOTIFICATION_OUT retry_delay |
600 |
输出消息的重试延迟时间(600秒) |
WF_NOTIFICATION_IN retry_delay |
600 |
输入消息的重试延迟时间(600秒) |
|
|
|
注:参数根据实际的需要来设置。
ORACLE 建议设置 JOB_QUEUE_PROCESSES=10. AQ_TM_PROCESSES >= 1.
使用APPS在数据库中执行如下语句:
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 20;
ALTER SYSTEM SET AQ_TM_PROCESSES = 10;
BEGIN
DBMS_AQADM.ALTER_QUEUE(queue_name => ‘APPLSYS.WF_NOTIFICATION_OUT’,retry_delay => 600);
END;
BEGIN
DBMS_AQADM.ALTER_QUEUE(queue_name => ‘APPLSYS.WF_NOTIFICATION_IN’,retry_delay => 600);
END;
要使参数设置永久有效,需要修改数据库参数文件:
vi $ORACLE_HOME/dbs/initPROD.ora
验证参数:
导航路径:系统管理员/工作流/工作流管理器
如果是在现有的系统中增加邮件通知和邮件审批功能,系统中可能存在大量没有发送的通知,需要进行清理。
在所有用户完成必需的工作流审批之后,对相关表进行处理。
更新表 WF_NOTIFICATIONS
update WF_NOTIFICATIONS
set mail_status = ‘SENT’
where mail_status = ‘MAIL’;
更新表WF_ITEMS
UPDATE WF_ITEMS
SET end_date = SYSDATE
WHERE end_date IS NULL
用产品语言
针对需要电子邮件通知和电子邮件审批的用户,建议修改用户的“默认的应用产品语言”为“简体中文”,此选项会影响用户获取电子邮件通知时所用的语言。
如果“默认的应用产品语言”为“美式英语”,可能会出现接收的待审批邮件题头存在乱码的现象。特别是OIE审批中,题头上的员工姓名可能会出现乱码。
电子邮件样式
需要审批的用户,应该设置为“HTML邮件”。不需要邮件提醒和审批的用户,可以设置为“请不要给我发送邮件”。对同一个用户,尽量避免同时使用邮件审批和通知审批两种方式。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/7566.html