第20章 その他の DRL ルールの作成および実行方法
Business Central インターフェイスで DRL ルールを作成し、管理する代わりに、Red Hat CodeReady Studio やその他の統合開発環境 (IDE) を使用して、Maven または Java プロジェクトの一部として DRL ルールファイルを作成できます。このスタンドアロンプロジェクトは、ナレッジ JAR (KJAR) 依存関係として、Business Central の既存の Red Hat Decision Manager プロジェクトに統合できます。スタンドアロンプロジェクトの DRL ファイルには、少なくても、必要な package 仕様、import リスト、および rule 定義が含まれる必要があります。グローバル変数や関数など、その他の DRL コンポーネントは任意です。DRL ルールに関連するすべてのデータオブジェクトは、スタンドアロンの DRL プロジェクトまたはデプロイメントに含まれる必要があります。
Maven または Java プロジェクトで実行可能なルールモデルを使用して、ビルド時に実行するルールセットの Java ベース表記を提供します。実行可能モデルは Red Hat Decision Manager の標準アセットパッケージングの代わりとなるもので、より効率的です。KIE コンテナーと KIE ベースの作成がより迅速にでき、DRL (Drools Rule Language) ファイルリストや他の Red Hat Decision Manager アセットが多い場合は、特に有効です。
20.1. Java を使用した DRL ルールの作成および実行 リンクのコピーリンクがクリップボードにコピーされました!
Java オブジェクトを使用して、ルールが含まれる DRL ファイルを作成し、Red Hat Decision Manager デシジョンサービスにオブジェクトを統合します。DRL ルールを作成する方法は、デシジョンサービスに外部 Java オブジェクトを使用している場合や、同じワークフローを継続する場合に便利です。この方法を使用しなくなった場合は、Red Hat Decision Manager の Business Central インターフェイスを使用して、DRL ファイルや、その他のルールアセットを作成することが推奨されます。
手順
ルールが有効な Java オブジェクトを作成します。
この例では、
my-projectディレクトリーにPerson.javaファイルが作成されます。Personクラスには、名前、苗字、時給、および賃金を設定および取得するゲッターメソッドおよびセッターメソッドが含まれます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow my-projectディレクトリーに、.drl形式のルールファイルを作成します。DRL ファイルには、少なくともパッケージの指定 (該当する場合) と、(1 つまたは複数の) ルールで使用されるデータオブジェクトのインポートリストと、when条件およびthenアクションを持つ 1 つ以上のルールが含まれます。以下の
Wage.drlファイルには、賃金と時給を計算し、その結果に基づいてメッセージを表示するWageルールが含まれています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - メインクラスを作成し、Java オブジェクトを作成したディレクトリーに保存します。メインクラスは KIE ベースを読み込み、ルールを実行します。
メインクラスに、KIE サービス、KIE コンテナー、および KIE セッションをインポートするのに必要な
import命令文を追加します。つぎに、KIE ベースを読み込み、ファクトを挿入し、ファクトモデルをルールに渡すmain()メソッドからルールを実行します。この例では、必要なインポートと
main()メソッドを使用して、my-projectにRulesTest.javaファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Red Hat カスタマーポータル から ZIP ファイル Red Hat Process Automation Manager 7.13.4 Source Distribution をダウンロードし、
my-project/dm-engine-jars/で展開します。 my-project/META-INFディレクトリーに、以下の内容のkmodule.xmlメタデータファイルを作成します。<?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://www.drools.org/xsd/kmodule"> </kmodule>
<?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://www.drools.org/xsd/kmodule"> </kmodule>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この
kmodule.xmlファイルは、KIE ベースへのリソースを選択し、セッションを設定する KIE モジュールの記述子です。このファイルを使用すると、KIE ベースを 1 つ以上定義して設定し、特定の KIE ベースの特定のpackagesから DRL ファイルを含めることができます。各 KIE ベースから KIE セッションを 1 つ以上作成することもできます。次の例は、より高度な
kmodule.xmlファイルを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例は、KIE ベースを 2 つ定義します。KIE ベース
KBase1から 2 つの KIE セッションをインスタンス化し、KBase2から KIE セッションを 1 つインスタンス化します。KBase2の KIE セッションはステートレスな KIE セッションですが、これは 1 つ前の KIE セッションで呼び出されたデータ (1 つ前のセッションの状態) が、セッションの呼び出しと呼び出しの間で破棄されることを示しています。ルールアセットの特定のパッケージは両方 KIE ベースに含まれます。この方法でパッケージを指定した場合は、指定したパッケージを反映するディレクトリー構造で DRL ファイルを整理する必要があります。Java オブジェクトですべての DRL アセットを作成して保存したあと、コマンドラインで
my-projectディレクトリーに移動し、以下のコマンドを実行して Java ファイルをビルドします。RulesTest.javaを、Java のメインクラスの名前に置き換えます。javac -classpath "./dm-engine-jars/*:." RulesTest.java
javac -classpath "./dm-engine-jars/*:." RulesTest.javaCopy to Clipboard Copied! Toggle word wrap Toggle overflow ビルドに失敗したら、コマンドラインのエラーメッセージに記載されている問題に対応し、エラーが表示されなくなるまで Java オブジェクトの妥当性確認を行います。
Java ファイルが問題なくビルトできたら、以下のコマンドを実行してローカルでルールを実行します。
RulesTestを、Java のメインクラスのプリフィックスに置き換えます。java -classpath "./dm-engine-jars/*:." RulesTest
java -classpath "./dm-engine-jars/*:." RulesTestCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ルールを見直して、適切に実行したことを確認し、Java ファイルで必要な変更に対応します。
Red Hat Decision Manager で既存のプロジェクトと新しいルールアセットを統合するには、ナレッジ JAR (KJAR) として新規 Java プロジェクトをコンパイルし、Business Central でプロジェクトの pom.xml ファイルに、依存関係としてこのプロジェクトを追加します。Business Central でプロジェクト pom.xml にアクセスするには、プロジェクトで既存のアセットを選択し、画面左側の Project Explorer メニューで Customize View ギアアイコンをクリックし、Repository View