Starting and Using the Command-Line Interface

3 Using the Command-line Interface 3-1 3 Using the Command-line Interface This chapter describes the RL command-line that reads rulesets from System.in and writes output from the functions println, watch, and, show to System.out. This chapter includes the following topics: ■ Section 3.1, Starting and Using the Command-Line Interface ■ Section 3.2, RL Command-Line Options ■ Section 3.3, RL Command-Line Built-in Commands

3.1 Starting and Using the Command-Line Interface

The following invocation provides a simple command-line interface, with the prompt, RL. Example without Java Beans: java -jar SOA_ORACLE_HOMEsoamodulesoracle.rules_11.1.1rl.jar -p RL Where SOA_ORACLE_HOME is where SOA modules are installed for example, c:OracleMiddleware. The –p option specifies the prompt. The following shows how an RL Language command-line can be started that can access this Java bean: java -classpath SOA_ORACLE_HOMEsoamodulesoracle.rules_11.1.1rl.jar;BeanPath oracle.rules.rl.session.CommandLine -p RL Where BeanPath is the classpath component to any supplied Java Bean classes. To exit the command-line interface, use the special action exit; at the command prompt. The exit; action cannot be in an included ruleset. Alternatively, to exit you can invoke the System.exitint method in any action. The RL command-line interface accumulates input line by line, and interprets the input when the input stream includes either: ■ A complete named ruleset ■ One or more complete import, include, ruleset, definition, action commands within an unnamed ruleset. 3-2 Oracle Fusion Middleware Language Reference Guide for Oracle Business Rules Example 3–1 Sample RL Command-Line Input Processing RL int i = 1; RL if i 0 {printlni positive;} nothing happens - waiting for possible else ; i positive RL Input must be complete at the end of a line. For example, if an action ends in the middle of a line, then that action is not interpreted until some following action is complete at the end of a line. Example 3–2 Sample Command-Line Input Processing - Waiting for End of Line RL printlndelayed ; printlnhello ; printlnworld; delayed hello world RL Notes for using command-line input processing: 1. The command-line segments its input into blocks and then feeds each block to the interpreter. If you never type a closing brace or semicolon, no error is raised because the command line waits for input before it does a full parse of the block 2. The command-line interpreter, when used interactively or with the –i option, collapses the input, for line numbering purposes, into small rulesets ending at a newline. Errors are reported with numbers within the ruleset. For example, if the input consists of the following: int i = 0; i = 1; this is a ruleset i = i; this is another ruleset For this example, command-line reports an error as follows: Oracle Business Rules RL: type check error ConversionException: cannot convert from type java.lang.String to type int at line 1 column 5 in main To avoid this behavior, you can explicitly enclose the input in a ruleset. For example, ruleset main { int i = 0; i = 1; i = i; } Note: The if,else and try, catch, and finally actions require lookahead to determine where they end. In order to execute an if without an else clause, or a try without a finally clause at the RL command-line, you should add a semicolon terminator. This is not necessary if you execute RL using include, or using the RuleSession API. Using the Command-line Interface 3-3 Now, the error is on line 3 or, you can include the input file using an include.

3.2 RL Command-Line Options