• Save
8, bes tables & api
Upcoming SlideShare
Loading in...5
×
 

8, bes tables & api

on

  • 487 views

BES Tables & API

BES Tables & API

Statistics

Views

Total Views
487
Views on SlideShare
366
Embed Views
121

Actions

Likes
0
Downloads
0
Comments
0

10 Embeds 121

http://ebshome.blogspot.com 51
http://ebshome.blogspot.tw 23
http://ebshome.blogspot.sg 17
http://ebshome.blogspot.jp 13
http://2973075245885582305_076bd80d5a6edc115d0a1b0c8285519f50478f0b.blogspot.com 9
http://ebshome.blogspot.hk 4
http://translate.googleusercontent.com 1
http://ebshome.blogspot.de 1
http://ebshome.blogspot.fr 1
http://ebshome.blogspot.in 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

8, bes tables & api 8, bes tables & api Presentation Transcript

  • BES Tables & API
  • BES Tables• BES系统相关的数据库表如下: wf_systems dba_queues wf_agents wf_event_groups wf_events wf_deferred wf_java_deferred wf_event_subscriptions BES系统的表有一个共性, 就是使用长度为32位 的GUID作为主键. 下面依次对这些表进行介绍. 1, wf_systems BES系统定义表, 包含本地系统和外部系统的定 义, 字段: GUID, NAME, DISPLAY_NAME
  • BES Tables2, dba_queues这是一张基本表, 包含了数据库中所有queue的定义,示例select * from dba_queues where name = WF_DEFERRED andOWNER = APPLSYS3, wf_agentsAgent定义表, 通过SYSTEM_GUID字段与WF_SYSTEMS表进行关联, 示例:select * from wf_agents where NAME in (WF_DEFERRED, WF_JAVA_DEFERRED)字段:GUID, NAME, SYSTEM_GUID, QUEUE_HANDLER,QUEUE_NAME, STATUS View slide
  • BES Tables4, wf_event_groups业务事件组, 在WAP/Events页面可以进行定义.5, wf_events业务事件定义表, 示例: select * from wf_events where name = oracle.apps.gmd.leavereq字段: GUID, NAME, STATUS, owner_name, owner_tag,generate_function, java_generate_function6, wf_deferred这是一张AQ表, 如果使用plsql触发的业务事件订阅是deferred的,那么业务事件将会记录在这张表. 字段:Q_NAME, CORRID, STATE, ENQ_TIME, DEQ_TIME, EVENT_NAME,EVENT_KEY, EVENT_DATA, 示例:select * from wf_deferred where corrid like %oracle.apps.gmd.leavereq order by enq_time desc View slide
  • BES Tables7, wf_java_deferred与WF_DEFERRED类似, 如果使用java触发的业务事件订阅是deferred的, 那么业务事件将会记录在这张表.8, wf_event_subscriptions业务事件订阅表, 字段:GUID, SYSTEM_GUID, SOURCE_TYPE, phase, STATUS, RULE_DATA, RULE_FUNCTION, OWNER_NAME, OWNER_TAG
  • BES Data Structure• 介绍BES的API之前, 需要先介绍一下BES相关的 数据结构, 常用的如下(PLSQL): 业务事件结构 wf_event_t 代理结构 wf_agent_t 参数列表结构 wf_parameter_list_t 参数结构 wf_parameter_t可以查看源代码以了解这些数据结构. 这里比较重要的是wf_event_t结构, 它用于在BES系统和工作流系统之间进行通讯.
  • BES API - wf_event• BES API主要分为两个部分, 业务事件API和规则函数(Rule Function), 前者 用于业务事件的操作, 比如触发业务事件,主要由PLSQL包wf_event组成; 后者则用于实现业务事件订阅的操作, 系统提供了默认的规则函数 (wf_rule包), 用户也可以自定义规则函数.• wf_event 1, raise 触发一个业务事件, 如下: PROCEDURE raise(p_event_name in varchar2, p_event_key in varchar2, p_event_data in clob, p_parameters in wf_parameter_list_t, p_send_date in date) 2, send 将一个业务事件从一个代理发送到另一个代理, 如下: PROCEDURE send(p_event in out nocopy wf_event_t)
  • BES API - wf_event3, newAgent根据代理的GUID, 返回该代理的wf_agent_t数据, 如下:function NewAgent (p_agent_guid in raw) returnwf_agent_t;4, Test查询指定业务事件是否被创建, 以及订阅情况. 如下: function Test (p_event_name in varchar2) return varchar2;返回值有可能是:NONE 业务事件不存在或者没有任何订阅KEY 业务事件相关订阅只要求KEY数据MESSAGE 业务事件至少一个相关的订阅只要求 MESSAGE数据
  • BES API - wf_event5, Enqueue事件入队, 如下:procedure Enqueue (p_event in wf_event_t, p_out_agent_override inwf_agent_t default null);6, Listen监听指定的代理, 对入队的消息进行dequeue操作. 如下:procedure Listen (p_agent_name in varchar2,...7, AddParameterToList添加参数到参数列表, 如下:procedure AddParameterToList (p_name in varchar2, p_value in varchar2, p_parameterlist in out wf_parameter_list_t);类似的过程有AddParameterToListPos
  • BES API - wf_event example• 示例使用wf_event触发一个业务事件: declare l_event_name varchar2(50) := oracle.apps.gmd.leavereq; l_event_key varchar2(50) := 330; begin -- Raise the event WF_EVENT.Raise(p_event_name => l_event_name, p_event_key => l_event_key); commit; end; / 上面使用wf_event.raise触发了一个业务事件, 调用该API之后需要进行commit操作.
  • BES API - wf_event & event data generator8, GetValueForParameter从参数列表中去某个参数的值, 如下:function GetValueForParameter (p_name in varchar2, p_parameterlist in wf_parameter_list_t) return varchar2;类似的函数有GetValueForParameterPos.关于业务事件还有一个比较重要的方面是事件数据的生成函数, 在业务事件的定义界面可以指定PLSQL或者JAVA形式的生成函数, 这里介绍PLSQL形式的生成函数. 函数必须遵循如下API格式:function <function_name> (p_event_name in varchar2, p_event_key in varchar2, p_parameter_list in wf_parameter_list_t default null)return clob;
  • BES API - wf_rule• wf_rule 规则函数用于实现业务 事件订阅指定的操作, 比 如启动工作流, 发送通知 等; 在查看业务事件订阅 的界面可以看到规则函数的身影. Oracle Workflow定义了如下标准规则函数: 1, default_rule 执行默认的事件订阅操作, 包含: – 将业务事件消息发送给工作流; – 将业务事件发送到另一个agent. 该函数的返回值为SUCCESS或者ERROR, 如果出现错误业务事件 将会进入WF_ERROR代理. 函数的定义如下: FUNCTION default_rule(p_subscription_guid in raw, p_event in out nocopy wf_event_t) return varchar2
  • BES API - wf_rule2, error_rule与default_rule类型, 但是当处理过程中出现错误时, 它会返回SUCCESS并且事件不会进入WF_ERROR代理.3, SendNotification发送工作流之外的通知, 需要在事件参数中指定RECIPIENT_ROLE, MESSAGE_TYPE, MESSAGE_NAME等参数, 定义: function SendNotification (p_subscription_guid in raw, p_event in out wf_event_t) return varchar2;在定义订阅的动作为发送通知时, 将会使用这个规则函数.
  • BES API - Customized Rule Function• 在某些情况下系统预定义的规则函数不能 满足需求, 则可以自定义规则函数, 但必须满 足以下API标准: function <function_name> (p_subscription_guid in raw, p_event in out wf_event_t) return varchar2; 通常情况下这种需求比较少见.