9 ルール対応の非SOA Java EEアプリケーションの作成
Oracle JDeveloperを使用して、ルール対応非SOA Java Enterprise Edition (EE)アプリケーションを作成します。Oracle Business Rulesを使用してJava EEアプリケーションとして動作するサンプル・アプリケーションJava Servletを確認します(SOAコンポジットなしのOracle Business Rulesの使用方法を説明します)。
Oracle Business Rules固有のサンプルとSOAのサンプルのソースコードは、Oracle SOA Suiteのサンプルおよびチュートリアル・ページからオンラインで入手できます。
9.1 等級サンプル・アプリケーションの概要
等級アプリケーションは、Java Servlet内Oracle Business Rulesのサンプル使用を示しています。サーブレットでは、Rules SDKデシジョン・ポイントAPIが使用されます。
このサンプルは、次のことを示しています。
-
データ・モデルの入力データ、出力データおよびファクトを定義するXSDスキーマを使用した、Oracle Business Rulesディクショナリへのルールの作成。この場合、ファイル
grades.xsd
でXSDスキーマを指定します。 -
入力である各テスト・スコアについて、等級の判別にOracle Business Rulesを使用するサーブレットの作成。
-
入力であるテスト・スコアを提供して、データを等級サーブレットに送信するためのテスト・ページの作成。
-
アプリケーションのデプロイと実行、テスト値の送信および出力の表示。
もう1つの例があります。詳細は、「レンタカー・サンプル・アプリケーションとプロジェクトを開く方法」を参照してください。
9.2 等級サンプル・アプリケーション用のアプリケーションとプロジェクトの作成
次のステップに従って、等級サンプル・アプリケーションを作成できます。
ノート:
スクリーン・ショットは、前のバージョンを反映していますが、内容は現在のリリースにも当てはまります。
等級サンプル・アプリケーション用のアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。
-
Fusion Webアプリケーション(ADF)を作成します。
-
アプリケーション内でプロジェクトを作成します。
-
データ・モデルの入力、出力およびオブジェクトを定義するスキーマを追加します。
-
プロジェクト内でOracle Business Rulesディクショナリを作成します。
9.2.1 等級サンプル・アプリケーション用のFusion Webアプリケーションの作成方法
Oracle Business Rulesで作業しJava EEアプリケーションを作成するには、まずOracle JDeveloperでアプリケーションを作成する必要があります。
Fusion Webアプリケーション(ADF)を作成するには:
-
アプリケーションを作成します。そのためには、「アプリケーション・ナビゲータ」で「新規アプリケーション」を選択するか、または「アプリケーション」メニューのリストから「新規アプリケーション」を選択します。
-
「アプリケーションの名前付け」ダイアログで、図9-1に示すようにアプリケーションのオプションを入力します。
-
「アプリケーション・テンプレート」領域で「Fusion Web Application」を選択します。
-
「アプリケーション名」フィールドで、アプリケーション名を入力します。たとえば、
GradeApp
と入力します。 -
「ディレクトリ」フィールドで、ディレクトリ名を指定するか、またはデフォルトを使用します。
-
「アプリケーション・パッケージの接頭辞」フィールドに、アプリケーション・パッケージの接頭辞を入力します。たとえば、
com.example.grades
と入力します。この接頭辞とそれに続くピリオドは、アプリケーションの初期プロジェクトで作成されるオブジェクトに適用されます。
-
-
「終了」をクリックします。アプリケーションを作成すると、図9-2に示すようなファイルのサマリーがOracle JDeveloperに表示されます。
9.2.2 アクセス可能なADF Facesページの開発方法
Oracleソフトウェアには、http://www.oracle.com/accessibility/standards.html
にある標準の解説を使用した、Web Content Accessibility Guidelines (WCAG) 1.0 Level AAの標準が実装されています。
ADF Facesのユーザー・インタフェース・コンポーネントには、視覚的および身体的な障害のあるユーザーのために、組込みのアクセシビリティ・サポートが用意されています。スクリーン・リーダーのような非視覚的なメディアへのレンダリングを行うWebブラウザなどのユーザー・エージェントにより、コンポーネントのテキスト説明が読み上げられ、障害を持つユーザーに有益な情報が提供されます。アクセス・キー・サポートは、キーボードのみを使用してコンポーネントやリンクにアクセスする代替の方法を提供します。ADF Facesのアクセシビリティ監査ルールにより、アクセス可能なHTMLマークアップを使用して、アクセス可能なイメージ、表、フレーム、フォーム、エラー・メッセージおよびポップアップ・ウィンドウの作成が指示されています。
アクセシビリティを考慮したADF Facesページの開発方法の詳細は、『Oracle ADF FacesによるWebユーザー・インタフェースの開発』のアクセシビリティを考慮したADF Facesページの開発に関する項を参照してください。
9.2.3 Gradesプロジェクトの作成方法
等級サンプル・アプリケーションでは、ModelまたはViewControllerプロジェクトは使用しません。等級サンプル・プロジェクト用にアプリケーションでプロジェクトを作成します。
Gradesプロジェクトを作成するには:
-
GradeAppアプリケーションで、「アプリケーション・ナビゲータ」の「アプリケーション」メニューから「新規プロジェクト」を選択します。
-
「新規ギャラリ」の「項目」領域で、「汎用プロジェクト」を選択します。
-
「OK」をクリックします。
-
「プロジェクトの名前付け」ページで、図9-3に示すように値を入力します。
-
「プロジェクト名」フィールドに名前を入力します。たとえば、
Grades
と入力します。 -
ディレクトリ名を入力または参照するか、デフォルトを使用します。
-
「プロジェクト・テクノロジ」タブを選択します。
-
「使用可能」領域で「ADFビジネス・コンポーネント」をダブルクリックして、この項目を「選択済」領域に移動します。これにより、図9-3に示すようにJavaも「選択済」領域に追加されます。
-
-
「終了」をクリックします。これにより、Gradesプロジェクトが追加されます。
9.2.4 Gradesプロジェクト内でのXMLスキーマの追加方法とJAXBクラスの生成方法
Gradesサンプル・アプリケーションを作成するには、次に示すサンプルのgrades.xsd
スキーマのように、grades.xsd
ファイルを使用する必要があります。スキーマ・ファイルをローカルで作成し保存してから、Oracle JDeveloperを使用してファイルをプロジェクトにコピーできます。
<?xml version= '1.0' encoding= 'UTF-8' ?> <xs:schema targetNamespace="http://example.com/grades" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://example.com/grades" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.0"> <xs:element name="TestScore"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="testName" type="xs:string"/> <xs:element name="testScore" type="xs:double"/> <xs:element name="testCurve" type="xs:double"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="TestGrade"> <xs:complexType> <xs:sequence> <xs:element name="grade" type="tns:Grade"/> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="Grade"> <xs:restriction base="xs:string"> <xs:enumeration value="A"/> <xs:enumeration value="B"/> <xs:enumeration value="C"/> <xs:enumeration value="D"/> <xs:enumeration value="F"/> </xs:restriction> </xs:simpleType> </xs:schema>
XMLスキーマをGradesプロジェクトに追加するには:
9.2.5 Gradesプロジェクト内でのOracle Business Rulesディクショナリの作成方法
Oracle JDeveloperでプロジェクトを作成した後、Gradesプロジェクト内でビジネス・ルールを作成します。
ビジネス・ルールをOracle JDeveloperで使用する手順は、次のとおりです。
-
ビジネス・ルールをプロジェクトに追加し、
grades.xsd
スキーマをインポートします。 -
入力変数と出力変数を作成します。
-
プロジェクト内でOracle Business Rulesディクショナリを作成します。
ビジネス層にビジネス・ルール・ディクショナリを作成するには:
新しいディクショナリのビジネス・ルール検証ログ領域に、検証警告がいくつか表示されることに注意してください。これらの検証警告メッセージは、後のステップでディクショナリを変更するとクリアされます。
9.3 等級サンプル・アプリケーション用のデータ・モデル要素とルールの作成
次のステップに従って、等級サンプル・アプリケーション用のデータ・モデル要素とルールを作成します。
等級サンプル・アプリケーション用にデータ・モデルとビジネス・ルールを作成する手順は、次のとおりです。
-
等級用値セットを作成します。
-
等級用デシジョン表の追加によるルールの作成
-
デシジョン表の分割およびルールに対するアクションの追加
-
デフォルトのデシジョン関数名の変更
9.3.1 等級サンプル・アプリケーション用の値セットの作成方法
この例では、ファクト・タイプと値セットを関連付けます。これは、(デシジョン表の条件について)デシジョン表の各セルについて値の描画方法を指定する値セットを定義する必要があるデシジョン表の使用をサポートしています。
等級サンプル・アプリケーション用の値セットを作成するには:
- ルール・デザイナで、「値セット」ナビゲーション・タブを選択します。
- 「値セットの作成」ボタンの横にあるリストから「範囲リスト」を選択します。
- 値セットに対して、「名前」フィールド内をダブルクリックし、デフォルト名を選択します。
Grade Scale
と入力し、[Enter]を押してその値セット名を受け入れます。- 「値セット」表で、Grade Scale値セットのアイコンをダブルクリックし、「値セットの編集」ダイアログを表示します。
- 「値セットの編集」ダイアログで「追加」をクリックして値を追加し、「追加」を3回クリックしてさらに3つの値を追加します。
- 最上位エンドポイントについて「エンドポイント」フィールドに90と入力し、[Enter]を押して新しい値を受け入れます。
- 次の値について「エンドポイント」フィールドに80と入力し、[Enter]を押して新しい値を受け入れます。同様に、次の2つの値について「エンドポイント」フィールドに値70および60を入力します。
- 値ごとに、「含まれるエンドポイント」フィールドのチェック・ボックスをそれぞれ選択します。
- 対応する各範囲について、各値の「エイリアス」フィールドに値A、B、C、DおよびFをそれぞれ入力して変更します(各エイリアスを追加するたびに[Enter]を押します)。
9.3.2 値セットをファクト・プロパティに関連付ける方法
デシジョン表を作成する準備のため、グローバル値セットをデータ・モデル内のファクト・プロパティに関連付けることができます。これにより、デシジョン表の作成時に、デシジョン表の「条件」領域にある条件セルで値セットを使用できるようになります。
値セットをファクト・プロパティに関連付けるには:
- Rules Designerで、「ファクト」ナビゲーション・タブを選択します。
- 「ファクト」ナビゲーション・タブで、「XMLファクト」タブを選択します。
- TestScoreファクトの「XMLファクト」アイコンをダブルクリックします。「XMLファクトの編集 -」ダイアログが表示されます。
- 「XMLファクトの編集 -」ダイアログで「testScore」プロパティを選択します。
- 「値セット」フィールドで、リストから「Grade Scale」を選択します。
- 「OK」をクリックします。
9.3.3 等級サンプル・アプリケーション用のデシジョン表の追加方法
デシジョン表で、入力ファクトを処理して出力ファクトを生成するか、暫定的な結論を生成するため、ルールを作成します。暫定的な結論は、Oracle Business Rulesにより他のルールを使用するか別のデシジョン表内でさらに処理できます。
このアプリケーションでルールにデシジョン表を使用するには、テスト・スコアを表すファクトで作業します。次に、デシジョン表を使用して、テスト・スコアに基づいて等級を生成するルールを作成します。
等級アプリケーション用のデシジョン表を追加するには:
- ルール・デザイナで、「ルールセット」リストの下の「Ruleset_1」を選択します。
- 「Ruleset_1」で、「概要」タブの「デシジョン表」領域から「作成」をクリックします。これにより、DecisionTable_1が作成されます。「ビジネス・ルール検証」ログ領域に表示される警告メッセージは無視できます。これらの警告メッセージは、後のステップで削除します。
- デシジョン表DecisionTable_1で、「追加」ボタンをクリックし、リストから「条件」を選択します。
- デシジョン表で、「<条件の編集>」をダブルクリックします。次に、変数ナビゲータで、「TestScore」を開いて「
testScore
」を選択します。これにより、条件C1の式TestScore.testScore
が入力されます。
ルール検証ログを表示すると、警告メッセージが表示されます。これらの警告メッセージは、後のステップでデシジョン表を変更すると削除されます。
9.3.4 デシジョン表にアクションを追加する方法
デシジョン表にアクションを追加するには:
新しいGradeファクトをアサートするため、デシジョン表にアクションを追加します。
次に、デシジョン表にルールを追加し、ルールごとにアクションを指定します。
9.3.5 等級サンプル・アプリケーション用のデシジョン表でのルールの追加方法
デシジョン表の分割操作を使用して、デシジョン表の条件行に関連付けられた値セットに関するルールを作成できます。これにより、値ごとに1つルールが作成されます。
デシジョン表を分割するには、デシジョン表で、「表の分割」ボタンをクリックし、リストから「表の分割」を選択します。分割操作により、考慮されないセルが表から消去されます。図9-10に示すように、これで表にはすべての範囲を対象とする5つのルールが表示されています。
これらのステップでは、欠落している式があるアクション・セルに関する検証警告が生成されます。これらの問題は、後のステップで各ルールに対するアクションを定義する際に修正します。
デシジョン表内のルールごとにアクションを追加するには:
デシジョン表の「アクション」領域で、各アクション・セルのTestGradeに関連付けられているgradeプロパティの結果の値を指定します。各gradeプロパティに可能な選択肢は、有効な等級です。このステップでは、各ルールについて値を入力します。入力した値は、デシジョン表の各ルールを構成する条件に対応します。
9.3.6 等級サンプル・アプリケーション用のデシジョン関数名の変更方法
Rules SDKデシジョン・ポイントでデシジョン関数を使用するときに指定する名前は、ディクショナリ内のデシジョン関数の名前と一致する必要があります。名前を一致させるために、デシジョン関数を任意の名前に変更できます。この例では、デフォルトのデシジョン関数をGradesDecisionFunction
という名前に変更します。
デシジョン関数の名前を変更するには:
- 「アプリケーション・ナビゲータ」のGradesプロジェクトで、「リソース」フォルダを開き、ディクショナリGradingRules.rulesをダブルクリックします。
- 「デシジョン関数」ナビゲーション・タブを選択します。
- 図9-12に示すように、「デシジョン関数」表の
「名前」
フィールドでデシジョン関数名を編集し、値GradesDecisionFunctionを入力して[Enter]を押します。
9.4 Rules SDKコールを含む等級アプリケーションのサーブレットの追加
等級サンプル・アプリケーションには、Rules Engineを使用するサーブレットが含まれています。
このサーブレットをOracle Business Rulesで追加するには、重要なRules SDKメソッドを理解する必要があります。したがって、ルール・デザイナで作成したOracle Business Rulesディクショナリを使用する手順は、次のとおりです。
-
サーブレットの
init
ルーチンで1度実行する初期化ステップの作成 -
Rules SDKデシジョン・ポイントAPIを使用したサーブレットの
service
ルーチンの作成 -
サーブレット・コードをプロジェクトに追加するステップの実行
Rules SDKデシジョン・ポイントAPIの詳細は、「スタンドアロン(非SOA/BPM)シナリオでのルールの使用」を参照してください。
9.4.1 Gradesプロジェクトへのサーブレットの追加方法
「HTTPサーブレット作成」ウィザードを使用して、Gradesプロジェクトにサーブレットを追加します。
Oracle JDeveloperでGradesプロジェクトにサーブレットを追加するには:
前の例には、MDSリポジトリを使用してディクショナリにアクセスするOracle Business Rulesデシジョン・ポイントが含まれています。詳細は、「本番環境でのデシジョン・ポイントの使用に関する必知事項」を参照してください。
等級サンプル・アプリケーションに示すようにサーブレットを追加するときは、次の点に注意します。
-
init()
メソッドでは、Oracle Business Rules用にサーブレットでRules SDKデシジョン・ポイントAPIが使用されます。デシジョン・ポイントAPIの使用方法の詳細は、「スタンドアロン(非SOA/BPM)シナリオでのルールの使用」を参照してください。 -
DecisionPointBuilder()
では、次に示すように、デシジョン関数名を含む引数が必要であり、本番環境でMDSリポジトリ内のディクショナリにアクセスするためのディクショナリFQNが必要です。m_decisionPoint = new DecisionPointBuilder() .with(DF_NAME) .with(DICT_FQN)
デシジョン・ポイントAPIの使用方法の詳細は、「スタンドアロン(非SOA/BPM)シナリオでのルールの使用」を参照してください。
9.5 等級サンプル・アプリケーション用HTMLテスト・ページの追加
次のステップに従って、等級サンプル・アプリケーション用のHTMLテスト・ページを作成します。
等級サンプル・アプリケーションには、「Rules SDKコールを含む等級アプリケーションのサーブレットの追加」で作成したサーブレットを起動するために使用するHTMLテスト・ページが含まれています。
サーブレットにHTMLページを追加するには、「HTMLファイルの作成」ウィザードを使用します。
HTMLテスト・ページを追加するには:
9.6 デプロイメントのための等級サンプル・アプリケーションの準備
ビジネス・ルールは、Oracle JDeveloperでデプロイメント・プロファイルの作成対象となるアプリケーションの一部としてデプロイされます。
アプリケーションのデプロイ先はOracle WebLogic Serverです。
9.6.1 等級サンプル・アプリケーション用のWARファイルの作成方法
JDeveloperをOracle WebLogic Serverとともに使用して、GradeAppサンプル・アプリケーションをデプロイします。
等級サンプル・アプリケーション用のWARファイルを作成するには:
-
「アプリケーション・ナビゲータ」で、「Grades」プロジェクトを選択します。
-
Gradesプロジェクトを右クリックし、コンテキスト・メニューから「プロジェクト・プロパティ」を選択します。プロジェクトの「プロジェクト・プロパティ」ダイアログが表示されます。
-
図9-17に示すように、「プロジェクト・プロパティ」ナビゲータで「デプロイ」項目を選択します。
-
「プロジェクト・プロパティ」ダイアログで、「新規」をクリックします。
「デプロイメント・プロファイルの作成」ダイアログが表示されます。
-
「デプロイメント・プロファイルの作成」ダイアログの「アーカイブ・タイプ」で、リストから「WARファイル」を選択します。
-
図9-18に示すように、「デプロイメント・プロファイルの作成」ダイアログの
「名前」
フィールドにgradesと入力します。「名前」の値には、「等級サンプル・アプリケーション用HTMLテスト・ページの追加」のステップ8でform
要素のaction
属性に指定したパッケージ値を使用することに注意してください。 -
「OK」をクリックします。
「WARデプロイメント・プロファイルのプロパティの編集」ダイアログが表示されます。
-
「WARデプロイメント・プロファイルのプロパティの編集」ダイアログで「一般」を選択し、図9-19に示すように「一般」ページを構成します。
-
「WARファイル」を
C:\JDeveloper\mywork\GradeApp\Grades\deploy\grades.war
に設定します。 -
「Webアプリケーションのコンテキスト・ルート」領域で、「Java EE Webコンテキスト・ルートを指定」を選択します。
-
「Java EE Webコンテキスト・ルートを指定」のテキスト入力領域に、
grades
と入力します。 -
「デプロイメント・クライアントの最大ヒープ・サイズ[単位:MB]」で、リストから「自動」を選択します。
-
-
「WARデプロイメント・プロファイルのプロパティの編集」ダイアログで「OK」をクリックします。
図9-20
に示すように、JDeveloperによりgrades (WAR File)というデプロイメント・プロファイルが作成されます。 -
「プロジェクト・プロパティ」ダイアログで、「OK」をクリックします。
9.7 等級サンプル・アプリケーションのデプロイと実行
これで、等級サンプル・アプリケーションをOracle WebLogic Serverにデプロイして実行できるようになりました。