16.9.2. drools および kcontext 変数のその他のルールアクションメソッド
標準のルールアクションメソッドに加えて、デシジョンエンジンでは、ルールアクションで使用できる事前定義された drools 変数および kcontext 変数と組み合わせて使用できるメソッドもサポートしています。
drools 変数を使用して、Red Hat Decision Manager ディストリビューションの KnowledgeHelper クラスからメソッドを呼び出すことができます。これは、標準のアクションメソッドのベースとなるクラスでもあります。すべての drools ルールアクションのオプションについては、Red Hat カスタマーポータル から Red Hat Decision Manager 7.11.0 Source Distribution の ZIP ファイルをダウンロードし、~/rhdm-7.11.0-sources/src/drools-$VERSION/drools-core/src/main/java/org/drools/core/spi/KnowledgeHelper.java に移動してください。
以下の例は、drools 変数と共に使用できる一般的なメソッドです。
-
drools.halt(): ユーザーまたはアプリケーションで以前にfireUntilHalt()が呼び出されている場合は、ルールの実行を終了します。ユーザーまたはアプリケーションがfireUntilHalt()を呼び出す場合、デシジョンエンジンは アクティブモード で開始し、ユーザーまたはアプリケーションがhalt()を明示的に呼び出すまでルールの評価を継続します。それ以外の場合、デシジョンエンジンはデフォルトで パッシブモード で実行し、ユーザーまたはアプリケーションが明示的にfireAllRules()を呼び出す場合にのみルールを評価します。 -
drools.getWorkingMemory():WorkingMemoryオブジェクトを返します。 -
drools.setFocus( "<agenda_group>" ): ルールが属する指定されたアジェンダグループにフォーカスを設定します。 -
drools.getRule().getName(): ルールの名前を返します。 -
drools.getTuple()、drools.getActivation(): 現在実行されているルールに一致するTupleを返し、対応するActivationを提供します。これらの呼び出しは、ロギングやデバッグを行う場合に役立ちます。
kcontext 変数を getKieRuntime() メソッドと共に使用して、KieContext クラスや、拡張によりご使用の Red Hat Decision Manager ディストリビューションの RuleContext クラスから別のメソッドを呼び出すことができます。完全な Knowledge Runtime API は kcontext 変数を通じて公開され、詳細なルールアクションメソッドを提供します。kcontext ルールアクションのすべてのオプションについては、Red Hat カスタマーポータル から Red Hat Decision Manager 7.11.0 Source Distribution の ZIP ファイルをダウンロードし、~/rhdm-7.11.0-sources/src/kie-api-parent-$VERSION/kie-api/src/main/java/org/kie/api/runtime/rule/RuleContext.java に移動してください。
以下の例は kcontext.getKieRuntime() の変数とメソッドの組み合わせで使用できる一般的なメソッドです。
-
kcontext.getKieRuntime().halt(): ユーザーまたはアプリケーションで以前にfireUntilHalt()が呼び出されている場合は、ルールの実行を終了します。このメソッドは、drools.halt()メソッドと同等です。ユーザーまたはアプリケーションがfireUntilHalt()を呼び出す場合、デシジョンエンジンは アクティブモード で開始し、ユーザーまたはアプリケーションがhalt()を明示的に呼び出すまでルールの評価を継続します。それ以外の場合、デシジョンエンジンはデフォルトで パッシブモード で実行し、ユーザーまたはアプリケーションが明示的にfireAllRules()を呼び出す場合にのみルールを評価します。 kcontext.getKieRuntime().getAgenda(): KIE セッションAgendaへの参照を返し、次にルールアクティベーショングループ、ルールアジェンダグループ、およびルールフローグループにアクセスできるようにします。アジェンダグループ CleanUp にアクセスしてフォーカスを設定する呼び出しの例
kcontext.getKieRuntime().getAgenda().getAgendaGroup( "CleanUp" ).setFocus();この例は、
drools.setFocus( "CleanUp" )と同等です。-
kcontext.getKieRuntime().getQueryResults(<string> query): クエリーを実行し、結果を返します。このメソッドはdrools.getKieRuntime().getQueryResults()と同等です。 -
kcontext.getKieRuntime().getKieBase():KieBaseオブジェクトを返します。KIE ベースはルールシステムのすべてのナレッジのソースであり、現在の KIE セッションの開始元です。 -
kcontext.getKieRuntime().setGlobal()、~.getGlobal()、~.getGlobals(): グローバル変数を設定するか、または取得します。 -
kcontext.getKieRuntime().getEnvironment(): 使用するオペレーティングシステム環境と類似したランタイムのEnvironmentを返します。