狠狠撸

狠狠撸Share a Scribd company logo
Business Event
Overview
? 工作流引擎实现了公司业务流程的启动和
  执行, 但是通常情况下业务流程之间会存在
  一些依赖关系, 比如制造系统的流程需要依
  赖于财务系统流程. 工作流引擎并不能实现
  流程之间的整合, Oracle工作流提供了另外
  一个业务事件系统(Business Event
  System/BES)模块用于实现工作流之间的整
  合. 将介绍BES如下内容:
 – BES实现原理, system/agent/event
 – 业务事件的定义/订阅
BES Concepts
? BES使用到了以下概念:
 – System
 系统是一个整合的概念, 分为本地系统(local system)和外部(external)系
 统, 可以添加或者删除外部系统, 本地系统不能删除;
 – Business Event
 业务事件, 由事件名称和时间的内容组成, 在WAP/Business Events
 页面定义一个业务事件;
 – Queue Table
 Oracle AQ表, 用于存放事件的内容; 可以使用API DBMS_AQ自定义Queue表; 系
 统自定义的queue表有wf_deferred ,和 wf_java_deferred
  – Agent(代理)
 BES对于Queue表的封装, 业务事件在抛出之后可能会进入到某个代理中,
 本质上是存储在Queue表中.
  – Subscription(订阅)
 在事件发生时接收到通知, 称为订阅; 工作流是常见的订阅者
BES Concepts
                enqueue


                                                     subscription
                                        workflow

raise
        Event
                     Agent                plsql


                                       xml gateway


                             dequeue
Local BES System
? 任何一个EBS环境都有一个本地系统, 在该系统上
  可以定义事件/代理等, 本地系统的名称规则:
  {ORACLE_SID}.{HOST_NAME}, 点击”generate local
  system identifier”查看本地系统的XML描述:
Define an Agent
? 使用WAP/Business Events/Agents页面定义和
  查看agent, 通常情况下不需要自定义agent,
  下面是WF_DEFERRED代理的定义:
                     Name
                     通常使用QUEUE表的名称
                     System
                     指定是哪一个系统, 这里是本地系统
                     Queue Handler
                     Agent用于存储业务事件, Handler
                     定义了enqueue和dequeue方法, 分别
                     用于事件入queue和出queue
Define an Event
? 使用WAP/Business Events/Events页面定义和查看
  业务事件, 这里定义了一个oracle.apps.gmd.leave事
  件, 如下:
                 Name
                 必须遵循格式oracle.apps.{APP_SHORT_NAME}.
                 {event_name}, 这里定义为GMD模块下的业务
                 事件, 取名oracle.apps.gmd.leave
                 Owner Name
                 指定应用的全名
                 Owner Tag
                 应用的简写
                 Generate Function
                 指定一个plsql函数生成XML格式的事件内容
                 Java Generate Function
                 指定一个java函数生成XML格式的事件内容
Test Business Event
? 业务事件定义完成之后可以测试触发该事
  件, 点击Test按钮进入测试页面, 如下:
            Event Key
            业务事件的标识, 是必填的. Event Key在BES与
            工作流进行交互的过程中是非常重要的.
            Event Data
            业务事件的数据, 使用XML格式.

                         注意: 当前事件没有设置任何
                         订阅, 因此会执行以下业务事
                         件上的有效订阅:
                         oracle.apps.fnd.any

            可以使用两种方式触发业务事件: Raise in
            Java 和 Raise in PLSQL, 故名思意两种方式的
            不同在于前者使用JAVA进行处理, 后者使用
            plsql.
Define a Subscription
? 定义好业务事件之后可以为该事件定义订阅, 如
  下:


               Source Agent
               指定仅处理某个代理中的业务事件
               Phase
               一个业务事件可以有多个订阅, phase表示订
               阅执行的顺序; 同时phase还决定订阅的执行
               是否延迟, 1-99立即执行; >=100延迟.
               Rule Data
               Key      只传递Event Key
               Message 传递完成的事件数据
               Action Type
               常用的有:
               Send Notification 发送通知
               Launch Workflow 启动工作流
Define a Subscription
         - Send Notification
? 这里为oracle.apps.gmd.leave事件定义通知类型的
  订阅, 如下:




                       订阅1: 立即发送通知
Define a Subscription
      - Send Notification
? 测试该业务事件, 在事件触发之后应该立即
  发出通知.

                       可以看到process_ops
                       立即收到了通知
