第7章 JBoss Developer Studio
注記
注記

図7.1 概要
7.1. 概要
- コンテンツアシスタント 機能 (outline view を含む) を提供する
DRL構文認識エディター - コンテンツアシスタント 機能を提供する ドメイン固有言語 拡張認識エディター
- ルールフローグラフ (プロセスを表す) を編集するための Rule-Flow Graphical Editor。ルールフローグラフをルールパッケージに適用し、命令型制御 を許可できます。
- 以下を作成するウィザード
- 「rules」プロジェクト
- ルールリソース (
DRLまたはBRLファイルの形式) - ドメイン固有言語
- ディシジョンテーブル
- ルールフロー
- カスタム言語とルール言語間のマッピングを作成および管理するための domain-specific language editor
- ルール検証は、変更が行われるたびにルールを再構築します。Problem View よりエラーを報告します。
7.2. Drools ランタイム
7.2.1. Drools ランタイムの定義
- Drools Eclipse プラグインに含まれるようにデフォルトの jar ファイルを使用するには、「Create a new Drools 5 runtime ...」ボタンをクリックすると新しい Drools ランタイムを自動的に作成することができます。ファイルブラウザーが表示され、このランタイムを作成するファイルシステム上のフォルダーを選択するよう求められます。プラグインが必要な依存関係を自動的に指定されたフォルダーへコピーします。このフォルダーの選択後、ダイアログは下図のようになるはずです。
- 特定リリースの Drools プロジェクトを使用したい場合は、必要なすべての Drools ライブラリおよび依存関係が含まれるファイルシステム上にフォルダーを作成する必要があります。上記のように、新しい Drools ランタイムを作成する代わりにランタイムに名前を割り当て、必要な jar がすべて含まれるこのフォルダーの場所を選択します。
7.2.2. Drools プロジェクトに対するランタイムの選択
7.3. ルールプロジェクトの作成
Hello World ルールを学習してください。

図7.2 新しいルールプロジェクトの結果
注記
重要
JBoss Rules Builder と呼ばれる機能を提供します。 を使用してプロジェクトが作成されると、この機能はデフォルトで有効になります。また、他のプロジェクトに対してこの機能を手作業で有効にすることも可能です。
重要
.rule ファイルに移動する方法もあります。これらのファイルはビルダーによって無視されますが、ファイルに含まれるルールを検証するために単体テストで実行する必要があります。
7.4. 新しいルールの作成とウィザード
.drl ファイル拡張子を持つ空ののテキストファイルを生成するか、Wizard を使用します。Control+N を押すか、ツールバーの JBoss Rules アイコンをクリックして Wizard のメニューを起動します。

図7.3 ウィザードメニュー
src/rules というディレクトリを作成し、適切に命名されたサブディレクトリを追加します。パッケージ名は必須で、Java のパッケージ名と似ていることに注意してください (関係するルールをグループ化する名前空間を確立します)。

図7.4 新しいルールウィザード
7.5. テキストルールエディタ ー

図7.5 使用中のルールエディター
.drl または .rule 拡張子を持つファイルを開くことができます。通常、これらのファイルには関連する複数のルールが含まれますが、個別のファイルに各ルールが含まれるようにし、同じパッケージ名前空間に存在する利点を生かしてグループ化することも可能です。
注記
DRL ファイルのデータはプレーンテキスト形式で保存されます。
expander キーワードが存在することに注意してください。これは、ルール言語を解決するため、その名前の .dsl ファイルを検索するようルールコンパイラーに指示します。ドメイン固有言語が使用可能であっても、ルールはプレーンテキストとして格納され、画面上で表示できる内容を反映します。これにより、バージョンを比較する場合など、ルールの管理が非常に簡単になります。

図7.6 ルールアウトラインビュー
7.6. ガイド付きエディター

