SlideShare ist ein Scribd-Unternehmen logo
1 von 14
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 Tables
2, dba_queues
这是一张基本表, 包含了数据库中所有queue的定义,
示例
select * from dba_queues where name = 'WF_DEFERRED' and
OWNER = 'APPLSYS'
3, wf_agents
Agent定义表, 通过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
BES Tables
4, 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_function
6, 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
BES Tables
7, wf_java_deferred
与WF_DEFERRED类似, 如果使用java触发的业务
事件订阅是deferred的, 那么业务事件将会记录
在这张表.
8, wf_event_subscriptions
业务事件订阅表, 字段:
GUID, SYSTEM_GUID, SOURCE_TYPE, phase, STAT
US, RULE_DATA, RULE_FUNCTION, OWNER_NAM
E, 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_event
3, newAgent
根据代理的GUID, 返回该代理的wf_agent_t数据, 如下:
function NewAgent (p_agent_guid in raw)   return
wf_agent_t;
4, Test
查询指定业务事件是否被创建, 以及订阅情况. 如下:
 function Test (p_event_name in varchar2)
     return varchar2;
返回值有可能是:
NONE               业务事件不存在或者没有任何订阅
KEY                业务事件相关订阅只要求KEY数据
MESSAGE            业务事件至少一个相关的订阅只要求
                   MESSAGE数据
BES API
                        - wf_event
5, Enqueue
事件入队, 如下:
procedure Enqueue (p_event in wf_event_t,   p_out_agent_override in
wf_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 generator
8, 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_rule
2, 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;
 通常情况下这种需求比较少见.

Weitere ähnliche Inhalte

Ähnlich wie 8, bes tables & api

Power flow簡介
Power flow簡介Power flow簡介
Power flow簡介Sky Wu
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activityted-xu
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneousted-xu
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题haojiewang
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析mysqlops
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应zhaolinjnu
 
Mysql 101014202926-phpapp01
Mysql 101014202926-phpapp01Mysql 101014202926-phpapp01
Mysql 101014202926-phpapp01Bob Huang
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflowted-xu
 
Essential oracle security internal for dba
Essential oracle security internal for dbaEssential oracle security internal for dba
Essential oracle security internal for dbamaclean liu
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集shademoon
 
PHP & MySQL 教學
PHP & MySQL 教學PHP & MySQL 教學
PHP & MySQL 教學Bo-Yi Wu
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制maclean liu
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 

Ähnlich wie 8, bes tables & api (20)

Power flow簡介
Power flow簡介Power flow簡介
Power flow簡介
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activity
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneous
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应
 
Mysql 101014202926-phpapp01
Mysql 101014202926-phpapp01Mysql 101014202926-phpapp01
Mysql 101014202926-phpapp01
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflow
 
Essential oracle security internal for dba
Essential oracle security internal for dbaEssential oracle security internal for dba
Essential oracle security internal for dba
 
Ch07
Ch07Ch07
Ch07
 
Structs2簡介
Structs2簡介 Structs2簡介
Structs2簡介
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
 
PHP & MySQL 教學
PHP & MySQL 教學PHP & MySQL 教學
PHP & MySQL 教學
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制
 
敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3
 
1~60
1~601~60
1~60
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 

Mehr von ted-xu

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashbackted-xu
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rmanted-xu
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rmanted-xu
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recoveryted-xu
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle securityted-xu
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storageted-xu
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networkingted-xu
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a databaseted-xu
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture introted-xu
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuningted-xu
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebsted-xu
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow introted-xu
 
OPM Recipe designer notes
OPM Recipe designer notesOPM Recipe designer notes
OPM Recipe designer notested-xu
 
5, sed
5, sed5, sed
5, sedted-xu
 
4, grep
4, grep4, grep
4, grepted-xu
 
3, regular expression
3, regular expression3, regular expression
3, regular expressionted-xu
 
2, bash synax simplified
2, bash synax simplified2, bash synax simplified
2, bash synax simplifiedted-xu
 
1, shell intro
1, shell intro1, shell intro
1, shell introted-xu
 
6, awk
6, awk6, awk
6, awkted-xu
 

Mehr von ted-xu (20)

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashback
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rman
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle security
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storage
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a database
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture intro
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuning
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebs
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow intro
 
OPM Recipe designer notes
OPM Recipe designer notesOPM Recipe designer notes
OPM Recipe designer notes
 
5, sed
5, sed5, sed
5, sed
 
4, grep
4, grep4, grep
4, grep
 
3, regular expression
3, regular expression3, regular expression
3, regular expression
 
2, bash synax simplified
2, bash synax simplified2, bash synax simplified
2, bash synax simplified
 
1, shell intro
1, shell intro1, shell intro
1, shell intro
 
6, awk
6, awk6, awk
6, awk
 

8, bes tables & api

  • 2. 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
  • 3. BES Tables 2, dba_queues 这是一张基本表, 包含了数据库中所有queue的定义, 示例 select * from dba_queues where name = 'WF_DEFERRED' and OWNER = 'APPLSYS' 3, wf_agents Agent定义表, 通过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
  • 4. BES Tables 4, 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_function 6, 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
  • 5. BES Tables 7, wf_java_deferred 与WF_DEFERRED类似, 如果使用java触发的业务 事件订阅是deferred的, 那么业务事件将会记录 在这张表. 8, wf_event_subscriptions 业务事件订阅表, 字段: GUID, SYSTEM_GUID, SOURCE_TYPE, phase, STAT US, RULE_DATA, RULE_FUNCTION, OWNER_NAM E, OWNER_TAG
  • 6. BES Data Structure • 介绍BES的API之前, 需要先介绍一下BES相关的 数据结构, 常用的如下(PLSQL): 业务事件结构 wf_event_t 代理结构 wf_agent_t 参数列表结构 wf_parameter_list_t 参数结构 wf_parameter_t 可以查看源代码以了解这些数据结构. 这里比 较重要的是wf_event_t结构, 它用于在BES系统和 工作流系统之间进行通讯.
  • 7. 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)
  • 8. BES API - wf_event 3, newAgent 根据代理的GUID, 返回该代理的wf_agent_t数据, 如下: function NewAgent (p_agent_guid in raw) return wf_agent_t; 4, Test 查询指定业务事件是否被创建, 以及订阅情况. 如下: function Test (p_event_name in varchar2) return varchar2; 返回值有可能是: NONE 业务事件不存在或者没有任何订阅 KEY 业务事件相关订阅只要求KEY数据 MESSAGE 业务事件至少一个相关的订阅只要求 MESSAGE数据
  • 9. BES API - wf_event 5, Enqueue 事件入队, 如下: procedure Enqueue (p_event in wf_event_t, p_out_agent_override in wf_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
  • 10. 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操作.
  • 11. BES API - wf_event & event data generator 8, 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;
  • 12. 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
  • 13. BES API - wf_rule 2, 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; 在定义订阅的动作为发送通知时, 将会使用这个规 则函数.
  • 14. BES API - Customized Rule Function • 在某些情况下系统预定义的规则函数不能 满足需求, 则可以自定义规则函数, 但必须满 足以下API标准: function <function_name> (p_subscription_guid in raw, p_event in out wf_event_t) return varchar2; 通常情况下这种需求比较少见.