Book Image

Mastering JBoss Drools 6

By : Mariano De Maio, Mauricio Salatino, Esteban Aliverti
Book Image

Mastering JBoss Drools 6

By: Mariano De Maio, Mauricio Salatino, Esteban Aliverti

Overview of this book

Mastering JBoss Drools 6 will provide you with the knowledge to develop applications involving complex scenarios. You will learn how to use KIE modules to create and execute Business Rules, and how the PHREAK algorithm internally works to drive the Rule Engine decisions. This book will also cover the relationship between Drools and jBPM, which allows you to enrich your applications by using Business Processes. You will be briefly introduced to the concept of complex event processing (Drools CEP) where you will learn how to aggregate and correlate your data based on temporal conditions. You will also learn how to define rules using domain-specific languages, such as spreadsheets, database entries, PMML, and more. Towards the end, this book will take you through the integration of Drools with the Spring and Camel frameworks for more complex applications.
Table of Contents (18 chapters)
Mastering JBoss Drools 6
Credits
About the Authors
About the Reviewer
www.PacktPub.com
Preface
Index

Benefits of using globals


In Chapter 5, Understanding KIE Sessions, global variables were introduced as a way of interacting with external services. Even if the chapter never explicitly stated this, its tests showed another important benefit of using global: different implementations of the same global may be provided, depending on the context. Right now, the particular context that we are interested in is the testing context.

When testing, mock versions of the global variables requiring interaction with external services, can be provided. These mock variables will immensely reduce the complexity and boiler-plate code required by our tests.

Let's take the following example from the code bundle of Chapter 5, Human Readable Rules:

global AuditService auditService;
rule "Send Suspicious Operation to Audit Service"
when
    $so: SuspiciousOperation()
then
    auditService.notifySuspiciousOperation($so);
end

The preceding rule uses a global to interact with an audit service and notify it about suspicious...