Define a Subscription
 - Launch Workflow




                 订阅2: 延迟启动工作流
Define a Subscription
            - Launch Workflow
? 使用BES启动一个工作流需要对工作流进行修改, 工作流必
  须以事件节点作为Start节点.打开wfdemo.wft替换Start节点
  为业务事件节点, 设置Event Action为Receive, Event Filter为
  oracle.apps.gmd.leave, 如下:
                            Event Action
                            Receive 等待Business Event
                            Send    发送event到另一个agent
                            Raise 触发一个event
Define a Subscription
        - Launch Workflow
? 使用plsql方式触发业务事件以验证是否启动了流程:




                可以看到该流程被启动, 使用BES驱动流
                程时, Event Key被用作启动工作流的
                Item Key, 这里是1000; 流程出错, 是因为
                没有设置申请人工作流属性.
Business Event
               - Deferred
? 业务事件触发之后, 如果订阅是延迟的(phase>99), 那么该
  业务事件将会进入到指定的agent中; 根据触发的方式不同,
  使用PLSQL触发的事件将进入WF_DEFERRED代理中, 使用
  JAVA触发的事件进入WF_JAVA_DEFERRED代理;
? 上述的事件是使用PLSQL触发的, 因此可以在WF_DEFERRED
  代理中找到. 使用以下方式: WAWA > Workflow Manager, 点
  击Agent Activity链接后进行查找, 可以看到该业务事件已经
  被处理(状态为processed). 如下:
Business Event
               - Service Components
? 服务组件是BES系统的重要组成部分, 用于:
  1, 处理延迟业务事件;
  2, 发送工作流邮件(需要配置邮件服务器).
  这里介绍服务组件的第一个功能.
  当一个业务事件被延迟处理时, 由
  以下两个服务组件来处理:
  – Workflow Deferred Agent Listener
 处理WF_DEFERRED代理中的业务事件
  – Workflow Java Deferred Agent Listener
 处理WF_JAVA_DEFERRED代理中的业务事件
 通常情况下, 这两个服务组件会随着
 EBS启动, 可以通过WAWA > Workflow Manager, 点击Service Components
 链接查看服务组件的运行情况. 对于服务组件的更多介绍可以参考
 Note 733335.1.
Continue Workflow
? 前面演示了如何使用BES来启动一个工作流, 另外一种情况
  是使用BES来驱动流程的继续进行, 比如流程运行到某个节
  点等待某个业务事件发生才能继续进行; 需要修改业务事
  件订阅的相关设置, 在Launch Workflow动作的定义中需要
  选择额外选项Launch When Business Key Matches, 如下:
? 修改wfdemo.wft文件, 替换开始的事件节点为普通
  的Start节点, 在”Find Approver”函数节点后面添加
  事件节点, Event Action 和 Filter的配置不变, 如下:
Continue Workflow
           - Business Key
? 在触发一个业务事件时, 需要指定该事件的event key, 只有
  当业务事件的event key与流程事件节点的#BUSINESS_KEY
  (系统要求的名称)属性相等, 才可以驱动该流程继续进行;
  这里定义一个工作流属性BUSINESS_KEY, 为事件节点添加
  #BUSINESS_KEY属性并将默认值设置为该工作流属性:
Continue Workflow
              - Event Info
? 在判断业务事件的event key与事件节点的#BUSINESS_KEY属性相等之后,
  系统会自动将业务事件的相关信息赋值给相应的工作流属性, 其中(括
  号中的是属性的类型):
  业务事件名称     =>     EVENT_NAME(TEXT)
  业务事件KEY    =>     EVENT_KEY(TEXT)
  业务事件数据     =>     EVENT_DATA(EVENT)
  因此需要定义如上3个工作流
  属性, 同时需要设置事件节点如下:
Continue Workflow
            - Testing
? 现在来测试使用BES驱动工作流进行, 首先
  重新上传并启动该工作流, 指定Business Key
  工作流属性为100, 可以看到流程将会停止
  在事件节点:
Continue Workflow
            - Testing
? 触发业务事件, 首先指定event key为99, 由于
  不与事件节点的Business Key匹配, 所以无法
  驱动流程继续进行. 接下来使用100作为
  event key查看流程运行状态如下, 可以看到
  当前流程已经运行到通知节点:
7, business event system

More Related Content

Similar to 7, business event system (20)

