Your SlideShare is downloading. ×
7, business event system
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

7, business event system

336

Published on

Business Event System

Business Event System

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
336
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Business Event
  • 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 workflowraise 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查看流程运行状态如下, 可以看到 当前流程已经运行到通知节点:

×