Contents
This topic describes how to run the Drools sample application, which illustrates how to use the TIBCO StreamBase® Operator for Drools to integrate a business rule interpreted by the Drools Core rules engine. For more information about this sample, including information about optionally integrating the Drools Core plug-in with StreamBase Studio, see Using the Drools Operator.
Note
The Java code in this sample is delivered only in source code form. To build the code, you must load the sample into StreamBase Studio, which automatically builds the Java code.
This sample implements a simplified Order Routing-like application, one whose sole logic is to determine whether or not an
order can be routed by a downstream Smart Order Routing system, depending on the volume of the order being managed. The implementation
of the routing decision is embedded in the Drools rules file, routable-order.drl
.
Note
When a StreamBase field has mixed case (such as MyField
), you must refer to that field in your rules file with the first letter in lowercase (myField
). Otherwise, you may see errors such as "Unable to create Field Extractor for "MyField".
This sample has the following files:
-
The sample EventFlow application,
rulesuser.sbapp
. -
A Drools rule file,
routable-order.drl
. It contains a single rule that modifies theRoutable
boolean field tofalse
if the tuple contains a fieldVolume
whose value is greater than 1,000. -
In the
java-src
directory, a Java interface file,IOrder.java
, that describes the relevant portion of tuples entering the Drools operator.
The steps to run this sample in Studio are as follows:
-
In the Package Explorer, double-click to open the
rulesuser.sbapp
application. -
Make sure the application is the currently active tab in the EventFlow Editor, then click the Run button. This opens the SB Test/Debug perspective and starts the application.
-
In the Manual Input view, select the
ParentOrder
input stream. -
Enter any
Symbol
andPrice
, and enter aVolume
that is less than 1,000.Click
, and observe that the output stream that received the data is theRoutableParentOrder
stream, with a value oftrue
for theRoutable
field. -
Modify the
Volume
field to a value that is greater than 1,000.Click
, and observe that the output stream that received a new tuple is theNonRoutableParentOrder
stream, with a value offalse
for theRoutable
field. -
When done, press F9 or click the Stop Running Application button.
This section describes how to run this sample in UNIX terminal windows or Windows command prompt windows. On Windows, be sure to use the StreamBase Command Prompt from the Start menu as described in the Test/Debug Guide, not the default command prompt.
-
In StreamBase Studio, create a bundle file for this sample's application:
-
In the Package Explorer, right-click and select Export from the context menu.
-
In the Export dialog, select
→ and click . -
On the next panel, open the
sample_drools
project folder and selectrulesuser.sbapp
. -
On the same panel, specify a path and file name for the bundle file, then click
. For example, create a bundle file with the following path name:c:\tmp\rulesuser.sbbundle
or/home/
.sbuser
/tmp/rulesuser.sbbundle
-
-
Open three terminal windows on UNIX, or three StreamBase Command Prompts on Windows.
-
In window 1, navigate to the directory location where you saved your bundle file, then start StreamBase Server with the bundle file as its argument. For example:
Windows: cd /d c:\tmp sbd rulesuser.sbbundle
Linux: cd /home/
sbuser
/tmp sbd ./rulesuser.sbbundle -
In window 2, type:
sbc dequeue
This window will display tuples dequeued from the application's output ports.
-
In window 3, type:
sbc enq ParentOrder
This window is now ready to accept tuples typed with CSV syntax.
-
In window 3, type:
IBM, 400, 176.48
-
Observe in window 2 one tuple is emitted on the RoutableParentOrder stream, and its
Routable
field is markedtrue
:RoutableParentOrder,IBM,400,176.48,true
-
In window 3, type:
DELL, 1500, 17.15
-
Observe in window 2 that one tuple is emitted on the NotRoutableParentOrder stream, and its
Routable
field is markedfalse
:NotRoutableParentOrder,DELL,1500,17.15,false
-
In window 2, type Ctrl+C to terminate the dequeuer. Then type the following command to shut down the server:
sbadmin shutdown
In StreamBase Studio, import this sample with the following steps:
-
From the top menu, select
→ . -
Select
drools
from the Extending StreamBase category. -
Click OK.
StreamBase Studio creates a project for the Drools sample in your current Studio workspace.
When you load the sample into StreamBase Studio, Studio copies the sample project's files to your Studio workspace, which is normally part of your home directory, with full access rights.
Important
Load this sample in StreamBase Studio, and thereafter use the Studio workspace copy of the sample to run and test it, even when running from the command prompt.
Using the workspace copy of the sample avoids permission problems. The default workspace location for this sample is:
studio-workspace
/sample_drools
See Default Installation Directories for the default location of studio-workspace
on your system.
In the default TIBCO StreamBase installation, this sample's files are initially installed in:
streambase-install-dir
/sample/drools
See Default Installation Directories for the default location of studio-workspace
on your system.