図7.7 ガイド付きエディター
- メニューをクリックします。
.brlファイルを作成し、Guided Editor で開きます。注記
Editor は、.brlファイルと同じディレクトリにある.packageを使用して動作します。このファイルには、通常の.drlファイルの上部にあるようなパッケージ名とインポートステートメントが含まれます。- パッケージファイルに必要な
factクラスを追加します。 - この情報を追加したら、Guided Editor によって示されたプロンプトに従います (ファクトと関連するフィールドが表示されます)。
model または fact クラスが提供されたら、Guided Editor はルールの視覚的な表現をレンダリングすることができます。また、これを使用し、ビジネスルール言語を直接使用してルールを構築することもできます。これを実現する方法の 1 つが drools-ant モジュールを使用する方法です。このモジュールは、ルールアセットをディレクトリのルールパッケージとして作成するため、バイナリファイルとしてデプロイすることが可能になります。また、以下のコードスニペットを使用して、BRL ファイルを .drl ルールに変換する方法もあります。
例7.1 変換コード
BRXMLPersitence read = BRXMLPersitence.getInstance(); BRDRLPersistence write = BRDRLPersistence.getInstance(); String brl = ... // read from the .brl file as needed... String outputDRL = write.marshall(read.unmarshal(brl)); // Pass the outputDRL to the PackageBuilder, as usual
7.7. JBoss Rules ビュー
working memory を起動するコードでブレークポイントを作成します (workingMemory.fireAllRules() を呼び出す行が適しています)。デバッガーが joinpoint で停止した場合、Debugging Variables ビューで working memory 変数を選択します。次に、次の機能を使用して選択されたworking memory の詳細を表示します。
- Working Memory View には JBoss Rules の
working memoryにある要素がすべて表示されます。 - 名前の通り、Agenda View には
agendaの要素がすべて表示されます (各ルールの名前とバインドされた変数が表示されます)。 - Global Data View には、現在 JBoss Rules の
working memoryに定義されているグローバルデータがすべて表示されます。 - Audit View には、
rules engineが実行された時に生成された監査ログがツリー形式で表示されます。
7.7.1. Working Memory View

working memory にある各要素の 論理構造 の表示と、要素の詳細表示を切り替えます。論理構造では要素のセットを簡単に視覚化できます。AgendaItems の論理構造は、ルールとそのルールによって使用される全パラメーターの値を表示します。
7.7.2. Audit View

例7.2 監査ログの設定
WorkingMemory workingMemory = ruleBase.newWorkingMemory(); // Create a new Working Memory Logger, that logs to file. WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger(workingMemory); // An event.log file is created in the subdirectory log (which must exist) // of the working directory. logger.setFileName( "log/event" ); workingMemory.assertObject(...); workingMemory.fireAllRules(); // stop logging logger.writeToDisk();
- 挿入されたオブジェクト (緑色の正方形)
- 更新されたオブジェクト (黄色の正方形)
- 削除されたオブジェクト (赤色の正方形)
- 作成されたアクティベーション (右矢印)
- キャンセルされたアクティベーション (左矢印)
- 実行されたアクティベーション (青色の菱形)
- 開始または終了したルールフロー (「プロセス」アイコン)
- アクティベートまたはアクティベート解除されたルールフローグループ (「アクティビティ」アイコン)
- 追加または削除されたルールパッケージ (「JBoss Rules」アイコン)
- 追加または削除されたルール (「JBoss Rules」アイコン)
id と toString 表現が含まれます。アクティベーションイベントでは (作成済み、キャンセル済み、実行済みなど)、詳細にルール名とアクティベーションにバインドされたすべての変数が含まれます。
注記
注記
7.8. ドメイン固有言語
- ビジネスアナリストが独自の言葉でどのように記述するか注意してください。
- ルールコンストラクトよりこれをオブジェクトモデルへマッピングします (ドメインオブジェクトとルール自体の間で隔離レイヤーを提供できることも利点となります)。
注記
注記
Properties ファイル形式の若干改良されたバージョンを提供する利点があります)。
.dsl 拡張子を持つ任意のファイル上で起動されます (.dsl ファイルのサンプルを作成する wizard もあります)。
7.8.1. 言語の編集

図7.8 ドメイン固有言語エディター
rule resource ファイルが開かれた時に Rule Editor はこの設定をロードします)。ルールの言語マッピングは、rule engine によって言語式がコンパイルされる「コード」を定義します。
scope 項目は式がどこに属するかを示します。when は左側を示し、then は右側を示します。* は「どこでも」という意味です。
注記
警告

