SlideShare ist ein Scribd-Unternehmen logo
1 von 23
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

Weitere ähnliche Inhalte

Ähnlich wie 7, business event system

深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除5045033
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程yiditushe
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程appollo0312
 
Power flow簡介
Power flow簡介Power flow簡介
Power flow簡介Sky Wu
 
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐Andrew Wu
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & apited-xu
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC
 
Sql Cluster Tech Net 0401(Pm)
Sql Cluster Tech Net 0401(Pm)Sql Cluster Tech Net 0401(Pm)
Sql Cluster Tech Net 0401(Pm)bigqiang zou
 
Top100summit 高楼-7点测试-zee-性能测试案例分享
Top100summit 高楼-7点测试-zee-性能测试案例分享Top100summit 高楼-7点测试-zee-性能测试案例分享
Top100summit 高楼-7点测试-zee-性能测试案例分享drewz lin
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维guiyingshenxia
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维colderboy17
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统melity78
 
深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabricJohn Chang
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介Allen Lsy
 
VCACICM6_M07_Extensibility.pptx
VCACICM6_M07_Extensibility.pptxVCACICM6_M07_Extensibility.pptx
VCACICM6_M07_Extensibility.pptxLoessPlateau
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松Michael Zhang
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松areyouok
 
Sap net weaver®业务流程管理
Sap net weaver®业务流程管理Sap net weaver®业务流程管理
Sap net weaver®业务流程管理Bravo XU
 

Ähnlich wie 7, business event system (20)

深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 
Power flow簡介
Power flow簡介Power flow簡介
Power flow簡介
 
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & api
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
Jbpm
JbpmJbpm
Jbpm
 
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
 
Sql Cluster Tech Net 0401(Pm)
Sql Cluster Tech Net 0401(Pm)Sql Cluster Tech Net 0401(Pm)
Sql Cluster Tech Net 0401(Pm)
 
Top100summit 高楼-7点测试-zee-性能测试案例分享
Top100summit 高楼-7点测试-zee-性能测试案例分享Top100summit 高楼-7点测试-zee-性能测试案例分享
Top100summit 高楼-7点测试-zee-性能测试案例分享
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
VCACICM6_M07_Extensibility.pptx
VCACICM6_M07_Extensibility.pptxVCACICM6_M07_Extensibility.pptx
VCACICM6_M07_Extensibility.pptx
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
 
Sap net weaver®业务流程管理
Sap net weaver®业务流程管理Sap net weaver®业务流程管理
Sap net weaver®业务流程管理
 

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
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-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
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activityted-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
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
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
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activity
 
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
 

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