您可以使用许多不同的机制来在 SAP
应用程序中检测事件。事件检测机制应该能够调用功能模块。IBM WebSphere Business
Integration mySAP.com 适配器(SAP R/3
V3.x)已实现的三个事件检测机制如下:
- 代码增强 - 它是为业务流程实现的(通常是单个 SAP 事务),方法是在 SAP
事务内的适当位置插入事件检测代码
- 批处理程序 - 涉及开发一个包含生成事件的条件的 ABAP 程序
- 业务工作流 - 使用 SAP 本身的面向对象的事件检测能力
因为某些机制可能不可用于特定业务流程,所以您确定要为开发的每个业务对象实现的适当事件检测机制很重要。对于您想要实现事件检测的每个事务,您必须对特定业务流程的技术和功能方面有所了解。
当确定要为业务流程实现哪种事件检测机制时,查看以下实现注意事项。
- 可用性
- 哪些事件检测机制可用于此业务流程?这应该是您要考虑的一个首要问题。代码增强和批处理程序具有高可用性,而业务工作流不具有高可用性。
- 实时集成
- 需要同步检测事件吗?您需要同时检测大量事件吗?除批处理程序外的所有机制都适合于实时集成。
- 可靠性
- 当生成事件时,是否检测到此业务流程的所有数据更改?代码增强和批处理程序对捕获对象的所有事件提供最佳控制。业务工作流提供有限的可靠性。例如,在供应商事务更新期间,业务工作流不会检测地址更改。
- 灵活性
- 在触发事件之前,需要评估某个条件吗?需要在事务的某一时刻检测事件吗?因为您可以在提交事件数据之前在特定位置插入代码,所以代码增强最灵活。批处理程序具有适度的灵活性,而业务工作流在其实现中具有非常小的灵活性。
- 升级相关性
- 升级 SAP
应用程序会更改此业务流程检测事件的方式吗?通常,这是未知的,但业务工作流受应用程序更改的影响最大,因为它在
SAP 的控制之下。
- 困难
- 问题是时间还是难度?每种机制都有各自不同的实现难度。通常,批处理程序最容易实现。代码增强和业务工作流较难实现。
此时,您应该对需要考虑的事件检测机制有所了解。在确定哪种机制可以用于您需要支持的每个业务流程时,使用表 46 作为一般准则。
表 46. 事件检测机制判定表
| 代码增强
| 批处理程序
| 业务工作流
|
可用性
| 高
| 高
| 低
|
实时集成
| 是
| 否
| 是
|
可靠性
| 高
| 高
| 低
|
灵活性
| 高
| 中
| 低
|
升级相关性
| 低
| 低
| 中
|
困难
| 中
| 低
| 中
|
要注意的最后一个注意事项是站点的开发方法。也许仅使用业务工作流的事件检测是首选方法,而代码增强根本不能使用。
建议将代码增强用于事件检测,因为它可靠、灵活性大、同步且具有高可用性。与之比较而言,业务工作流机制通常并非可用于所有业务流程。当不希望进行实时集成时,通常使用批处理程序。
对于在业务流程中检测事件,每种事件检测机制都具有优点和缺点。以下各节给出了关于每种事件检测机制的更多详细信息,包括每种机制的主要优点和缺点。
将在 SAP
事务的代码中的特定位置实现代码增强。通过利用用户出口,您可以将事件检测代码插入事务中最合理的位置。事件检测代码允许对条件进行评估来确定是否生成事件。
此机制的一般策略是在事务的数据即将提交至数据库时插入事件检测代码。
- 可以访问事件检测进程的 SAP 事务信息
- 允许在事务的适当位置插入事件检测代码
- 提供同步事件检测
- 限制了对 SAP 功能的依赖性,因此维护和增强更容易
- 用户出口可能不会总是在事务的适当位置。
- 可能需要 SAP 修改功能部件。
当需要触发大量相同类型的事件(如客户订单)或业务流程需要大量处理时间时,批处理程序很有用。此机制不要求对
SAP 交付的代码进行任何修改;但是,您需要使用(编写)评估检测事件的条件的 ABAP
程序。
- 可以对大多数业务流程实现
- 准确地检测事件
- 容易实现
- 如果运行时资源存在问题的话,可以安排在特定的时间运行
- 它不提供同步事件检测。
- 未提供 SAP 事务信息。
- 状态(创建、更新或删除)或状态更改检测不到或可能不容易检测。
- 如果创建后台作业来使批处理程序自动执行,则需要维护和监视额外的任务。
业务工作流是 SAP
应用程序中跨应用程序的工具,它使您能够将应用程序之间的业务任务整合在一起。此工具补充
SAP 应用程序的现有业务功能。可以使用业务工作流来调整 SAP
的标准功能,以满足所需业务功能的特定要求。业务工作流使用业务对象资源库(BOR),该资源库存储应用程序中每个
SAP 对象的定义。
- 提供同步事件检测
- 利用 SAP 的面向对象的业务对象能力来将事件检测链接至 ABAP 功能模块
- 容易实现
- 对于每个业务流程,SAP 对象在 SAP BOR 中都不存在。
- 对于 SAP 对象,SAP 事件(如已创建或已删除)可能不存在。
- 它可能并不会检测业务流程中的所有更改。
- 它不会总是在适当的时间提供检测事件的灵活性。
- 它依赖于 SAP 提供的功能,这在 SAP 的各个版本之间可能有所不同。
