ルールを使用して評価するBPELのdecideアクティビティに対して条件を指定するルールを定義するには、Oracle Business Rulesデータ・モデルを定義する必要があります。 データ・モデルには、XMLスキーマに基づいたXMLファクトなど、ファクト用のビジネス・データ定義(ルールで使用されるデータ・オブジェクト)が含まれます。
たとえば、SOA Order Bookingアプリケーションには、OrderBookingRules.xsd
ファイルが含まれています。 このファイルには、顧客情報のスキーマが指定されています。デシジョン・サービスはこのスキーマをファクトとしてルール・エンジンに送信し、ルール・エンジンはそのスキーマを処理して、注文に対して手動による承認が必要かどうかを判断します。 Oracle Business Rulesは、Java Architecture for XML Binding(JAXB)を使用して、XMLスキーマをJavaクラスにバインドします。 カスタム・バインディング宣言の使用方法については、次のWebサイトのJava Architecture for XML Binding(JAXB)の仕様を参照してください。
http://java.sun.com/webservices/jaxb/index.jsp
ビジネス・ルールを定義する際にビジネス・オブジェクトを使用できるように、XMLスキーマを処理し、処理したXMLスキーマ要素をデータ・モデルにインポートする必要があります。
データ・モデルでXML要素を使用するには、Rule Authorを使用して、XMLスキーマで検出されたXML要素を表すクラスを生成する必要があります。 次の手順では、JAXBクラスを生成し、生成したクラスおよびXMLスキーマに関連付けられているパッケージをRule Authorで参照できるようにします。
Rule Authorを使用してスキーマを準備する手順は、次のとおりです。
必要に応じて、「リポジトリ」タブをクリックしてディクショナリをロードします。
「定義」タブをクリックします。 ナビゲーション・ツリーに、使用可能な定義が格納された「定義」フォルダが表示されます。
ナビゲーション・ツリーの「定義」フォルダに、「ファクト」フォルダが表示されます。このフォルダには、使用可能なファクト・タイプのJavaファクト、XMLファクトおよびRLファクトが含まれています。 Javaクラスに基づいたビジネス・オブジェクトで作業する場合は、Javaファクトを使用します。 Javaファクト・タイプを使用すると、選択したプロパティとJavaクラスのメソッドを宣言できるため、ルールでは、そのJavaクラスのインスタンスに対するアクセス、作成、変更および削除が可能になります。 Oracle Business RulesのRL Languageファクトで作業する場合は、RLファクトを使用します。 RL Languageファクトには、RL Languageファクト・タイプ、Javaファクト・タイプまたはプリミティブ型のいずれかのメンバーのリストが含まれています。 RL Languageファクト・タイプを使用すると、ルール・エンジンの実行時に使用できる動的な仮想型を提供することでビジネス・モデルを拡張できます。
「XMLファクト」をクリックして、XMLファクト・サマリー・ページを表示します(図8-6を参照)。 XMLファクト・タイプを使用すると、選択した属性とXML要素のサブ要素またはcomplexType
を宣言できるため、ルールでは、そのインスタンスに対するアクセス、作成、変更および削除が可能になります。 たとえば、SOA Order Bookingアプリケーションでは、このタイプがビジネス・オブジェクトの定義に使用するタイプです。
「作成」をクリックします。
XMLスキーマ・セレクタ・ページが表示されます。
XMLスキーマ・セレクタ・ページの「XMLスキーマ」フィールドに、スキーマに対するパスまたはHTTP URLを入力します。 たとえば、次のいずれかを使用できます。
C:/demo/OrderBookingRules.xsd
http://www.myCompany.com/xsd/product.xsd
「JAXBクラス・ディレクトリ」フィールドに、Rule AuthorでJAXB生成クラスを格納するディレクトリを入力します(書込み可能なディレクトリを指定する必要があります)。 たとえば、次のように入力します。
c:/demo/xml
「ターゲット・パッケージ名」フィールドに値を入力します。 このフィールドを空のままにすると、JAXBクラス・パッケージ名は、JAXB XMLからJavaへのデフォルトのマッピング・ルールを使用して、XMLスキーマのターゲット・ネームスペースから生成されます。 たとえば、ネームスペースrules.oracle.comはcom.oracle.rulesにマップされます。
入力した値によって、生成されたクラス・パッケージの名前が指定されます。 たとえば、「generated
」と入力します。 この例では、名前にgeneratedを使用しますが、generatedという名前に特別な意味はありません。 この値によって、JAXB生成クラスに対するパッケージ名が指定されます(図8-7を参照)。
「スキーマの追加」をクリックします。
スキーマの処理とJAXBのコンパイルでは、該当するスキーマのサイズに応じて、この手順の完了にしばらく時間がかかる場合があります。 この手順が完了すると、「スキーマの追加」テキスト入力フィールドが空白になり、Rule Authorによって「現在のXMLスキーマ」フィールドが更新され、「生成したJAXBクラス」ボックスが表示されます(図8-8を参照)。
図8-8 Rule Authorの「定義」タブにあるXMLスキーマ・セレクタ(XMLスキーマ追加後)
次の手順では、XMLスキーマ要素を表すJAXB生成クラスを(サンプル・スキーマOrderBookingRules.xsd
から)データ・モデルに移動します。
ルールを作成して結果を出力するために、必要なデータを表すスキーマをインポートする手順は、次のとおりです。
「定義」タブをクリックして定義ページを表示します。
ナビゲーション・ツリーの「XMLファクト」フォルダをクリックします。
XMLファクト・サマリー・ページの「作成」をクリックします。 XMLスキーマ・セレクタ・ページが表示されます。
XMLスキーマ・セレクタ・ページの「生成したJAXBクラス」ボックスで、「ApproveType
」、「Approve
」および「ObjectFactory
」が表示されるまでナビゲーション・ツリーを開きます。
「generated」フォルダのチェック・ボックスを選択します。
「インポート」をクリックします。
Rule Authorによって、「1つのクラスまたはパッケージがインポートされました。」という確認メッセージが表示されます(図8-9を参照)。
「生成したJAXBクラス」ボックスの「generated」ノードを開いて、インポートされたクラスを確認します
注意: インポートされた要素は太字で表示されます。 |
XMLスキーマをデータ・モデルにインポートすると、インポートしたタイプと要素を組み込むためにデータ・モデルが更新されます。 これによって、Rule Authorを使用してルールを作成および変更するときに表示されるリストに、インポートした要素とタイプを表示できます。
ディクショナリを保存すると、指定したバージョン名を使用して、そのディクショナリに関連したルールとデータ・モデルが格納されます。
XMLスキーマへのアクセスにURLの使用を選択したときに、プロキシ・サーバーが使用されている場合は、次のシステム・プロパティを設定する必要があります。
proxyHost = $YourProxyHost proxyPort = $YourProxyPort proxySet = true
次に例を示します。
-DproxyHost=www-proxy.myCompany.com -DproxyPort=80 -DproxySet=true
OC4Jインスタンスのシステム・プロパティ設定の詳細は、『Oracle Containers for J2EE構成および管理ガイド』を参照してください。