図7.9 言語マッピングエディターのダイアログ
- パーサーが
DSLファイルのルールテキストを読み取り、スコープに応じて言語式に対して行ごとに一致しようとします。 - 一致した場合、括弧内のプレースホルダー (
{age}など) に対応する値がルールソースより抽出されます。 - 「Rule Expression」のプレースホルダーは、対応する値に置き換えられます (上記の例では、自然言語式は「age」および「location」フィールドと、元のルールテキストより抽出された
{age}および{location}値に基づいて、「Person」型のファクトの 2 つの制約へマッピングします)。
注記
.drl ファイルの特定のルールに対して言語マッピングを使用したくない場合は、式の先頭に > を付けるとコンパイラーによって無視されます。また、ドメイン固有言語は任意であることにも注意してください。
.dsl ファイルも使用可能である必要があります。
7.9. Rete View
.drl ファイルに対する Rete Network を表示します。表示するには、DRL Editor ウインドウの下部にある Rete Tree というタブをクリックします。表示されると、個別のノードを「ドラッグアンドドロップ」し、最適な概観を調整します (これらのノード上で長方形をドラッグし、複数のノードを選択することもできます。こうすることで、グループ全体を移動することができます)。JBoss Rules IDE ツールバーの拡大アイコンは、慣習的なやり方で使用できます。
注記

重要
7.10. 大型の .drl ファイル
-XX:MaxPermSize=###m を用いて JBoss Rules IDE を起動します。例は次の通りです。
c:\Eclipse\Eclipse.exe -XX:MaxPermSize=128m
128 Mb に設定してください。
注記
.rule 拡張子を持つファイルにルールを格納することもできます。これを行うと、background builder は変更のたびにルールをコンパイルしないようになります。これにより、パフォーマンスが向上されます (特に、非常に大量のルールを処理する時に IDE の動作が遅い場合)。
7.11. ルールのデバッグ
consequences にブレークポイントを追加できます。ルール実行中にこのようなブレークポイントが検出されると処理が停止されるため、そのポイントで既知の変数をチェックし、デフォルトのデバッグアクションを使用して次に行う処理を決定することができます。また、Debugging View を使用して working memory と agenda の内容を調査することも可能です。
7.11.1. ブレークポイントの作成
- ブレークポイントを追加する行で DRL Editor の Ruler をダブルクリックします。
重要
このようなブレークポイントは、ルールのconsequenceのみで作成できます。ブレークポイントが許可されない行をダブルクリックしても何も行われません。ブレークポイントを削除するには、再度 Ruler をダブルクリックします。 - ルーラーを右クリックすると、「Toggle breakpoint」アクションが含まれるポップアップメニューが表示されます。ルールブレークポイントはルールの結果でのみ作成できることに注意してください。ルールブレークポイントがその行で許可されない場合、アクションは自動的に無効になります。アクションをクリックすると、選択された行にブレークポイントが追加されますが、ブレークポイントがすでに存在する場合はブレークポイントが削除されます。
7.11.2. ルールのデバッグ
JBoss Rules Application としてデバッグする必要があります。

図7.10 JBoss Rules アプリケーションとしてのデバッグ
- アプリケーションのメインクラスを選択し、右クリックします。 サブメニューを選択した後に を選択します。この代わりに メニューアイテムを選択することもできます。この場合、デバッグ設定を作成、管理、および実行するための新しいダイアログボックスが表示されます (以下のスクリーンショットを参照)。
- 左側の tree で アイテムを選択し、New Launch Configuration ボタン (tree の上にあるツールバーの一番左にあるアイコン) をクリックします。これにより、すでに一部のプロパティーが設定された (プロジェクトやメインクラスなど) 新しい設定が作成されます (最初に選択したメインクラスに基づきます)。これらすべてのプロパティーは標準的な Java プログラムのプロパティーと同じです。
- デバッグの設定の名前を意味のある名前に変更します。
- アプリケーションのデバッグは開始するには、ウインドウの下にある Debug ボタンをクリックします。デバッグ設定は一度だけ設定する必要があります。次回デバッグが必要な時は同じ設定を使用します。
注記
JBoss Rules IDE ツールバーには、以前の設定の 1 つを即座に再実行するショートカットボタンも含まれています (少なくとも Java、Java Debug、または JBoss Rules の 1 つが選択された時)。

図7.11 「Debug as JBoss Rules Application」の設定
working memory と agenda の内容を調査することも可能です (現在実行されているものが自動的に表示されるため、この時点で working memory を選択する必要はありません)。

図7.12 デバッグ

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.