使用自开发程序来处理业务逻辑时,处理过程通常是个黑箱,业务顾问和业务用户不知道程序的具体运行方式,要依赖文档和频繁的沟通来确认实际情况。

BRFplus可以通过配置的方式实现业务逻辑,使得业务人员把业务逻辑的实现掌握在自己手中,此外,跟踪(tracing)功能的存在使得业务逻辑应用的执行情况也变得清晰可见。

 

本文链接:https://www.cnblogs.com/hhelibeb/p/9556478.html

目的

跟踪模式有以下用处:

  • 有助于找到BRF+应用运行结果与预期不一致的原因。
  • 统计各规则的使用情况,从而理解规则调整的影响和风险。
  • 统计输出结果的分布情况。

跟踪信息可以帮助人们进一步理解业务的实际执行情况,确定哪些场景是常见的、哪些是偶然的甚至永不出现的,从而进一步优化业务逻辑实现。

实现

虽然跟踪模式可以服务业务,但是因为BRF+应用需要通过ABAP代码来调用,所以实现部分会是和ABAP相关的内容。

我创建了一个简单的BRF+应用,其功能是根据输入的采购订单编号,到数据库表EKKO中查询采购组和采购订单类型,根据这两个字段的组合,来决定是否需要审批。涉及到2个表达式,1个是数据库查找(DB lookup),还有一个是决策表(decision table)

调用

ABAP调用代码,

REPORTztest_brf3.PARAMETERS: p_ebeln TYPEebeln.START-OF-SELECTION.*获取function实例
DATA(lo_fuction) =CAST cl_fdt_function(
cl_fdt_factory
=>if_fdt_factory~get_instance(
)
->get_function( '005056A4CCA61ED8AAF183894A92CC2B') ).*获取context实例 DATA(lo_context) =CAST cl_fdt_context(
lo_fuction
->if_fdt_function~get_process_context( ) ).*将将采购订单号输入到context lo_context->if_fdt_context~set_value(
: iv_name
= 'EBELN' ia_value =p_ebeln ) .*处理,获取结果和跟踪数据 lo_fuction->if_fdt_function~process(EXPORTING io_context =lo_context
iv_trace_mode
= if_fdt_constants=>gc_trace_mode_leanIMPORTING eo_result = DATA(lo_result)
eo_trace
= DATA(lo_trace) ).

标签: none

添加新评论