PDF
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
appollo0312
?
PDF
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
yiditushe
?
PPT
Power flow簡介
Sky Wu
?
PPTX
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
Andrew Wu
?
PPTX
4, workflow tables & api
ted-xu
?
PPT
数据库性能诊断的七种武器
Leyi (Kamus) Zhang
?
PPT
Jbpm
zxcvbnm647
?
PDF
twMVC 47_Elastic APM 的兩三事
twMVC
?
PPT
Sql Cluster Tech Net 0401(Pm)
bigqiang zou
?
PPT
intra-mart Accel series 2025 Spring updates-zh.ppt
NTTDATA INTRAMART
?
PDF
Top100summit 高楼-7点测试-zee-性能测试案例分享
drewz lin
?
PDF
网易 李弈远 网易服务集成框架的构建与运维
guiyingshenxia
?
PDF
网易 李弈远 网易服务集成框架的构建与运维
colderboy17
?
PPT
如何架构和开发高性能,高伸缩性Web 应用系统
melity78
?
PPT
intra-mart Accel series 2025 Spring updates-zh-Ver.2.ppt
NTTDATA INTRAMART
?
PDF
深入研究云端应用程式平台-础辫辫贵补产谤颈肠
John Chang
?
PDF
ASP.Net MVC2 介绍
Allen Lsy
?
PPTX
VCACICM6_M07_Extensibility.pptx
LoessPlateau
?
PPT
腾讯大讲堂30 运维工具让你的开发运营更轻松
Michael Zhang
?
PPT
腾讯大讲堂30 运维工具让你的开发运营更轻松
areyouok
?
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
appollo0312
?
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
yiditushe
?
Power flow簡介
Sky Wu
?
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
Andrew Wu
?
4, workflow tables & api
ted-xu
?
数据库性能诊断的七种武器
Leyi (Kamus) Zhang
?
twMVC 47_Elastic APM 的兩三事
twMVC
?
Sql Cluster Tech Net 0401(Pm)
bigqiang zou
?
intra-mart Accel series 2025 Spring updates-zh.ppt
NTTDATA INTRAMART
?
Top100summit 高楼-7点测试-zee-性能测试案例分享
drewz lin
?
网易 李弈远 网易服务集成框架的构建与运维
guiyingshenxia
?
网易 李弈远 网易服务集成框架的构建与运维
colderboy17
?
如何架构和开发高性能,高伸缩性Web 应用系统
melity78
?
intra-mart Accel series 2025 Spring updates-zh-Ver.2.ppt
NTTDATA INTRAMART
?
深入研究云端应用程式平台-础辫辫贵补产谤颈肠
John Chang
?
ASP.Net MVC2 介绍
Allen Lsy
?
VCACICM6_M07_Extensibility.pptx
LoessPlateau
?
腾讯大讲堂30 运维工具让你的开发运营更轻松
Michael Zhang
?
腾讯大讲堂30 运维工具让你的开发运营更轻松
areyouok
?

More from ted-xu (20)

PPTX
11, OCP - awr & alert system
ted-xu
?
PPTX
10, OCP - flashback
ted-xu
?
PPTX
9, OCP - restore and recovery with rman
ted-xu
?
PPTX
8, OCP - backup with rman
ted-xu
?
PPTX
7, OCP - configure database for backup and recovery
ted-xu
?
PPTX
6, OCP - oracle security
ted-xu
?
PPTX
5, OCP - oracle storage
ted-xu
?
PPTX
4, OCP - oracle networking
ted-xu
?
PPTX
3, OCP - instance management
ted-xu
?
PPTX
2, OCP - installing and creating a database
ted-xu
?
PPTX
1, OCP - architecture intro
ted-xu
?
PPTX
12, OCP - performance tuning
ted-xu
?
PPTX
5, workflow function activity
ted-xu
?
DOCX
OPM Recipe designer notes
ted-xu
?
PPTX
5, sed
ted-xu
?
PPTX
4, grep
ted-xu
?
PPTX
3, regular expression
ted-xu
?
PPTX
2, bash synax simplified
ted-xu
?
PPTX
1, shell intro
ted-xu
?
PPTX
6, awk
ted-xu
?
11, OCP - awr & alert system
ted-xu
?
10, OCP - flashback
ted-xu
?
9, OCP - restore and recovery with rman
ted-xu
?
8, OCP - backup with rman
ted-xu
?
7, OCP - configure database for backup and recovery
ted-xu
?
6, OCP - oracle security
ted-xu
?
5, OCP - oracle storage
ted-xu
?
4, OCP - oracle networking
ted-xu
?
3, OCP - instance management
ted-xu
?
2, OCP - installing and creating a database
ted-xu
?
1, OCP - architecture intro
ted-xu
?
12, OCP - performance tuning
ted-xu
?
5, workflow function activity
ted-xu
?
OPM Recipe designer notes
ted-xu
?
5, sed
ted-xu
?
4, grep
ted-xu
?
3, regular expression
ted-xu
?
2, bash synax simplified
ted-xu
?
1, shell intro
ted-xu
?
6, awk
ted-xu
?
Ad

