Oracle Fusion Middleware Oracle Business Rulesランゲージ・リファレンス・ガイド 11g リリース1(11.1.1) B56239-01 |
|
戻る |
次へ |
この章では、ルールセットをSystem.in
から読み込み、関数println
、watch
およびshow
からの出力をSystem.out
に書き込むRLコマンドラインについて説明します。
この章の内容は次のとおりです。
次のコマンドは、プロンプトRL>
を使用して、単純なコマンドライン・インタフェースを起動します。この例ではJava Beanが含まれていません。
java -jar SOA_ORACLE_HOME/soa/modules/oracle.rules_11.1.1/rl.jar -p "RL> "
ここで、SOA_ORACLE_HOMEは、SOAモジュールがインストールされる場所です(例: c:/Oracle/Middleware
)。–p
オプションはプロンプトを指定します。
次に、このBeanにアクセスするためのRL Languageコマンドラインの開始方法を示します。
java -classpath SOA_ORACLE_HOME/soa/modules/oracle.rules_11.1.1/rl.jar;BeanPath oracle.rules.rl.session.CommandLine -p "RL> "
BeanPathは、提供されているJava Beanクラスへのクラスパス・コンポーネントです。
このコマンドライン・インタフェースを終了するには、コマンド・プロンプトで特殊なアクションexit;
を使用します。exit;
アクションをルールセットに含めることはできません。かわりに、任意のアクションでSystem.exit(
int)
メソッドを起動して終了できます。
RLコマンドライン・インタフェースは、入力を行単位で蓄積し、入力ストリームに次のいずれかが含まれるとその入力を解析します。
完全な名前付きルールセットが含まれる場合
名前なしルールセット内に、1つ以上の完全なimport
、include
、ruleset
またはdefinition
アクション・コマンドが含まれる場合
注意: if とelse 、try 、catch とfinally アクションでは、終了場所を先に確認する必要があります。else 句のないif 、またはfinally 句のないtry をRLコマンドラインで実行するには、セミコロン終了文字を追加する必要があります。
これは、 |
例3-1 RLコマンドライン入力処理の例
RL> int i = 1; RL> if (i > 0) {println("i positive");} // nothing happens - waiting for possible "else" ; i positive RL>
入力は、行の最後で完了する必要があります。たとえば、行の途中でアクションが終了している場合、そのアクションは、次のアクションが行の最後で完了するまで解析されません。
例3-2 コマンドライン入力処理の例(行の終了まで待機する例)
RL> println("delayed" ); println("hello" ); println("world"); delayed hello world RL>
コマンドライン入力処理に関する注意
コマンドラインでは入力を複数のブロックに分割してから、各ブロックをインタプリタに渡します。閉じカッコまたはセミコロンを入力しない場合、コマンドラインでは、ブロック全体を解析する前に閉じカッコまたはセミコロンの入力を待機するため、エラーは発生しません。
コマンドライン・インタプリタを対話形式、つまり–i
オプションを設定して使用すると、入力が、行番号を付ける目的で、新規行で終了する小規模なルールセットに分解されます。エラーは、ルールセット内の番号を使用してレポートされます。
たとえば、次の行で構成される入力があるとします。
int i = 0; i = 1; // this is a ruleset i = "i"; // this is another ruleset
この例の場合、コマンドラインでは次のエラーがレポートされます。
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
このような動作を回避するには、ルールセットの入力を明示的に囲みます。例を次に示します。
ruleset main { int i = 0; i = 1; i = "i"; }
これで、エラーは3行目で発生します。あるいは、includeを使用して入力ファイルをインクルードできます。
表3-1 RLコマンドラインのオプション
この項では、RLコマンドライン・インタフェースによって実装されるコマンドについて説明します。ここで説明するコマンドはRLに含まれていません。したがって、これらのコマンドは、ブロック内に表示したり、ルールセットに含めることはできません。
現行のRuleSessionオブジェクトを破棄し、新規オブジェクトを割り当てます。これによって、ルール、変数、クラスおよび関数がすべて破棄されます。
clear;
を使用してコマンドラインを再開するかわりに、exit;
と入力し、Javaコマンドを再発行して別のコマンドラインを開始することもできます。