BEvent_客制化BusinessEvent通过PLSQL Procedurer接受消息传递(案例)

简介: 2014-06-27 Created By BaoXinjian 一、摘要 在之前的博文中介绍了,如何获取从标砖business event抓取消息,如supplier event, 其实质,就是在supplier的任何create, update, delete的处理,都是通过inter...

 2014-06-27 Created By BaoXinjian

一、摘要


在之前的博文中介绍了,如何获取从标砖business event抓取消息,如supplier event,

其实质,就是在supplier的任何create, update, delete的处理,都是通过interface和api进行处理的, 而在处理interface和api的package中都会通过wf_event.raise将消息进行传递出来

再通过其他的package对在队列中的消息进行处理,从而实现消息的异步处理,实现interface的处理的主功能和辅助部分进行异步分离

 

本文介绍了如何运用完全客制化的business event进行客制化消息的传递

在百度文库中,黄建华大神也有非常详细的介绍

 

二、案例


案例: 建立一个完全客制化的business event,对该event消息触发和传递进行控制

Step1. 建立客制化表,存放从wf_event.raise传递出来的消息

 1 --Create table
 2 create table BXJ_BES_EVENT_DEMO
 3 (
 4   DEMO_ID                 NUMBER,
 5   MESSAGE_NAME            VARCHAR2(100),
 6   MESSAGE_KEY             VARCHAR2(100),
 7   MESSAGE_CONTENTS        CLOB,
 8   PARAMETER_VALUE1        VARCHAR2(4000),
 9   PARAMETER_VALUE2        VARCHAR2(4000),
10   EVENT_DATE              DATE  
11 );
12 
13 --Create Sequence
14 CREATE SEQUENCE BXJ_BES_DEMO_S;

 Step2. 建立package用以抓取event

 1 --Create Package Header
 2 CREATE OR REPLACE PACKAGE apps.bxj_bes_event_demo_pkg AUTHID CURRENT_USER AS
 3   FUNCTION process_an_event(p_sub_guid IN RAW,
 4                             p_event    IN OUT NOCOPY wf_event_t)
 5     RETURN VARCHAR2;
 6 END;
 7 
 8 --Create Package Body
 9 CREATE OR REPLACE PACKAGE BODY apps.bxj_bes_event_demo_pkg AS
10   FUNCTION process_an_event(p_sub_guid IN RAW,
11                             p_event    IN OUT NOCOPY wf_event_t)
12     RETURN VARCHAR2 IS
13     l_demo_rec bxj_bes_event_demo%ROWTYPE;
14   BEGIN  
15     SELECT bxj_bes_demo_s.NEXTVAL INTO l_demo_rec.demo_id FROM dual;  
16     --get evevent itself
17     l_demo_rec.message_name := p_event.geteventname;
18     l_demo_rec.event_date   := p_event.getsenddate;  
19     --we can use this key to transfer message only
20     l_demo_rec.message_key := p_event.geteventkey;  
21     --optional, get xml data
22     l_demo_rec.message_contents := p_event.geteventdata; 
23     --optional, get parameter
24     l_demo_rec.parameter_value1 := p_event.getvalueforparameter('Parameter1');
25     l_demo_rec.parameter_value2 := p_event.getvalueforparameter('Parameter2');  
26     --do anything here
27     INSERT INTO bxj_bes_event_demo VALUES l_demo_rec;
28     RETURN 'SUCCESS';
29   EXCEPTION
30     WHEN OTHERS THEN
31       RETURN 'ERROR';
32   END;
33 END;

Step3. 建立Event

Step4.1 建立Subscription

Step4.2 建立subscription中的header信息

Step4.3 建立subscription中的detail信息

 

三、测试方式1 - 通过页面功能调用event


Test1. 调用event 测试功能

Test2. 输入event key和参数后,raise 该消息

Test3. 确认结果,消息是否传递成功

 

四、案例测试方式2 - 通过调用脚本触发event


Test1. 调用脚本wf_event触发event

DECLARE
  x_parameters wf_parameter_list_t;
  l_event_data CLOB;
BEGIN
  wf_event.addparametertolist(p_name          => 'Parameter1',
                              p_value         => 'gavin',
                              p_parameterlist => x_parameters);
  wf_event.addparametertolist(p_name          => 'Parameter2',
                              p_value         => 'bao',
                              p_parameterlist => x_parameters);
  l_event_data := '<?xml version="1.0" encoding="UTF-8"?><root><Name>xinjian.bao</Name></root>';

  wf_event.RAISE(p_event_name => 'bxj.business.events.demo',
                 p_event_key  => 'event_key_005',
                 p_event_data => l_event_data,
                 p_parameters => x_parameters,
                 p_send_date  => SYSDATE);
END;

Test2. 在结果表中,确认消息是否传递冲给你

 

Thanks and Regards

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
7月前
|
存储 设计模式 安全
【C++ 软件设计思路】多角度探索C++事件处理:以‘handlePowerEvent’函数为例
【C++ 软件设计思路】多角度探索C++事件处理:以‘handlePowerEvent’函数为例
132 2
|
4月前
|
API 数据安全/隐私保护 开发者
【优秀程序设计】【good-practice】聚合系统如何实现通道侧回调的业务结果通知?
【8月更文挑战第3天】本文介绍了公司短信平台聚合系统中,短信通道回调的业务处理方法。文章详细描述了如何通过统一回调接口与合理分层设计优化代码结构,避免烟囱式代码堆砌,提高扩展性和维护性。
60 2
|
XML 消息中间件 JSON
不接受反驳,性能最强,功能最强的Java日志框架
Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback的兄弟 slf4j 最近一个稳定版也是2017年,有点凉凉的意思。 而且 logback的异步性能实在拉跨,功能简陋,配置又繁琐,远不及Apache 的新一代日志框架 - Log4j 目前来看,Log4j2 就是王者,其他日志框架都不是对手
|
存储 缓存 开发者
iOS-底层原理 14:消息流程分析之 动态方法决议 & 消息转发
iOS-底层原理 14:消息流程分析之 动态方法决议 & 消息转发
335 0
iOS-底层原理 14:消息流程分析之 动态方法决议 & 消息转发
|
存储 供应链
SAP WM初阶之IM层面货物移动后WM层面自动完成TO创建和确认
SAP WM初阶之IM层面货物移动后WM层面自动完成TO创建和确认
SAP WM初阶之IM层面货物移动后WM层面自动完成TO创建和确认
怎样使用阿里云消息服务?
阿里云消息服务(Message Service)是一种高效、可靠、安全、便捷、可弹性扩展的分布式消息服务。MNS能够帮助应用开发者在他们应用的分布式组件上自由的传递数据、通知消息,构建松耦合系统。 消息服务同时支持各种类型消息推送,其中和短信前后端的无缝整合更高效的为用户提供了大批量短信发送能力。
|
存储 数据库 开发框架
Newbe.Claptrap - 一套以 “事件溯源” 和“Actor 模式”作为基本理论的服务端开发框架
Newbe.Claptrap - 一套以 “事件溯源” 和“Actor 模式”作为基本理论的服务端开发框架 本文是关于 Newbe.Claptrap 项目主体内容的介绍,读者可以通过这篇文章,大体了解项目内容。
8936 0