7, business event system

  • 2. Overview ? 工作流引擎实现了公司业务流程的启动和 执行, 但是通常情况下业务流程之间会存在 一些依赖关系, 比如制造系统的流程需要依 赖于财务系统流程. 工作流引擎并不能实现 流程之间的整合, Oracle工作流提供了另外 一个业务事件系统(Business Event System/BES)模块用于实现工作流之间的整 合. 将介绍BES如下内容: – BES实现原理, system/agent/event – 业务事件的定义/订阅
  • 3. BES Concepts ? BES使用到了以下概念: – System 系统是一个整合的概念, 分为本地系统(local system)和外部(external)系 统, 可以添加或者删除外部系统, 本地系统不能删除; – Business Event 业务事件, 由事件名称和时间的内容组成, 在WAP/Business Events 页面定义一个业务事件; – Queue Table Oracle AQ表, 用于存放事件的内容; 可以使用API DBMS_AQ自定义Queue表; 系 统自定义的queue表有wf_deferred ,和 wf_java_deferred – Agent(代理) BES对于Queue表的封装, 业务事件在抛出之后可能会进入到某个代理中, 本质上是存储在Queue表中. – Subscription(订阅) 在事件发生时接收到通知, 称为订阅; 工作流是常见的订阅者
  • 4. BES Concepts enqueue subscription workflow raise Event Agent plsql xml gateway dequeue
  • 5. Local BES System ? 任何一个EBS环境都有一个本地系统, 在该系统上 可以定义事件/代理等, 本地系统的名称规则: {ORACLE_SID}.{HOST_NAME}, 点击”generate local system identifier”查看本地系统的XML描述:
  • 6. Define an Agent ? 使用WAP/Business Events/Agents页面定义和 查看agent, 通常情况下不需要自定义agent, 下面是WF_DEFERRED代理的定义: Name 通常使用QUEUE表的名称 System 指定是哪一个系统, 这里是本地系统 Queue Handler Agent用于存储业务事件, Handler 定义了enqueue和dequeue方法, 分别 用于事件入queue和出queue
  • 7. Define an Event ? 使用WAP/Business Events/Events页面定义和查看 业务事件, 这里定义了一个oracle.apps.gmd.leave事 件, 如下: Name 必须遵循格式oracle.apps.{APP_SHORT_NAME}. {event_name}, 这里定义为GMD模块下的业务 事件, 取名oracle.apps.gmd.leave Owner Name 指定应用的全名 Owner Tag 应用的简写 Generate Function 指定一个plsql函数生成XML格式的事件内容 Java Generate Function 指定一个java函数生成XML格式的事件内容
  • 8. Test Business Event ? 业务事件定义完成之后可以测试触发该事 件, 点击Test按钮进入测试页面, 如下: Event Key 业务事件的标识, 是必填的. Event Key在BES与 工作流进行交互的过程中是非常重要的. Event Data 业务事件的数据, 使用XML格式. 注意: 当前事件没有设置任何 订阅, 因此会执行以下业务事 件上的有效订阅: oracle.apps.fnd.any 可以使用两种方式触发业务事件: Raise in Java 和 Raise in PLSQL, 故名思意两种方式的 不同在于前者使用JAVA进行处理, 后者使用 plsql.
  • 9. Define a Subscription ? 定义好业务事件之后可以为该事件定义订阅, 如 下: Source Agent 指定仅处理某个代理中的业务事件 Phase 一个业务事件可以有多个订阅, phase表示订 阅执行的顺序; 同时phase还决定订阅的执行 是否延迟, 1-99立即执行; >=100延迟. Rule Data Key 只传递Event Key Message 传递完成的事件数据 Action Type 常用的有: Send Notification 发送通知 Launch Workflow 启动工作流
  • 10. Define a Subscription - Send Notification ? 这里为oracle.apps.gmd.leave事件定义通知类型的 订阅, 如下: 订阅1: 立即发送通知
  • 11. Define a Subscription - Send Notification ? 测试该业务事件, 在事件触发之后应该立即 发出通知. 可以看到process_ops 立即收到了通知
  • 12. Define a Subscription - Launch Workflow 订阅2: 延迟启动工作流
  • 13. Define a Subscription - Launch Workflow ? 使用BES启动一个工作流需要对工作流进行修改, 工作流必 须以事件节点作为Start节点.打开wfdemo.wft替换Start节点 为业务事件节点, 设置Event Action为Receive, Event Filter为 oracle.apps.gmd.leave, 如下: Event Action Receive 等待Business Event Send 发送event到另一个agent Raise 触发一个event
  • 14. Define a Subscription - Launch Workflow ? 使用plsql方式触发业务事件以验证是否启动了流程: 可以看到该流程被启动, 使用BES驱动流 程时, Event Key被用作启动工作流的 Item Key, 这里是1000; 流程出错, 是因为 没有设置申请人工作流属性.
  • 15. Business Event - Deferred ? 业务事件触发之后, 如果订阅是延迟的(phase>99), 那么该 业务事件将会进入到指定的agent中; 根据触发的方式不同, 使用PLSQL触发的事件将进入WF_DEFERRED代理中, 使用 JAVA触发的事件进入WF_JAVA_DEFERRED代理; ? 上述的事件是使用PLSQL触发的, 因此可以在WF_DEFERRED 代理中找到. 使用以下方式: WAWA > Workflow Manager, 点 击Agent Activity链接后进行查找, 可以看到该业务事件已经 被处理(状态为processed). 如下:
  • 16. Business Event - Service Components ? 服务组件是BES系统的重要组成部分, 用于: 1, 处理延迟业务事件; 2, 发送工作流邮件(需要配置邮件服务器). 这里介绍服务组件的第一个功能. 当一个业务事件被延迟处理时, 由 以下两个服务组件来处理: – Workflow Deferred Agent Listener 处理WF_DEFERRED代理中的业务事件 – Workflow Java Deferred Agent Listener 处理WF_JAVA_DEFERRED代理中的业务事件 通常情况下, 这两个服务组件会随着 EBS启动, 可以通过WAWA > Workflow Manager, 点击Service Components 链接查看服务组件的运行情况. 对于服务组件的更多介绍可以参考 Note 733335.1.
  • 17. Continue Workflow ? 前面演示了如何使用BES来启动一个工作流, 另外一种情况 是使用BES来驱动流程的继续进行, 比如流程运行到某个节 点等待某个业务事件发生才能继续进行; 需要修改业务事 件订阅的相关设置, 在Launch Workflow动作的定义中需要 选择额外选项Launch When Business Key Matches, 如下:
  • 18. ? 修改wfdemo.wft文件, 替换开始的事件节点为普通 的Start节点, 在”Find Approver”函数节点后面添加 事件节点, Event Action 和 Filter的配置不变, 如下:
  • 19. Continue Workflow - Business Key ? 在触发一个业务事件时, 需要指定该事件的event key, 只有 当业务事件的event key与流程事件节点的#BUSINESS_KEY (系统要求的名称)属性相等, 才可以驱动该流程继续进行; 这里定义一个工作流属性BUSINESS_KEY, 为事件节点添加 #BUSINESS_KEY属性并将默认值设置为该工作流属性:
  • 20. Continue Workflow - Event Info ? 在判断业务事件的event key与事件节点的#BUSINESS_KEY属性相等之后, 系统会自动将业务事件的相关信息赋值给相应的工作流属性, 其中(括 号中的是属性的类型): 业务事件名称 => EVENT_NAME(TEXT) 业务事件KEY => EVENT_KEY(TEXT) 业务事件数据 => EVENT_DATA(EVENT) 因此需要定义如上3个工作流 属性, 同时需要设置事件节点如下:
  • 21. Continue Workflow - Testing ? 现在来测试使用BES驱动工作流进行, 首先 重新上传并启动该工作流, 指定Business Key 工作流属性为100, 可以看到流程将会停止 在事件节点:
  • 22. Continue Workflow - Testing ? 触发业务事件, 首先指定event key为99, 由于 不与事件节点的Business Key匹配, 所以无法 驱动流程继续进行. 接下来使用100作为 event key查看流程运行状态如下, 可以看到 当前流程已经运行到通知节点: