Skip to Content

Business Rules Framework plus – NetWeaver 7.0 EHP2 Teaser

In NetWeaver 7.0 Enhancement Package 2 (EHP2) BRFplus comes with a bunch of improvements. In this blog I want to show and explain some of them. The screenshots are taken from our development system. Most likely there will be further changes until shipment so that the final screens will look different.


    • Configuration
    • Version Comparison
    • Deep Types Expression Type Formula
    • Expression Type Static Method
    • Expression Type Table Operations
    • Expression Type Loop
    • Web Service Generation

Workbench and Catalog

The screenshot shows the BRFplus workbench. On the left side you can see the four navigation options: Repository, Recently Used, Favorites and Catalog. Catalog is selected. In the navigation pane below you can see a catalog for a customer scoring example. A catalog allows creation of any structure to organize the artifacts of the use case, such as Functions, Expressions, Rulesets or Context Data Objects. With NW 7.0 EHP2 Catalogs are integrated into the workbench.

On the right side, ruleset “Ruleset Score” is displayed. It contains several rules and additional variables. It will be evaluated when function “Propensity to Pay” is executed. Rule 4 is currently in change mode. You can see that the rules have a description and that their validity can be limited to a time period. Note that the nested objects (such as the context data object “Delta Score” in the action part of rule 4) are not shown with their technical names but with their more descriptive text. This display behavior is configurable as of NW 7.0 EHP2.

A rule in NW 7.0 EHP2 can change the context by assigning a value or taking a value from another context data object or an expression that returns a calculated value. Additionally rules can trigger actions.

!|height=400|alt=BRFplus Workbench and Catalog|width=640|src=|border=0!


The screenshot shows the new configuration popup. In the configuration you can customize the look and feel of the BRFplus workbench as well as features that are offered to the end user. Note that you can also set the configuration when calling the workbench from your ABAP code. By doing so you can limit the options of a user very easily.

!|height=275|alt=BRFplus Configuration|width=278|src=|border=0!

Version Comparison

The screenshot shows function “Versioning Test” that has two versions. The versions are listed with their activation timestamp. Also, there is a small protocol that summarizes the changes. However, you can also visually compare versions (see next screenshot), display a specific version, compare an object with another one, delete inactive versions or create a new version based on an existing one.

!|height=331|alt=BRFplus Version Comparison|width=436|src=|border=0!

The screenshot shows two versions of Function “Versioning Test”. As you can see, the signature was changed between the two versions. The display of historic versions also enables navigation to nested objects such as the data objects used in the signature.

*!|height=378|alt=BRFplus Version Comparison|width=632|src=|border=0! </p><p>Deep Types </p><p>The screenshot contains many new features in NW 7.0 EHP2. On the left side you can see the repository navigation. It is possible to expand an object to see the referenced objects or usages of the object. The repository is well organized with grouping for the artifacts (Catalog Data Objects, Expressions) including sub types such as the Expression Types of the expressions.</p><p>On the right side you can see a Data Object of type Structure. This structure shows how BRFplus allows definition of “deep”, i.e. complex types with a hierarchical structure. The structure has components like tables, structures and element. </p><p> </p><p>!|height=385|alt=BRFplus Deep Type|width=624|src=|border=0!</p><p>Expression Type Formula</p><p>There are several changes in the Formula Expression Type. On the left side you can see the context data objects including a structure that is expanded. Now it is easily possible to directly use components of a structure in expressions. Above the list of context data objects you can see the help provided for formula functions. Now you can immediatelly see the formula function syntax and a documentation link is provided as well. The list of formula functions can now be filtered by different categories, and there is also a free text filter. It is possible to define new categories for custom functions. </p><p>*!|height=309|alt=BRFplus Formula|width=557|src=|border=0!*</p><p>Expression Type Static Method</p><p>The screenshot shows an improved Expression Type “Static Method”. Most likely the name will be changed because of the new capabilities. Now it is possible to call a function module or a static method without the need to use an encapsulating class implementing a special interface. It is possible now to bind the function module/method signature against nested expressions or context data objects.</p><p>*!|height=207|alt=BRFplus ABAP Call|width=431|src=|border=0!*</p><p>Expression Type Table Operations</p><p>The new Expression Type “Table Operations” supports the following table-oriented functions:</p><ul><li>Has at least <number> entries in <table> with <condition></li><li>Has exactly <number> entries in <table> with <condition></li><li>Has not more than <number> entries in <table> with <condition></li><li>Number of lines in <table> with <condition></li><li>Minimum over <column> with <condition></li><li>Maximum over <column> with <condition></li><li>Total over <column> with <condition></li><li>Average over <column> with <condition></li><li>First line in <table> with <condition></li><li>Last line in <table> with <condition></li><li>All lines in <table> with <condition></li><li>Sort <table> by <column> <column> <column> …</li><li>Delete first line in <table> with <condition></li><li>Delete last line in <table> with <condition></li><li>Delete all lines in <table> with <condition></li></ul><p>!|height=213|alt=BRFplus Table Operations|width=433|src=|border=0!</p><p>Expression Type Loop</p><p>If the Expression Type “Table Operation” does not solve your problem, you also may consider using the new Expression Type “Loop”.</p><p>It features the following modes:</p><ul><li>Loop mode “Repeat <number> times”</li><li>Loop mode “Repeat until <condition>”</li><li>Loop mode “While <condition> repeat”</li><li>Loop mode “For each line in <table> with <condition>”</li></ul><p>Inside of the loop rules can be used to perform any kind of operation including changing context values, calling expressions or triggering actions. </p><p>!|height=246|alt=BRFplus Loop|width=434|src=|border=0!</p><p>Web Service Generation*

Last but not least, let’s have a look at a screenshot for the web service generation. Functions define the signature to the rules and rulesets. Once defined, it is very easy to generate a web service. The only inputs needed are shown in the screenshot.

!|height=238|alt=BRFplus WebService|width=625|src=|border=0!

Of course this is just a small set of screenshots. There are many more changes and we are still not done with everything you will get with NW 7.0 EHP2. Now since we are int he final stage of development we focus mostly on usability improvements. I hope this creates some excitement for using BRFplus. 🙂


You must be Logged on to comment or reply to a post.
  • Looks great Carsten, I can't wait to try it out (whenever that time may be!).

    I think important information for people reading this should also be WHEN this will be available for us to use.

    Q2 2010 (Around June) is when Netweaver EHP 702 will be available to us correct?  I keep hearing contrary dates (Q1 2010 from some people).


    • Yasu QuickRules was acquired in 2007 by SAP. It's product was converted into NW BRM. NW BRM is a java rules engine that resides in CE and is tightly connected with NW BPM.

      BRFplus is an ABAP rules engine, optimized for the ABAP stack (e.g. for suite applications).

      We are currently working out how to bring BRFplus and BRM more closely together. E.g. we want to be able to model rules in the one and deploy and execute in the other. Or we think about central search and management capabilities.

      • Carsten
        First of all, thanks for the great session at TechED Phoenix. I agree, the session should have been slotted for two hours.
        Now, coming to the product, I am not sure if it is a good strategic decision to have two different tools, one running on Java and other on ABAP. If the motivation is to have an unified set of Business rules across a customer landscape which will have both SAP and non-SAP systems, then hosting a rules engine on a common platform like Java will be more beneficial for customers. I do agree with you that BPM and BRM are two different topics but in an enterprise, they tend to coexist and SAP's BPM engine being on Java, I think it make sense to have BRM on Java too. As an ardent ABAP fan, I would definitely love to have BRM in ABAP but I am also concerned that it will be seen as a product that only suites SAP systems and customers would start looking at competition.
        Just my few cents, let me know your thoughts.


        • I fully agree to your statement. Therefore we are working to make an exchange happen between BRM and BRFplus so that rules can be created centrally in BRM and executed in BRFplus. You need the execution in ABAP to handle the data volumes.

          Also a rules engine has to support the applications as best as possible. This includes the ability to call code, to optimize with application exits etc. This is different in Java and ABAP. The applications that come with the rules packages (no need for replication into the other stack) should not be limited in terms of flexibility.