BEvent_标准BusinessEvent用以监控供应商的修改(案例)

2014-06-01 Created By BaoXinjian

一、摘要


Workflow中有一块比较重要内容就是bussiness event,

Oracle 业务时间系统,就是一个消息产生和消费的过程,Oracle打算使用它作为系统集成,源系统产生数据,分装为业务事件,送给目标系统

比如,客户在系统架构时,EBS对supplier的任何修改,都需要抛转至另外一个外接的supplider管理系统,可要要求是即时的,即修改后就发送,而不是异步处理,如果是异步通过db link会更好

实现该需求有很多种技术

如database trigger,但是有可能会产生性能问题

如application alter,其实质也是在database中建立trigger

另外一种就是workflow的business event

因为business event是一种异步处理机制,如果以transaction需要处理很多业务,系统可以把消息定制和发送,独立出来,作为一个消息定制的做法,产生异步消息处理,就可以对一个transaction的业务处理的数量较少一部分

如果你有仔细的研究oracle 标准处理interface的API和并发程式,在代码中,都有调用消息接口代码模块,即所有通过interface或者API导入系统的资料都会相应的消息发送

  • 比如所,在supplier-init / site-init /contact - init通过API和Interface导入时,系统都会调用business event(oracle.apps.ap.supplier.event),发送一个供应商被修改的消息给通道】

 

二、案例


需求:在供应商supplier的任何修改包括建立、删除、更新,都需通过标准的supplier change business event去监控,并将信息记录至客制化的log表中

    1. 查询到该标准Even (oracle.apps.ap.supplier.event)
    2. Update Subscription
    3. Update Subscription Header, 设定Execuation Condition 和 Action Type
    4. Update Subscription Detail, 设定该Event的action为PLSQL或为Workflow
    5. 建立PLSQL Function,必须有两个参数 p_subscription_guid & p_event
    6.1. 手工测试通过Event Test功能,直接Raise Event
    6.2. 手工测试通过Event Test功能, 输入Event Key
    6.3. 手工测试通过Event Test功能, 查看table中的变化
    7.1. 手工测试建立Supplier触发Event
    7.2. 手工测试建立Supplier触发Event,查看table结果
    8.1. 测试Event Parameter,调用Event时建立手工参数
    8.2. 测试Event Parameter,查看table确认结果

 

三、案例实现


1. 查询到该标准Even (oracle.apps.ap.supplier.event)

    

 

2. Update Subscription

    

 

3 Update Subscription Header, 设定Execuation Condition 和 Action Type

    

    

 

4. Update Subscription Detail, 设定该Event的action为PLSQL或为Workflow

   

 

5. 建立PLSQL Function,必须有两个参数 p_subscription_guid & p_event

 1 FUNCTION test_event(p_subscription_guid IN raw,
 3                                    p_event IN OUT NOCOPY wf_event_t)
 5     RETURN VARCHAR2 IS
 7     l_parameter_list wf_parameter_list_t := wf_parameter_list_t();
 9     l_parameter_t wf_parameter_t := wf_parameter_t(null, null);
11     i_parameter_name l_parameter_t.name%type;
13     i_parameter_value l_parameter_t.value%type; 
15     i pls_integer;
17 BEGIN
19     DELETE FROM xxbxj_wf_event;
21     l_parameter_list := p_event.getParameterList();
23     IF l_parameter_list IS NOT NULL THEN
25         i := l_parameter_list.first;
27         WHILE (i <= l_parameter_list.last) LOOP
29             i_parameter_name := null;
31             i_parameter_value := null;
33             i_parameter_name := l_parameter_list(i).getName();
35             i_parameter_value := l_parameter_list(i).getValue();
37             IF i_parameter_name IS NOT NULL THEN
39                 INSERT INTO xxbxj_wf_event (priority,
41                                             send_date,
43                                             receive_date,
45                                             correlation_id, 
47                                             event_name,
48                                             event_key,
51                                             parameter_name, 
53                                             parameter_value)
55                                      VALUES
57                                            (p_event.priority,
59                                             p_event.send_date,
61                                             p_event.receive_date,
63                                             p_event.correlation_id,
65                                             p_event.event_name,
67                                             p_event.event_key,
69                                             i_parameter_name,
71                                             i_parameter_value);
73             END IF;
75             i := l_parameter_list.next(i);
77         END LOOP;
79     END IF;
81     RETURN('SUCCESS');
83 END;

 

四、案例测试


Test1. 使用Business Event自带的Test工具,去测试正规Business Event

Test1.1 手工测试通过Event Test功能,直接Raise Event

    

Test1.2 手工测试通过Event Test功能, 输入Event Key

    

Test1.3 手工测试通过Event Test功能, 查看table中的变化

    

Test2. 直接建立一个supplier,去触发business event

Test2.1 手工测试建立Supplier触发Event

    

Test2.2. 手工测试建立Supplier触发Event,查看table结果

    

 

Test3. 测试business event中的parameter参数使用

Test3.1 测试Event Parameter,调用Event时建立手工参数

    

Test3.2. 测试Event Parameter,查看table确认结果

      

 

Thanks and Regards

参考:黄健华 http://www.docin.com/app/p?id=32307815

 

posted on 2014-06-10 09:46  东方瀚海  阅读(1352)  评论(0编辑  收藏  举报