この章では、Oracle Business Rulesの様々な宣言コンポーネントおよびタスク・フローを使用して、高性能で保守しやすい対話型の多層アプリケーションを開発する方法について説明します。ここでは、Oracle Business Rulesエディタの宣言コンポーネントおよびOracle Business Rulesディクショナリ・エディタの宣言コンポーネントとタスク・フローを使用する方法について説明します。また、ADFベースのWebアプリケーションをローカライズする方法についても説明します。
この章には次の項が含まれます:
宣言コンポーネントは再利用可能なコンポジット・ユーザー・インタフェース(UI)コンポーネントで、他の既存のApplication Development Framework(ADF)Facesコンポーネントで構成されています。ここでは、複数のJSFページが含まれているアプリケーションを考えてみます。特定ページの複数の部分では、一連の固有のコンポーネントが使用されます。このシナリオで、一連のコンポーネントのいずれかに変更を加えた場合、通常は、該当するページの複数の部分にその変更を複製する必要があります。このアプローチでは、ページの構造とレイアウトの一貫性を維持することが困難です。一方、一連の指定コンポーネントで構成した宣言コンポーネントを定義すると、そのコンポジット宣言コンポーネントを複数の場所またはページで再利用できます。このため、宣言コンポーネントによって、時間の節約とページ間の一貫性が確保されます。これは、コンポーネントに変更を加えると、そのコンポーネントを使用しているJSFページが自動的に更新されるためです。
ADFタスク・フローは、アプリケーションに制御フローを指定する際、モジュラおよびトランザクション・メソッドを提供する再利用可能なコンポーネントです。再利用可能な一連のタスク・フローは、アプリケーションを単一の大きなJSFページ・フローとして表現する代替手段として使用でき、これによって、モジュール性が提供されます。各タスク・フローには、アプリケーションの全体的なナビゲーション計画の一部が含まれています。タスク・フローのノードはアクティビティと呼ばれます。ナビゲーションとは別に、タスク・フロー・アクティビティは、マネージドBeanでメソッドをコールしたり、特定のページを起動せずに別のタスク・フローをコールすることもできます。このため、表示されているページとは独立してビジネス・ロジックを起動できるため、再利用が容易になります。
この項では、Oracle Business Rulesエディタの宣言コンポーネントについて説明します。ルール・エディタ・コンポーネントを使用してアプリケーションを作成および実行し、アプリケーションをデプロイする方法についても説明します。また、この項では、サポートされているタグや、アプリケーションのローカライズ・プロセスのリストも示します。
Oracle Business Rulesエディタは、ADFベースのWebアプリケーションに埋め込むことができる宣言コンポーネントです。このコンポーネントによって、ルール編集のユーザー・インタフェースが表示され、ルール編集に関連付けられているすべてのイベントが処理されます。ルール・エディタでは、ルールの作成と編集にRules SDK2 APIが使用されます。
注意: ルール・エディタをルール・ディクショナリ・エディタと混同しないでください。ルール・エディタは、指定したルールセット内のルールを編集するために使用されます。実際には、ルール・エディタはルール・ディクショナリ・エディタに埋め込まれています。ルール・ディクショナリ・エディタの詳細は、第26.3項「Oracle Business Rulesディクショナリ・エディタの宣言コンポーネントの使用」を参照してください。 |
ルール・エディタを使用すると、単一のルールセットの一部であるルールとデシジョン表を編集できます。RuleSetModel
オブジェクトを指定する必要があります。このオブジェクトは、ルール・エディタ・コンポーネントへのパラメータとして、Rules SDKルールセット・オブジェクトを囲むラッパーです。複数のルールセットを変更する必要がある場合は、複数のルール・エディタ・コンポーネントを(ルールセットごとに1つ)インスタンス化する必要があります。
ルール・エディタ・コンポーネントは、次の機能を実行します。
次の要素を作成、更新および削除します。
ルールセットおよびルールの有効日と優先度を設定します。
ユーザー定義演算子のサポートを提供します。
「左の値」または「右の値」オプションを表示する「条件ブラウザ」ポップアップを提供します(図26-5を参照)。
日付タイプを選択するための「日付」ブラウザを提供します(図26-6を参照)。
右側の複数の式を処理する「右のオペランド」ブラウザを提供します(図26-7を参照)。
ネストされたルールのサポートを提供します(図26-8を参照)。
ルール・アクションのプロパティを編集するための「プロパティ」ブラウザを提供します(図26-9を参照)。
カスタム式を作成する「式ビルダー」ウィンドウを提供します(図26-10を参照)。
パターンおよび拡張アクションを使用するための拡張モード機能を提供します(図26-11を参照)。
エラー・メッセージを管理する検証パネルを提供します(図26-12を参照)。
注意: コンポーネント・ユーザーは、すべての編集が完了した後、ルールセットを保存する必要があります。 |
この項では、ルール・エディタ・コンポーネントを使用してサンプル・アプリケーションを作成および実行するための手順を示します。
ルール・エディタ・コンポーネントを使用してADFベースのWebアプリケーションを作成するための前提条件は、使用しているコンピュータでOracle SOA SuiteとOracle JDeveloperのインストールが実行されていることです。
ルール・エディタを使用してサンプル・アプリケーションを作成する手順は、次のとおりです。
最初のタスクはサンプル・アプリケーションの作成です。
次の手順に従います。
Oracle JDeveloperを開きます。
「ファイル」メニューから、「新規」→「汎用アプリケーション」の順に選択し、アプリケーションを作成します。
図26-13に示すように、「アプリケーション名」フィールドにアプリケーションの名前(useRulesDCApp
など)を入力し、「次へ」をクリックします。
図26-14に示すように、「プロジェクト名」フィールドにuseRulesDC
と入力し、「プロジェクト・テクノロジ」タブで「ADF Faces」が選択されていることを確認します。
「終了」をクリックしてプロジェクトを作成します。
Oracle JDeveloperの「アプリケーション・ナビゲータ」で「useRulesDC」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択して「プロジェクト・プロパティ」ダイアログ・ボックスを表示します。
「プロジェクト・プロパティ」ダイアログ・ボックスでは、次の手順に従います。
左側のパネルから「JSPタグ・ライブラリ」をクリックします。
「追加」をクリックし、図26-15に示すように、「タグ・ライブラリの選択」ダイアログ・ボックスの「拡張機能」リストから「ADF Faces Components」を選択し、「OK」をクリックします。
左側のパネルから「ライブラリとクラスパス」をクリックし、「ライブラリの追加」ボタンをクリックして「ライブラリの追加」ダイアログ・ボックスを表示します。
図26-16に示すように、「拡張機能」リストから「Oracle Rules」および「Oracle Rules Editor Component」をクリックし、「OK」をクリックします。
図26-16 Oracle RulesおよびOracle Rules Editorコンポーネントの選択
これにより、Rules SDKおよびRules Editorコンポーネント・タグ・ライブラリがプロジェクトに追加されます。
「OK」をクリックして「プロジェクト・プロパティ」ダイアログ・ボックスを閉じます。
Oracle JDeveloperの「ファイル」メニューから、「すべて保存」を選択してプロジェクトを保存します。
必要なすべてのタグ・ライブラリが追加されたことを確認する必要があります。
Oracle JDeveloperの「アプリケーション・ナビゲータ」で「useRulesDC」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択して「プロジェクト・プロパティ」ダイアログ・ボックスを表示します。
図26-17に示すように、左側のパネルから「JSPタグ・ライブラリ」をクリックし、すべてのタグ・ライブラリが追加されているかどうかを確認します。
RuleSetModelオブジェクトを作成する手順は、次のとおりです。
ルール・エディタ・コンポーネントには、oracle.bpel.rulesdc.model.impl.RuleSetModel
オブジェクトが必要です。コンポーネントでは、このオブジェクトを使用して、ルールセット内のルールやデシジョン表を読み取ります。したがって、次のタスクは、RuleSetModel
オブジェクトを作成するSomeBean.java
と呼ばれるマネージドBeanの作成です。
次の手順に従います。
Oracle JDeveloperを開きます。
「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。
「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「一般」の下にある「Java」を選択します。
「項目」で「Javaクラス」が選択されていることを確認し、「OK」をクリックして「Javaクラスの作成」ダイアログ・ボックスを表示します。
図26-18に示すように、Javaクラスの名前(SomeBean.java
など)を入力して「OK」をクリックし、プロジェクトにJavaクラスを作成します。
SomeBean.java
で、RuleSetModel
オブジェクトを返すメソッドを指定します。ここにルール・ファイルの場所を指定する必要があります。SomeBean.java
ファイルの例を次に示します。
package userulesdc;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import oracle.bpel.rulesdc.model.impl.RuleSetModel;
import oracle.rules.sdk2.dictionary.RuleDictionary;
import oracle.rules.sdk2.exception.SDKException;
import oracle.rules.sdk2.exception.SDKWarning;
import oracle.rules.sdk2.ruleset.RuleSet;
import oracle.rules.sdk2.ruleset.RuleSetTable;
public class SomeBean {
private static final String RULES_FILE = "<your rules file here>
";
private RuleSetModel ruleSetModel = null;
public RuleSetModel getRuleSetModel() {
if (ruleSetModel != null)
return ruleSetModel;
//cache ruleSetModel instead of re-creating it each time
Reader reader = null;
try {
reader =
new FileReader(new File(RULES_FILE));
} catch (FileNotFoundException e) {
//LOG.severe(e);
System.err.println(e);
}
RuleDictionary dict = null;
try {
dict = RuleDictionary.readDictionary(reader, null);
} catch (SDKException e) {
System.err.println(e);
} catch (FileNotFoundException e) {
System.err.println(e);
} catch (IOException e) {
System.err.println(e);
}
if (reader != null) {
try {
reader.close();
} catch (IOException ioe) {
}
}
//get the ruleSetTable from the RuleDictionary object
RuleSetTable ruleSetTable = dict.getRuleSetTable();
//get the first ruleSet from the ruleSetTable
RuleSet ruleSet = ruleSetTable.get(0);
//create a RuleSetModel object and pass this to the rulesDC
ruleSetModel = new RuleSetModel(ruleSet) ;
return ruleSetModel;
}
//refer to Rules SDK documentation for saving a dictionary also
//because this code does not take care of saving linked dictionaries
public static boolean saveDictionary(RuleDictionary dict,
String ruleFileName) {
Writer writer = null;
try {
writer = new FileWriter(new File(ruleFileName));
dict.writeDictionary(writer);
} catch (SDKException e) {
System.err.println(e);
return false;
} catch (FileNotFoundException e) {
System.err.println(e);
return false;
} catch (IOException e) {
System.err.println(e);
return false;
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException ioe) {
return false;
}
}
}
return true;
}
public static void updateDictionary(RuleDictionary dict) {
if (dict == null)
return;
List<SDKWarning> warnings = new ArrayList<SDKWarning>();
try {
dict.update(warnings);
if (!warnings.isEmpty()) {
for (int i = 0; i < warnings.size(); i++)
System.out.println("warnings: " +
warnings.get(i).getLocalizedMessage());
}
} catch (SDKException sdkEx) {
sdkEx.printStackTrace();
}
}
//You can call this method from your "Save" button
public void saveDictionary() {
RuleDictionary dict = this.getRuleSetModel().getRuleSet().getDictionary();
if (dict != null) {
//update the dictionary before saving it
updateDictionary(dict);
saveDictionary(dict, RULES_FILE);
}
}
//call the validation method on the ruleSetModel to update the Validation Panel
public void validate() {
if (this.ruleSetModel == null)
return;
this.ruleSetModel.validate();
faces-config.xml
ファイルを概要モードで開き、「マネージドBean」の下の「+」ボタンをクリックして「マネージドBeanの作成」ダイアログ・ボックスを表示します。
図26-19に示すように、「Bean名」フィールドにsomeBean
と入力し、「スコープ」リストで「セッション」を選択して、SomeBean.java
を指し示します。
ADF/JSFフレームワークによって、ユーザー・インタフェースを表示するSomeBean.java
への複数のコールが実行されます。たとえば、someBean.ruleSetModel
は複数回コールされます。しがたって、RuleSetModel
オブジェクトは、コールの都度再作成せずに、一度に作成してキャッシュし、返すほうが効率的です。
ルール・エディタ・コンポーネント・タグの.jspxファイルを作成する手順は、次のとおりです。
次のタスクは、ルール・エディタ・コンポーネント・タグを挿入する.jspx
ファイルの作成です。
次の手順に従います。
Oracle JDeveloperを開きます。
「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。
「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「Web層」の下にある「JSF」を選択します。
「項目」で「JSFページ」を選択し、「OK」をクリックして「JSFページの作成」ダイアログ・ボックスを表示します。
図26-20に示すように、「JSFページの作成」ダイアログ・ボックスで、「ファイル名」にuseRulesDC.jspx
と入力します。
図26-21に示すように、Oracle JDeveloperの「コンポーネント・パレット」にRulesCompLibが表示されます。
これは、サンプル・アプリケーションの作成時にルール・エディタ・コンポーネント・タグ・ライブラリを追加したためです。
RulesCompLibを選択し、Rulesdc
タグを表示します。Rulesdc
タグは、.jspx
ファイルにドラッグ・アンド・ドロップできます。.jspx
ファイルには、次のように、Rulesdc
タグを手動で追加することもできます。
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:rdc="http://xmlns.oracle.com/bpel/rules/editor"> <jsp:directive.page contentType="text/html;charset=UTF-8"/> <f:view> <af:document title="Sample Rules Editor App" id="d1"> <af:form id="f1"> <af:panelStretchLayout id="psl1" inlineStyle="margin:15px;" partialTriggers="cb1 cb3"> <f:facet name="center"> <rdc:rulesdc rulesetModel="#{someBean.ruleSetModel}" viewOnly="false" discloseRules="true" genericAction="true" genericPattern="true" dtColumnPageSize="6" id="r1" dateStyle="yyyy-MM-dd" timeStyle="HH-mm-ss"></rdc:rulesdc> </f:facet> <f:facet name="top"> <af:panelGroupLayout id="pgl2" layout="horizontal"> <af:commandButton text="Save Dictionary" action="#{someBean.saveDictionary}" id="cb1"/> <af:spacer width="10" height="10" id="s5"/> <af:commandButton text="Validate" id="cb3" action="#{someBean.validate}" partialSubmit="true"/> </af:panelGroupLayout> </f:facet> </af:panelStretchLayout> </af:form> </af:document> </f:view> </jsp:root>
oracle.rulesおよびoracle.soa.rules_editor_dc.webapp共有ライブラリを参照する手順は、次のとおりです。
.jspx
ファイルを作成した後は、weblogic-application.xml
ファイルからoracle.rules
およびoracle.soa.rules_editor_dc.webapp
共有ライブラリを参照する必要があります。
次の手順に従います。
Oracle JDeveloperで、「アプリケーション・リソース」→「ディスクリプタ」→「META-INF」の順に参照し、weblogic-application.xml
ファイルを開きます。
図26-22に示すように、次の行を追加してoracle.rules
共有ライブラリを参照します。
<library-ref> <library-name>oracle.rules</library-name> </library-ref>
Oracle JDeveloperで、次のようにします。
「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。
「新規ギャラリ」ダイアログ・ボックスで、「カテゴリ」パネルの「一般」にある「デプロイメント・ディスクリプタ」を選択します。
「項目」の下の「WebLogicデプロイメント・ディスクリプタ」を選択し、「OK」をクリックして、「WebLogicデプロイメント・ディスクリプタの作成」ダイアログ・ボックスを表示します。
リストから「weblogic.xml」を選択し、「終了」をクリックします。
Oracle JDeveloperで、weblogic.xml
の「概要」モードで、左側のパネルから「ライブラリ」を選択します。
図26-23に示すように、ライブラリ名にoracle.soa.rules_editor_dc.webapp
と入力します。
「すべて保存」をクリックします。
oracle.rules
共有ライブラリを埋込みOracle WebLogic Serverにデプロイします。
Oracle WebLogic Server管理コンソール(http://
host
:
port
/console/login/LoginForm.jsp
)を起動します。
Oracle JDeveloperで埋込みWeblogic Serverが実行されていることを確認します。
「デプロイメント」を選択し、「インストール」をクリックして、「アプリケーション・インストール・アシスタント」ページを表示します。
図26-24のように、次のものを選択し、「終了」をクリックします。
JDEV_INSTALL/jdeveloper/soa/modules/oracle.rules_11.1.1/rules.jar
oracle.soa.rules_editor_dc.webapp
共有ライブラリをOracle WebLogic Serverにデプロイします。
WebLogic Consoleで、「デプロイメント」を選択し、「インストール」をクリックして、「アプリケーション・インストール・アシスタント」ページを表示します。
次のものを選択し、「次へ」をクリックします。
JDEV_INSTALL/jdeveloper/soa/modules/oracle.soa.rules_editor_dc.webapp_ 11.1.1/oracle.soa.rules_editor_dc.webapp.war
図26-25に示すように、「このデプロイメントをライブラリとしてインストールする」を選択し、「終了」をクリックします。
図26-25 oracle.soa.rules_editor_dc.webapp共有ライブラリのデプロイ
図26-26に示すように、oracle.soa.rules_editor_dc.webappがデプロイメントのリストに追加されます。
図26-26 デプロイメント・リストに追加されたoracle.soa.rules_editor_dc.webapp
ルール・エディタ・サンプル・アプリケーションを実行する手順は、次のとおりです。
最後のタスクは、サンプル・アプリケーションの実行です。
サンプル・アプリケーションを実行するには、Oracle JDeveloperで、useRulesDC.jspxファイルを右クリックします。
「実行」を選択します。
図26-27に示すように、Webブラウザでサンプル・アプリケーションが開始します。
アプリケーションEARファイルをスタンドアロンOracle WebLogic Serverにデプロイする準備が整った場合は、次の手順を実行します。
Oracle WebLogic Server管理コンソール(http://
host
:
port
/console/login/LoginForm.jsp
)を起動します。
デプロイメント・リストにoracle.rulesが表示されていることを確認します。
デプロイメント・リストにoracle.soa.rules_editor_dc.webappが表示されていることを確認します。
これが表示されない場合は、「インストール」をクリックし、次のファイルを選択します。
JDEV_INSTALL/jdeveloper/soa/modules/oracle.soa.rules_editor_dc.webapp_ 11.1.1/oracle.soa.rules_editor_dc.webapp.war
Oracle JDeveloperを開きます。
「アプリケーション・ナビゲータ」でプロジェクト名を右クリックし、「プロジェクト・プロパティ」を選択します。
左側のパネルから「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックします。
図26-28に示すように、「ライブラリの追加」ダイアログ・ボックスで、「Oracle Rules Editor Component」を選択して「OK」をクリックします。
この手順では、これらのライブラリを参照できますが、これらのライブラリがデフォルトでデプロイされることはありません。したがって、JARはプロジェクトWARファイルには組み込まれていません。
デプロイする必要があるプロジェクト(EARファイルを作成する場所)で、次の手順を実行します。
次の行をweblogic-application.xml
に追加します。
<library-ref> <library-name>oracle.rules</library-name> </library-ref>
次の行をプロジェクトWARファイルのweblogic.xml
に追加します。
<library-ref> <library-name>oracle.soa.rules_editor_dc.webapp</library-name> </library-ref>
EARファイルをOracle WebLogic Serverにデプロイします。
EARの作成方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Java EE開発者ガイド』のデプロイメントのためのEARファイルの作成方法に関する項を参照してください。
ロールベースの認可について、Rules DCはカスタムJAAS権限を実装しています(oracle.adf.share.security.authorization.ADFPermission
クラスを拡張し、ADFセキュリティで権限を使用できるようにします)。
ルール・エディタ・アプリケーションでADFセキュリティがサポートされている場合は、ロールベースの認証および認可がサポートされていることになりますが、この場合、セキュリティはカスタムJAAS権限を実装して施行します(oracle.adf.share.security.authorization.ADFPermission
クラスを拡張してADFセキュリティで権限が使用されるようにします)。アプリケーション要件に基づいてユーザー・ロールに次の権限を付与してADFセキュリティ・ポリシーを作成する必要があります。
oracle.rules.adf.permission.AddRulePermission
: 「ルールの追加」ボタンが表示されます。この権限が付与されていない場合、「ルールの追加」ボタンはユーザーに表示されません。
oracle.rules.adf.permission.DeleteRulePermission
: 「ルールの削除」ボタンが表示されます。この権限が付与されていない場合、「ルールの削除」ボタンはユーザーに表示されません。
oracle.rules.adf.permission.EditRulePermission
: ルールセット内のルールについて「ルールの編集」ボタンが表示されます。この権限が付与されていない場合、ルールは表示のみとなります。
oracle.rules.adf.permission.AddDTPermission
: 「デシジョン表の追加」ボタンが表示されます。この権限が付与されていない場合、「デシジョン表の追加」ボタンはユーザーに表示されません。
oracle.rules.adf.permission.DeleteDTPermission
: 「デシジョン表の削除」ボタンが表示されます。この権限が付与されていない場合、「デシジョン表の削除」ボタンはユーザーに表示されません。
oracle.rules.adf.permission.EditDTPermission
: ルールセット内のデシジョン表について「デシジョン表の編集」ボタンが表示されます。この権限が付与されていない場合、デシジョン表は表示のみとなります。
oracle.rules.adf.permission.RulesEditorPermission
: 前述の権限をすべてtrue
に設定するグローバル権限。
たとえば、「ルールの削除」権限をロールに付与するには、アプリケーションのjazn-data.xml
ファイルに次のコードを指定します。
<grant> <grantee> <principals> <principal> <class>oracle.security.jps.service.policystore.ApplicationRole</class> <name>role2</name> </principal> </principals> </grantee> <permissions> <permission> <class>oracle.rules.adf.permission.DeleteRulePermission</class> <name>DeleteRulePermission</name> <actions>access</actions> </permission> </permissions> </grant>
AddRulePermission
またはDeleteRulePermission
など、個々の権限を使用しない場合は、jazn-data.xml
ファイルにRulesEditorPermission
を設定し、グローバル権限を設定します。
この項では、ルール・エディタ・コンポーネントでサポートされているタグおよび属性のリストを示します。
表26-1に、サポートされているファセットのリストを示します。
表26-1 ルール・エディタ・コンポーネントのサポートされているファセット
名前 | 説明 | コメント |
---|---|---|
|
特定のユーザー・インタフェースを表示するために使用します。このファセットを使用して、ルールの条件とパターンを(拡張モードで)表示します。これは、ルールの |
リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
特定のユーザー・インタフェースを表示するために使用します。このファセットを使用して、ルール・アクションを表示します。これは、ルールの |
リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
表26-2に、サポートされている属性のリストを示します。
表26-2 ルール・エディタ・コンポーネントのサポートされている属性
名前 | タイプ | 必須 | デフォルト値 | ELのサポート | 説明 |
---|---|---|---|---|---|
|
|
いいえ |
ロケールから取得 |
はい |
指定すると、その日付スタイルがすべての |
|
|
いいえ |
ロケールに基づく |
はい |
小数セパレータを指定します。これは数値書式に使用されます。指定した場合、この属性はロケールに基づく小数セパレータを上書きします。 |
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
編集可能なルールセット名がデフォルトで表示されます。これを |
|
|
いいえ |
はい |
|
|
|
oracle.bpel.rulesdc .model.interfaces.A ctionNameCustomizer |
いいえ |
はい |
デシジョン表ヘッダーでアクション名およびアクション・パラメータ名を指定するために使用されます。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
|
|
いいえ |
はい |
|
|
|
|
いいえ |
はい |
|
|
|
|
いいえ |
5 |
はい |
デシジョン表に一度に表示する列数を指定します。この属性は、ルールがコラムの場合のみ機能します。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
|
いいえ |
|
はい |
デシジョン表に一度に表示する行数。行数が指定の高さを超える場合は、スクロール・バーが表示されます。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
oracle.bpel.rulesdc .model.decisiontabl e.interfaces.Decisi onTablePrefs |
いいえ |
oracle.bpel .rulesdc.mo del.decisio ntable.impl .DecisionTa blePrefsImp l |
はい |
デシジョン表プリファレンスを指定するために使用されます。コンシューマは、次のデフォルトの実装を拡張し、必要なプリファレンスのみをオーバーライドできます。 oracle.bpel.rulesdc .model.decisiontabl e.impl.DecisionTabl ePrefsImpl |
|
j |
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
|
|
|
いいえ |
ロケールに基づく |
はい |
グループ化セパレータを指定します。これは数値書式に使用されます。指定した場合、この属性はロケールに基づくグループ化セパレータを上書きします。 |
|
oracle.bpel.rulesdc .model.interfaces.I fThenPreferences |
いいえ |
oracle.bpel .rulesdc.mo del.impl.If ThenPrefere ncesImpl |
はい |
IF/THEN UIプリファレンスを指定するために使用されます。コンシューマは、次のデフォルトの実装を拡張し、必要なプリファレンスのみをオーバーライドできます。 oracle.bpel.rulesdc .model.impl.IfThenP referencesImpl |
|
|
いいえ |
|
はい |
ローカライズに使用します。 |
|
oracle.bpel.rulessh areddc.model.interf aces.ResourceManage rInterface |
いいえ |
はい |
翻訳UIのリソース・マネージャを指定するために使用されます。詳細は、第26.6項「翻訳の使用」を参照してください。 |
|
|
|
いいえ |
oracle. bpel.rulesd c.model. impl. RuleModel |
はい |
デフォルトの |
|
oracle.bpel. rulesdc.model. interfaces. RuleSetInterface |
はい |
- |
ELのみ |
Rules SDKルールセット・オブジェクトを囲むラッパー。ルール・エディタ・コンポーネントJARファイル( |
|
j |
いいえ |
|
はい |
ページに表示するルール数を指定します。 |
|
|
いいえ |
|
はい |
デシジョン表の追加リンクおよび削除リンクがデフォルトで表示されます。これを |
|
j |
いいえ |
|
はい |
検証パネルがデフォルトで表示されます。これを |
|
|
いいえ |
oracle. bpel.rulesd c.model. impl. SimpleTestM odel |
はい |
デフォルトの |
|
|
いいえ |
ロケールから取得 |
はい |
指定すると、その時刻スタイルがすべての |
|
|
いいえ |
TimeZone. getDefault () |
はい |
ローカライズに使用します。 |
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
検証パネルがデフォルトで縮小されているかどうかを指定するために使用されます。 |
|
|
いいえ |
はい |
検証パネルのタイトルを指定するために使用されます。 |
この項では、Oracle Business Rulesディクショナリ・エディタの宣言コンポーネントについて説明します。ルール・ディクショナリ・エディタ・コンポーネントを使用してアプリケーションを作成および実行し、アプリケーションをデプロイする方法についても説明します。また、この項では、サポートされているタグや、アプリケーションのローカライズ・プロセスのリストも示します。
Oracle Business Rulesディクショナリ・エディタは、ADFベースのWebアプリケーションに埋め込むことができるコンポジット宣言コンポーネントです。Rules SDK2 APIを使用することで、グローバル、バケットセット、ルールセットなどのビジネス・ルール・メタデータ・アーティファクトを編集できます。
注意: ルール・ディクショナリ・エディタをルール・エディタと混同しないでください。ルール・エディタでは、指定したルールセット内のルールを編集します。実際には、ルール・エディタはルール・ディクショナリ・エディタに埋め込まれています。ルール・エディタの詳細は、第26.2項「Oracle Business Rulesエディタの宣言コンポーネントの使用」を参照してください。 |
ルール・ディクショナリ・エディタのタスク・フローでは、ルール・ディクショナリ・エディタ・コンポーネントを使用してアプリケーションを作成します。通常は、ルール・ディクショナリ・エディタ・コンポーネントまたはルール・ディクショナリ・エディタのタスク・フローのいずれかを使用します(両方は使用しません)。ルール・ディクショナリ・エディタのタスク・フローの詳細は、第26.4項「Oracle Business Rulesディクショナリ・エディタのタスク・フローの使用」を参照してください。
ルール・ディクショナリ・エディタ・コンポーネントは、次の機能を実行します。
グローバル・エディタを使用して、final
属性がtrue
に設定されているグローバルまたは変数を編集します(図26-29を参照)。
グローバル・エディタで、名前、説明、値を作成、削除、編集し、バケットセットを変更し、タイプを変更し、グローバル・ファイナルを作成できます。グローバルの検証がサポートされています。
バケットセット・エディタを使用して、バケットセットを編集します(図26-30を参照)。
バケットセット・エディタでは、バケットセットおよびバケットセット内のバケットのCRUD(作成、読取り、更新および削除)操作を実行できます。バケットセットの検証もサポートされています。
ルールセットを編集します(図26-31を参照)。
ルール・ディクショナリ・エディタで編集できるのは、選択したルールセット内のルールのみです。ルールセットを作成または削除することはできません。
この項では、ルール・ディクショナリ・エディタ・コンポーネントを使用してサンプル・アプリケーションを作成および実行するための手順を示します。
ルール・ディクショナリ・エディタ・コンポーネントを使用してADFベースのWebアプリケーションを作成するための前提条件は、使用しているコンピュータでOracle SOA SuiteとOracle JDeveloperのインストールが実行されていることです。
ルール・ディクショナリ・エディタを使用してサンプル・アプリケーションを作成する手順は、次のとおりです。
最初のタスクはサンプル・アプリケーションの作成です。
次の手順に従います。
Oracle JDeveloperを開きます。
「ファイル」メニューから、「新規」→「汎用アプリケーション」の順に選択し、アプリケーションを作成します。
図26-32に示すように、「アプリケーション名」フィールドにアプリケーションの名前(useRuleDictDCApp
など)を入力し、「次へ」をクリックします。
図26-33に示すように、「プロジェクト名」フィールドにuseRuleDictDC
と入力し、「プロジェクト・テクノロジ」タブで「ADF Faces」が選択されていることを確認します。
「終了」をクリックしてプロジェクトを作成します。
Oracle JDeveloperの「アプリケーション・ナビゲータ」で「useRuleDictDC」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択して「プロジェクト・プロパティ」ダイアログ・ボックスを表示します。
「プロジェクト・プロパティ」ダイアログ・ボックスでは、次の手順に従います。
左側のパネルの「JSPタグ・ライブラリ」をクリックします。
「追加」をクリックし、図26-34に示すように、「タグ・ライブラリの選択」ダイアログ・ボックスの「拡張機能」リストから「ADF Faces Components」を選択し、「OK」をクリックします。
左側のパネルから「ライブラリとクラスパス」をクリックし、「ライブラリの追加」ボタンをクリックして「ライブラリの追加」ダイアログ・ボックスを表示します。
図26-35に示すように、「拡張機能」リストから「Oracle Rules」および「Oracle Rules Dictionary Component」をクリックし、「OK」をクリックします。
図26-35 Oracle RulesおよびOracle Rules Dictionary Componentの選択
これにより、Rules SDKおよびルール・ディクショナリ・エディタのタグ・ライブラリがプロジェクトに追加されます。
「OK」をクリックして「プロジェクト・プロパティ」ダイアログ・ボックスを閉じます。
Oracle JDeveloperの「ファイル」メニューから、「すべて保存」を選択してプロジェクトを保存します。
必要なすべてのタグ・ライブラリが追加されたことを確認する必要があります。
Oracle JDeveloperの「アプリケーション・ナビゲータ」で「useRuleDictDC」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択して「プロジェクト・プロパティ」ダイアログ・ボックスを表示します。
図26-36に示すように、左側のパネルの「JSPタグ・ライブラリ」をクリックし、すべてのタグ・ライブラリが追加されているかどうかを確認します。
RuleDictionaryModelオブジェクトを作成する手順は、次のとおりです。
ルール・ディクショナリ・エディタ・コンポーネントには、oracle.bpel.ruledictionarydc.model.impl.RuleDictionaryModel
オブジェクトが必要です。コンポーネントでは、このオブジェクトを使用して、ディクショナリからグローバル、バケットセットおよびルールセットの情報を読み取ります。したがって、次のタスクは、RuleDictionaryModel
オブジェクトを作成するSomeBean.java
という名前のマネージドBeanの作成です。
次の手順に従います。
Oracle JDeveloperを開きます。
「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。
「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「一般」の下にある「Java」を選択します。
「項目」で「Javaクラス」が選択されていることを確認し、「OK」をクリックして「Javaクラスの作成」ダイアログ・ボックスを表示します。
図26-37に示すように、Javaクラスの名前(SomeBean.java
など)を入力して「OK」をクリックし、プロジェクトにJavaクラスを作成します。
SomeBean.java
で、RuleDictionaryModel
オブジェクトを返すメソッドを指定します。ここにルール・ファイルの場所を指定する必要があります。SomeBean.java
ファイルの例を次に示します。
package useruledictdc; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; import java.util.ArrayList; import java.util.List; import oracle.bpel.ruledictionarydc.model.impl.RuleDictionaryModel; import oracle.rules.sdk2.dictionary.DictionaryFinder; import oracle.rules.sdk2.dictionary.RuleDictionary; import oracle.rules.sdk2.exception.SDKException; import oracle.rules.sdk2.exception.SDKWarning; public class SomeBean { private RuleDictionaryModel ruleDictModel; private static final String RULES_FILE1 = "C:\\scratch\\asuraj\\system\\rules\\OrderBookinRules.rules"; public SomeBean() { super(); } public RuleDictionaryModel getRuleDictModel() { if (ruleDictModel != null) return ruleDictModel; //cache ruleDictModel instead of re-creating it each time ruleDictModel = new RuleDictionaryModel(getRuleDictionary()); return ruleDictModel; } public RuleDictionary getRuleDictionary() { Reader reader = null; try { reader = new FileReader(new File(RULES_FILE1)); } catch (FileNotFoundException e) { //LOG.severe(e); System.err.println(e); } RuleDictionary dict = openRulesDict(reader, null); if (reader != null) { try { reader.close(); } catch (IOException ioe) { } } return dict; } private static RuleDictionary openRulesDict(Reader reader, DictionaryFinder finder) { RuleDictionary dict = null; try { dict = RuleDictionary.readDictionary(reader, finder); } catch (SDKException e) { System.err.println(e); } catch (FileNotFoundException e) { System.err.println(e); } catch (IOException e) { System.err.println(e); } catch (IllegalArgumentException e) { System.err.println(e); } finally { } return dict; } //refer to Rules SDK documentation for saving a dictionary also //because this code does not take care of saving linked dictionaries public static boolean saveDictionary(RuleDictionary dict, String ruleFileName) { if (dict == null || ruleFileName == null) return false; if (dict.isTransactionInProgress()) System.out.println("Transaction in progress, cannot save dictionary"); Writer writer = null; try { writer = new FileWriter(new File(ruleFileName)); dict.writeDictionary(writer); } catch (SDKException e) { System.err.println(e); return false; } catch (FileNotFoundException e) { System.err.println(e); return false; } catch (IOException e) { System.err.println(e); return false; } finally { if (writer != null) { try { writer.close(); } catch (IOException ioe) { return false; } } } return true; } public static void updateDictionary(RuleDictionary dict) { if (dict == null) return; List<SDKWarning> warnings = new ArrayList<SDKWarning>(); try { dict.update(warnings); for (SDKWarning warning : warnings) System.out.println("warnings: " + warning.getLocalizedMessage()); } catch (SDKException sdkEx) { sdkEx.printStackTrace(); } } //You can call this method from your "Save" button public void saveDictionary() { RuleDictionary dict = this.getRuleDictModel().getRuleDictionary(); if (dict != null) { if (dict.isModified()) updateDictionary(dict); if (!dict.isTransactionInProgress()) saveDictionary(dict, RULES_FILE1); } } //call validation method on the ruleDictModel to update Validation Panel public void validate() { if (this.ruleDictModel == null) return; this.ruleDictModel.validate(); } }
faces-config.xml
ファイルを概要モードで開き、「マネージドBean」の下の「+」ボタンをクリックして「マネージドBeanの作成」ダイアログ・ボックスを表示します。
図26-38に示すように、「Bean名」フィールドにsomeBean
と入力し、「スコープ」リストで「セッション」を選択して、SomeBean.java
を指し示します。
ADF/JSFフレームワークによって、ユーザー・インタフェースを表示するSomeBean.java
への複数のコールが実行されます。たとえば、someBean.ruleDictModel
は複数回コールされます。しがたって、RuleDictModel
オブジェクトは、コールの都度再作成せずに、一度に作成してキャッシュし、返すほうが効率的です。
ルール・ディクショナリ・エディタ・コンポーネント・タグの.jspxファイルを作成する手順は、次のとおりです。
次のタスクは、ルール・ディクショナリ・エディタ・コンポーネント・タグを挿入する.jspx
ファイルの作成です。
次の手順に従います。
Oracle JDeveloperを開きます。
「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。
「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「Web層」の下にある「JSF」を選択します。
「項目」で「JSFページ」を選択し、「OK」をクリックして「JSFページの作成」ダイアログ・ボックスを表示します。
図26-39に示すように、「JSFページの作成」ダイアログ・ボックスで、「ファイル名」にuseRuleDictDC.jspx
と入力します。
図26-40に示すように、Oracle JDeveloperの「コンポーネント・パレット」にRuleDictionaryDCが表示されます。
これは、サンプル・アプリケーションの作成時にRules Dictionary Componentを追加したためです。
RuleDictionaryDCを選択してruleDictionaryDC
タグを表示します。RuleDictionaryDC
タグは、.jspx
ファイルにドラッグ・アンド・ドロップできます。.jspx
ファイルには、次のように、RuleDictionaryDC
タグを手動で追加することもできます。
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:rddc="http://xmlns.oracle.com/bpel/rules/dictionaryEditor"> <jsp:directive.page contentType="text/html;charset=UTF-8"/> <f:view> <af:document id="d1" title="Sample Rule Dictionary App"> <af:form id="f1"> <af:panelStretchLayout id="psl1" inlineStyle="margin:15px;" partialTriggers="cb2 cb3"> <f:facet name="center"> <rddc:ruleDictionaryDC ruleDictModel="#{someBean.ruleDictModel}" dtColumnPageSize="6" id="rddc1" viewOnly="false" dateStyle="yyyy-MM-dd" timeStyle="HH-mm-ss" discloseRules="true" showValidationPanel="true"/> </f:facet> <f:facet name="top"> <af:panelGroupLayout id="pgl1" layout="horizontal"> <af:commandButton text="Save Dict" id="cb2" action="#{someBean.saveDictionary}"/> <af:spacer width="10" height="10" id="s1"/> <af:commandButton text="Validate" id="cb3" action="#{someBean.validate}"/> </af:panelGroupLayout> </f:facet> </af:panelStretchLayout> </af:form> </af:document> </f:view> </jsp:root>
oracle.rulesおよびoracle.soa.rules_dict_dc.webapp共有ライブラリを参照する手順は、次のとおりです。
.jspx
ファイルを作成した後は、weblogic-application.xml
ファイルからoracle.rules
およびoracle.soa.rules_editor_dc.webapp
共有ライブラリを参照する必要があります。
次の手順に従います。
Oracle JDeveloperで、「アプリケーション・リソース」→「ディスクリプタ」→「META-INF」の順に参照し、weblogic-application.xml
ファイルを開きます。
図26-41に示すように、次の行を追加してoracle.rules
共有ライブラリを参照します。
<library-ref> <library-name>oracle.rules</library-name> </library-ref>
Oracle JDeveloperで、次のようにします。
「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。
「新規ギャラリ」ダイアログ・ボックスで、「カテゴリ」パネルの「一般」にある「デプロイメント・ディスクリプタ」を選択します。
「項目」の下の「WebLogicデプロイメント・ディスクリプタ」を選択し、「OK」をクリックして、「WebLogicデプロイメント・ディスクリプタの作成」ダイアログ・ボックスを表示します。
リストから「weblogic.xml」を選択し、「終了」をクリックします。
図26-42に示すように、Oracle JDeveloperにおいて、weblogic.xmlの「概要」モードで、左側のパネルから「ライブラリ」を選択し、「ライブラリ名」としてoracle.soa.rules_dict_dc.webapp
と入力します。
「すべて保存」をクリックします。
oracle.rules
共有ライブラリを埋込みOracle WebLogic Serverにデプロイします。
WLSコンソール(http://host:port/console/login/LoginForm.jsp)を起動します。Oracle JDeveloperで埋込みWeblogic Serverが実行されていることを確認します。
「デプロイメント」を選択し、「インストール」をクリックして、「アプリケーション・インストール・アシスタント」ページを表示します。
図26-43に示すように、<JDEV_INSTALL>/jdeveloper/soa/modules/oracle.rules_11.1.1/rules.jarを選択し、「終了」をクリックします。
oracle.soa.rules_dict_dc.webapp
共有ライブラリをOracle WebLogic Serverにデプロイします。
WebLogic Consoleで、「デプロイメント」を選択し、「インストール」をクリックして、「アプリケーション・インストール・アシスタント」ページを表示します。
<JDEV_INSTALL>/jdeveloper/soa/modules/oracle.soa.rules_dict_dc.webapp_11.1.1/oracle.soa.rules_dict_dc.webapp.warを選択し、「次へ」をクリックします。
図26-44に示すように、「このデプロイメントをライブラリとしてインストールする」を選択し、「終了」をクリックします。
図26-44 oracle.soa.rules_editor_dc.webapp共有ライブラリのデプロイ
図26-45に示すように、oracle.soa.rules_dict_dc.webapp
がデプロイメントのリストに追加されます。
図26-45 デプロイメント・リストに追加されたoracle.soa.rules_dict_dc.webapp
ルール・ディクショナリ・エディタ・サンプル・アプリケーションを実行する手順は、次のとおりです。
最後のタスクは、サンプル・アプリケーションの実行です。
サンプル・アプリケーションを実行するには、Oracle JDeveloperで、useRuleDictDC.jspxファイルを右クリックして「実行」を選択します。図26-46に示すように、Webブラウザでサンプル・アプリケーションが開始します。
アプリケーションEARファイルをスタンドアロンOracle WebLogic Serverにデプロイする準備が整った場合は、次の手順を実行します。
Oracle WebLogic Server管理コンソール(http://
host
:
port
/console/login/LoginForm.jsp
)を起動し、oracle.rules
がデプロイメント・リストに表示されていることを確認します。
デプロイメント・リストにoracle.soa.rules_dict_dc.webapp
が表示されていることを確認します。
表示されていない場合は、「インストール」をクリックしてJDEV_INSTALL/jdeveloper/soa/modules/oracle.soa.rules_dict_dc.webapp_11.1.1/oracle.soa.rules_dict_dc.webapp.warファイルを選択します。
Oracle JDeveloperを開きます。
「アプリケーション・ナビゲータ」でプロジェクト名を右クリックし、「プロジェクト・プロパティ」を選択します。
左側のパネルから「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックします。
図26-47に示すように、「ライブラリの追加」ダイアログ・ボックスで、「Oracle Rules Dictionary Component」を選択して「OK」をクリックします。
この手順では、これらのライブラリを参照できますが、これらのライブラリがデフォルトでデプロイされることはありません。したがって、JARファイルはプロジェクトwarファイルには組み込まれていません。
デプロイする必要があるプロジェクト(EARファイルを作成する場所)で、次の手順を実行します。
次の行をweblogic-application.xml
に追加します。
<library-ref> <library-name>oracle.rules</library-name> </library-ref>
次の行をプロジェクトWARファイルのweblogic.xml
に追加します。
<library-ref> <library-name>oracle.soa.rules_dict_dc.webapp</library-name> </library-ref>
EARファイルをOracle WebLogic Serverにデプロイします。
この項では、ルール・ディクショナリ・エディタ・コンポーネントでサポートされている属性のリストを示します。
表26-3に、サポートされている属性のリストを示します。
表26-3 ルール・ディクショナリ・エディタのサポートされている属性
名前 | タイプ | 必須 | デフォルト値 | ELのサポート | 説明 |
---|---|---|---|---|---|
|
|
いいえ |
ロケールから取得 |
はい |
指定すると、その日付スタイルがすべての |
|
|
いいえ |
ロケールに基づく |
はい |
小数セパレータを指定します。これは数値書式に使用されます。指定した場合、この属性はロケールに基づく小数セパレータを上書きします。 |
|
いいえ |
はい |
リリース11.1.1.7で導入されましたが非推奨です。12Cで削除されます。 |
||
|
oracle.bpel.ruledict ionarydc.model.inter faces.DFEditorPrefer ences |
いいえ |
oracle.bpel .ruledictio narydc.mode l.impl.DFEd itorPrefere ncesImpl |
はい |
デシジョン関数エディタのプリファレンスを指定するために使用されます。コンシューマは、次のデフォルトの実装を拡張し、必要なプリファレンスのみをオーバーライドできます。 oracle.bpel.ruledict ionarydc.model.impl. DFEditorPreferencesI mpl |
|
oracle.bpel.decision funceditordc.listene r.DecisionFuncListen er |
いいえ |
はい |
リリース11.1.1.7で導入されましたが非推奨です。12Cで削除されます。 |
|
|
いいえ |
はい |
11.1.1.7で導入されましたが非推奨です。12Cで削除されます。 |
||
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
「デシジョン関数エディタ」ウィンドウの「入力」表における追加、編集および削除操作が無効になります。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
|
いいえ |
|
はい |
「デシジョン関数エディタ」ウィンドウの「出力」表における追加、編集および削除操作が無効になります。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
「デシジョン関数の追加」ボタンが表示されます。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
|
いいえ |
|
はい |
「デシジョン関数の削除」ボタンが表示されます。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
|
いいえ |
|
はい |
編集可能なルールセット名がデフォルトで表示されます。 |
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
デシジョン表に一度に表示する列数。この属性は、ルールがコラムの場合のみ機能します。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
|
いいえ |
|
はい |
デシジョン表に一度に表示する行数。行数が指定の高さを超える場合は、スクロール・バーが表示されます。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
|
いいえ |
ロケールに基づく |
はい |
グループ化セパレータを指定します。これは数値書式に使用されます。指定した場合、この属性はロケールに基づくグループ化セパレータを上書きします。 |
|
|
いいえ |
|
はい |
ローカライズに使用します。 |
|
oracle.bpel.rulessha reddc.model.interfac es.ResourceManagerIn terface |
いいえ |
はい |
翻訳UIのリソース・マネージャを指定するために使用されます。詳細は、第26.6項「翻訳の使用」を参照してください。 |
|
|
oracle.bpel. ruledictionarydc. model.interfaces.Rul eDictionaryInterface |
はい |
- |
ELのみ |
Rules SDKディクショナリ・オブジェクトを囲むラッパー。ルール・ディクショナリ・エディタ・コンポーネントJARファイル( |
|
oracle.bpel.ruledict ionarydc.model.inter faces.RulesEditorPre ferences |
いいえ |
oracle.bpel .ruledictio narydc.mode l.impl.Rule sEditorPref erencesImpl |
はい |
ルール・エディタのプリファレンスを指定するために使用されます。コンシューマは、次のデフォルトの実装を拡張し、必要なプリファレンスのみをオーバーライドできます。 oracle.bpel.ruledict ionarydc.model.impl. RulesEditorPreferenc esImpl |
|
|
いいえ |
|
はい |
ページに表示するルール数を指定します。 |
|
|
いいえ |
はい |
デフォルトで選択されるルールセット索引を指定するために使用されます。 |
|
|
|
いいえ |
- |
はい |
指定のタブ名(GLOBALS、BUCKETSETS、DESC_FUNCSまたはルールセットの名前)に切り替えます。 |
|
|
いいえ |
|
はい |
デシジョン表の「追加」および「削除」ボタンが表示されます。リリース11.1.1.7に対しては非推奨です。12cで削除されます。 |
|
|
いいえ |
|
はい |
「ルールセットの追加」および「ルールセットの削除」ボタンを表示します。リリース11.1.1.7で導入されましたが非推奨です。12Cで削除されます。 |
|
|
いいえ |
|
はい |
検証パネルがデフォルトで表示されます。 |
|
|
いいえ |
ロケールから取得 |
はい |
指定すると、その時間スタイルがすべての |
|
|
いいえ |
|
はい |
ローカライズに使用します。 |
|
|
いいえ |
|
はい |
|
|
|
いいえ |
|
はい |
検証パネルがデフォルトで縮小されているかどうかを指定するために使用されます。 |
|
|
いいえ |
ローカライズ済テキスト 「ビジネス・ルール検証 - ログ」 |
はい |
検証パネルのタイトルを指定するために使用されます。 |
この項では、Oracle Business Rulesディクショナリ・エディタのタスク・フローについて説明します。ルール・ディクショナリ・エディタのタスク・フローを使用してアプリケーションを作成および実行し、アプリケーションをデプロイする方法についても説明します。
Oracleルール・ディクショナリ・エディタのタスク・フローは、基本的にはルール・ディクショナリ・エディタの宣言コンポーネントを囲むラッパーです。このタスク・フローは、タスク・フローが必要なADFベースのWebアプリケーションで、宣言コンポーネントのかわりに使用されます。ルール・ディクショナリ・エディタ・コンポーネントの詳細は、第26.3項「Oracle Business Rulesディクショナリ・エディタの宣言コンポーネントの使用」を参照してください。
この項では、Oracleルール・ディクショナリ・エディタのタスク・フローを使用してサンプル・アプリケーションを作成および実行するための手順を示します。
Oracleルール・ディクショナリ・エディタのタスク・フローを使用してADFベースのWebアプリケーションを作成するための前提条件は、使用しているコンピュータでOracle SOA SuiteとOracle JDeveloperのインストールが実行されていることです。
Oracleルール・ディクショナリ・エディタのタスク・フローを使用してサンプル・アプリケーションを作成する手順は、次のとおりです。
最初のタスクはサンプル・アプリケーションの作成です。
次の手順に従います。
Oracle JDeveloperを開きます。
「ファイル」メニューから、「新規」→「汎用アプリケーション」の順に選択し、アプリケーションを作成します。
図26-48に示すように、「アプリケーション名」フィールドにアプリケーションの名前(useRuleDictTaskFlowApp
など)を入力し、「次へ」をクリックします。
図26-49に示すように、「プロジェクト名」フィールドにuseRuleDictTaskFlow
と入力し、「プロジェクト・テクノロジ」タブで「ADF Faces」が選択されていることを確認します。
「終了」をクリックしてプロジェクトを作成します。
Oracle JDeveloperの「アプリケーション・ナビゲータ」で「useRuleDictTaskFlow」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択して「プロジェクト・プロパティ」ダイアログ・ボックスを表示します。
「プロジェクト・プロパティ」ダイアログ・ボックスでは、次の手順に従います。
左側のパネルから「JSPタグ・ライブラリ」を選択します。
「追加」をクリックし、図26-50に示すように、「タグ・ライブラリの選択」ダイアログ・ボックスの「拡張機能」リストから「ADF Faces Components」を選択し、「OK」をクリックします。
左側のパネルから「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックして「ライブラリの追加」ダイアログ・ボックスを表示します。
図26-51に示すように、「ライブラリ」リストでOracle RulesおよびOracle Rules Dictionaryタスク・フローを選択し、「OK」をクリックします。これにより、Rules SDKおよびルール・ディクショナリ・タスク・フローのJARがプロジェクトに追加されます。
「OK」をクリックして「プロジェクト・プロパティ」ダイアログ・ボックスを閉じます。
Oracle JDeveloperの「ファイル」メニューから「すべて保存」をクリックし、プロジェクトを保存します。
soaComposerTemplates.jar
に定義されているoracle.integration.console.metadata.model.share.MetadataDetails
インタフェースを実装するJavaクラスを作成しますMetadataDetails
インタフェースの詳細は、I.1項「MetadataDetailsインタフェース」を参照してください。
次の手順に従います。
Oracle JDeveloperを開きます。
「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。
「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「一般」の下にある「Java」を選択します。「項目」で「Javaクラス」が選択されていることを確認し、「OK」をクリックして「Javaクラスの作成」ダイアログ・ボックスを表示します。
Javaクラスの名前(MyMetaDataDetails
など)を入力します。
図26-52に示すように、「オプション属性」の下の「実装」ボックスにMetadataDetails
インタフェースを追加し、「OK」をクリックして、プロジェクトにJavaクラスを作成します。
MyMetaDataDetails.java
ファイルのサンプル・コンテンツを次に示します。
package useruledicttaskflow;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;
import oracle.integration.console.metadata.model.share.MetadataDetails;
import oracle.integration.console.metadata.model.share.RelatedMetadataPath;
public class MyMetaDataDetails implements MetadataDetails {
public MyMetaDataDetails() {
super();
}
private static final String RULES_FILE1 =
"file:///<path of Rules file>
";
public String getDocument() {
URL url = null;
try {
url = new URL(RULES_FILE1);
return readFile(url);
} catch (IOException e) {
System.err.println(e);
}
return "";
}
public void setDocument(String string) {
URL url = null;
try {
url = new URL(RULES_FILE1);
} catch (MalformedURLException e) {
System.err.println(e);
return;
}
Writer writer = null;
try {
//os = new FileWriter(url.getPath());
writer =
new OutputStreamWriter(new FileOutputStream(url.getPath()),
"UTF-8");
} catch (FileNotFoundException e) {
System.err.println(e);
return;
} catch (IOException e) {
System.err.println(e);
return;
}
try {
writer.write(string);
} catch (IOException e) {
System.err.println(e);
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException ioe) {
System.err.println(ioe);
}
}
}
}
private String readFile(URL dictURL) {
InputStream is;
try {
is = dictURL.openStream();
} catch (IOException e) {
System.err.println(e);
return "";
}
BufferedReader reader;
try {
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
} catch (UnsupportedEncodingException e) {
System.err.println(e);
return "";
}
String line = null;
StringBuilder stringBuilder = new StringBuilder();
String ls = System.getProperty("line.separator");
try {
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
stringBuilder.append(ls);
}
} catch (IOException e) {
System.err.println(e);
return "";
} finally {
try {
reader.close();
} catch (IOException e) {
System.err.println(e);
}
}
return stringBuilder.toString();
}
public String getRelatedDocument(RelatedMetadataPath relatedMetadataPath) {
String currPath =
RULES_FILE1.substring(0, RULES_FILE1.indexOf("oracle/rules"));
String relatedDoc =
currPath + "oracle/rules/" + relatedMetadataPath.getValue();
URL url = null;
try {
url = new URL(relatedDoc);
return readFile(url);
} catch (IOException e) {
System.err.println(e);
}
return "";
}
}
oracle.integration.console.metadata.model.share.NLSPreferences
インタフェースを実装するMyNLSPreferences
と呼ばれるJavaクラスを作成します。このインタフェースはsoaComposerTemplates.jar
に定義されています。
NLSPreferencesインタフェースの詳細は、I.2項「NLSPreferencesインタフェース」を参照してください。
次のMyNLSPreferences.java
のサンプルでは、NLSPreferences
インタフェースを実装します。
package useruledicttaskflow; import java.util.Locale; import java.util.TimeZone; import oracle.integration.console.metadata.model.share.NLSPreferences; public class MyNLSPreferences implements NLSPreferences { private static final String DATE_STYLE = "yyyy-MM-dd"; private static final String TIME_STYLE = "HH-mm-ss"; public MyNLSPreferences() { super(); } public Locale getLocale() { return Locale.getDefault(); } public TimeZone getTimeZone() { return TimeZone.getTimeZone("America/Los_Angeles"); } public String getDateFormat() { return DATE_STYLE; } public String getTimeFormat() { return TIME_STYLE; } }
MetadataDetails
およびNLSPreferences
の実装を返すMyBean.java
というマネージドBeanを作成します。また、oracle.integration.console.metadata.model.share.MetadataDetailsMode
オブジェクトを返し、toggleMode()
、saveDictionary()
、saveNoValidateDictionary()
、validate()
などのイベント・ハンドラも提供します。
次に、MyBean.java
ファイルのサンプルを示します。
package useruledicttaskflow; import javax.el.ELContext; import javax.el.ExpressionFactory; import javax.el.MethodExpression; import javax.faces.context.FacesContext; import javax.faces.event.PhaseId; import oracle.adf.view.rich.component.rich.fragment.RichRegion; import oracle.integration.console.metadata.model.share.MetadataDetails; import oracle.integration.console.metadata.model.share.MetadataDetailsMode; import oracle.integration.console.metadata.model.share.NLSPreferences; public class MyBean { private MyMetaDataDetails details = null; private MetadataDetailsMode mode = MetadataDetailsMode.VIEW; private RichRegion regionComp; private NLSPreferences nlsPrefs; public MyBean() { super(); } public MetadataDetails getMetaDataDetails() { if (details != null) return details; details = new MyMetaDataDetails(); return details; } public MetadataDetailsMode getDetailsMode() { return mode; } public void toggleMode() { if (mode.equals(MetadataDetailsMode.EDIT)) mode = MetadataDetailsMode.VIEW; else mode = MetadataDetailsMode.EDIT; } public void saveDictionary() { if (regionComp == null) return; FacesContext fc = FacesContext.getCurrentInstance(); ExpressionFactory ef = fc.getApplication().getExpressionFactory(); ELContext elc = fc.getELContext(); MethodExpression me = ef.createMethodExpression(elc, "doMetadataUpdate", String.class, new Class[] { }); regionComp.queueActionEventInRegion(me, null, null, false, -1, -1, PhaseId.ANY_PHASE); } public void saveNoValidateDictionary() { if (regionComp == null) return; FacesContext fc = FacesContext.getCurrentInstance(); ExpressionFactory ef = fc.getApplication().getExpressionFactory(); ELContext elc = fc.getELContext(); MethodExpression me = ef.createMethodExpression(elc, "doNoValidateMetadataUpdate", String.class, new Class[] { }); regionComp.queueActionEventInRegion(me, null, null, false, -1, -1, PhaseId.ANY_PHASE); } public void validate() { if (regionComp == null) return; FacesContext fc = FacesContext.getCurrentInstance(); ExpressionFactory ef = fc.getApplication().getExpressionFactory(); ELContext elc = fc.getELContext(); MethodExpression me = ef.createMethodExpression(elc, "doValidate", String.class, new Class[] { }); regionComp.queueActionEventInRegion(me, null, null, false, -1, -1, PhaseId.ANY_PHASE); } public void setRegionComp(RichRegion regionComp) { this.regionComp = regionComp; } public RichRegion getRegionComp() { return regionComp; } public NLSPreferences getNlsPrefs() { if (nlsPrefs != null) return nlsPrefs; nlsPrefs = new MyNLSPreferences(); return nlsPrefs; } }
faces-config.xml
ファイルを概要モードで開き、「マネージドBean」の下の「+」ボタンをクリックして「マネージドBeanの作成」ダイアログ・ボックスを表示します。
図26-53に示すように、「Bean名」フィールドにMyBean
と入力し、「スコープ」リストでsession
を選択して、MyBean.java
を指し示します。
ルール・ディクショナリ・エディタのタスク・フローを.jspxファイルに追加する手順は、次のとおりです。
次のタスクは、ルール・ディクショナリ・エディタ・コンポーネント・タグを挿入する.jspx
ファイルの作成です。
次の手順に従います。
Oracle JDeveloperを開きます。
「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。
「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「Web層」の下にある「JSF」を選択します。
図26-54に示すように、「項目」で「JSFページ」を選択し、「OK」をクリックして「JSFページの作成」ダイアログ・ボックスを表示します。
図26-54 ルール・ディクショナリ・エディタのタスク・フローを挿入するJSFページ・ファイルの作成
図26-55に示すように、「JSFページの作成」ダイアログ・ボックスで、「ファイル名」にuseRuleDictTaskFlow.jspx
と入力します。
図26-56に示すように、Oracle JDeveloperの「コンポーネント・パレット」にadflibRuleDictionaryTaskFlow.jarが表示されます。
これは、サンプル・アプリケーションの作成時にOracle Rules Dictionaryタスク・フローの共有ライブラリを追加したためです。
adflibRuleDictionaryTaskFlow.jarを選択して、「コンポーネント・パレット」の「リージョン」でrule-dict-flow-definitionが使用可能になるようにします。図26-57に示すように、rule-dict-flow-definitionリージョンを.jspxファイルにドラッグ・アンド・ドロップすると、必要なすべてのパラメータを指定できます。
次に、タスク・フローが追加されたuseRuleDictTaskFlow.jspx
ファイルのサンプルを示します。
<f:view> <af:document id="d1"> <af:form id="f1"> <af:panelStretchLayout id="psl1" inlineStyle="margin:8px;"> <f:facet name="top"> <af:menuBar id="mb1"> <af:commandMenuItem text="Toggle Mode" id="cmi1" action="#{MyBean.toggleMode}" partialSubmit="true"/> <af:commandMenuItem text="Save Dict" id="cmi2" action="#{MyBean.saveDictionary}" partialSubmit="true"/> <af:commandMenuItem text="Save Dict No Validate" id="cmi3" action="#{MyBean.saveNoValidateDictionary}" partialSubmit="true"/> <af:commandMenuItem text="Validate" id="cmi4" action="#{MyBean.validate}" partialSubmit="true"/> </af:menuBar> </f:facet> <f:facet name="center"> <af:region value="#{bindings.rulesdictflowdefinition1.regionModel}" id="r2" binding="#{MyBean.regionComp}" partialTriggers="::cmi1 ::cmi2 ::cmi3 ::cmi4"/> </f:facet> </af:panelStretchLayout> </af:form> </af:document> </f:view>
前述のサンプルでは、次のボタンをページに表示するためのコード・スニペットがあります。
トグル・モード: Oracle SOAコンポーザの読取り専用モードと編集可能モードを切り替えます。
ディクショナリの保存: ディクショナリを(検証付きで、または検証なしで)保存します。
pagedef.xmlファイルを編集する手順は、次のとおりです。
タスク・フローを.jspx
ファイルに追加した後、useRuleDictTaskFlowPageDef.xml
ファイルを編集する必要があります。pagedef.xml
ファイルは、ルール・ディクショナリ・タスク・フローを.jspx
ページにドロップすると作成されます。
次に、pagedef.xml
ファイルのサンプルと、ルール・ディクショナリ・タスク・フローに渡す必要があるすべてのパラメータを示します。
<?xml version="1.0" encoding="UTF-8" ?> <pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel" version="11.1.1.55.99" id="useRuleDictTaskFlowPageDef" Package="useruledicttaskflow.pageDefs"> <parameters/> <executables> <variableIterator id="variables"/> <taskFlow id="rulesdictflowdefinition1" taskFlowId= "/WEB-INF/rule-dict-flow-definition.xml#rules-dict-flow-definition" activation="deferred" xmlns="http://xmlns.oracle.com/adf/controller/binding"> <parameters> <parameter id="details" value="#{MyBean.metaDataDetails}" xmlns="http://xmlns.oracle.com/adfm/uimodel"/> <parameter id="mode" value="#{MyBean.detailsMode}" xmlns="http://xmlns.oracle.com/adfm/uimodel"/> <parameter id="dtHeight" value="10" xmlns="http://xmlns.oracle.com/adfm/uimodel"/> <parameter id="selectedTab" value="Ruleset_1" xmlns="http://xmlns.oracle.com/adfm/uimodel"/> <parameter id="dtColumnPageSize" value="6" xmlns="http://xmlns.oracle.com/adfm/uimodel"/> <parameter id="nlsPrefs" value="#{MyBean.nlsPrefs}" xmlns="http://xmlns.oracle.com/adfm/uimodel"/> <parameter id="discloseRules" value="true" xmlns="http://xmlns.oracle.com/adfm/uimodel"/> </parameters> </taskFlow> </executables> <bindings/> </pageDefinition
oracle.rulesおよびoracle.soa.rules_dict_dc.webapp共有ライブラリを参照する手順は、次のとおりです。
次のタスクは、weblogic-application.xml
ファイルからoracle.rules
およびoracle.soa.rules_dict_dc.webapp
共有ライブラリを参照することです。
共有ライブラリの参照方法は、第26.3.2項「ルール・ディクショナリ・エディタ・コンポーネントを使用したサンプル・アプリケーションの作成および実行方法」を参照してください。
タスク・フロー・サンプル・アプリケーションを実行する手順は、次のとおりです。
最後のタスクは、埋込みOracle WebLogic Serverでのサンプル・アプリケーションの実行です。
サンプル・アプリケーションを実行するには、Oracle JDeveloperで、useRulesDictTaskFlow.jspxファイルを右クリックします。
「実行」を選択します。
図26-58に示すように、Webブラウザでサンプル・アプリケーションが開始します。
図26-58 ルール・ディクショナリ・エディタのタスク・フロー・サンプル・アプリケーションの実行
アプリケーションEARファイルをスタンドアロンOracle WebLogic Serverにデプロイする準備が整った場合は、次の手順を実行します。
Oracle WebLogic Server管理コンソール(http://
host
:
port
/console/login/LoginForm.jsp
)を起動します。
デプロイメント・リストにoracle.rules
が表示されていることを確認します。
デプロイメント・リストにoracle.soa.rules_dict_dc.webapp
が表示されていることを確認します。
表示されていない場合は、「インストール」をクリックしてJDEV_INSTALL/jdeveloper/soa/modules/oracle.soa.rules_dict_dc.webapp_11.1.1/oracle.soa.rules_dict_dc.webapp.warファイルを選択します。
デプロイする必要があるプロジェクト(EARファイルを作成する場所)で、次の手順を実行します。
次の行をweblogic-application.xml
に追加します。
<library-ref> <library-name>oracle.rules</library-name> </library-ref>
次の行をプロジェクトWARファイルのweblogic.xml
に追加します。
<library-ref> <library-name>oracle.soa.rules_dict_dc.webapp</library-name> </library-ref>
EARファイルをOracle WebLogic Serverにデプロイします。
ルール・エディタ・コンポーネント、ルール・ディクショナリ・エディタ・コンポーネントまたはルール・ディクショナリ・エディタのタスク・フローを使用して作成されたアプリケーションは、ローカライズできます。
次の手順に従います。
ルール・エディタ・コンポーネントを使用するプロジェクトのfaces-config.xml
を変更します。faces-config.xml
ファイルには、使用可能なリソース・バンドルをサポートするために、次のコードを<application>
タグ内に指定する必要があります。
<locale-config> <default-locale>en</default-locale> <supported-locale>en</supported-locale> <supported-locale>ar</supported-locale> <supported-locale>cs</supported-locale> <supported-locale>da</supported-locale> <supported-locale>de</supported-locale> <supported-locale>el</supported-locale> <supported-locale>es</supported-locale> <supported-locale>fi</supported-locale> <supported-locale>fr</supported-locale> <supported-locale>hu</supported-locale> <supported-locale>it</supported-locale> <supported-locale>iw</supported-locale> <supported-locale>ja</supported-locale> <supported-locale>ko</supported-locale> <supported-locale>nl</supported-locale> <supported-locale>no</supported-locale> <supported-locale>pl</supported-locale> <supported-locale>pt-BR</supported-locale> <supported-locale>pt</supported-locale> <supported-locale>ro</supported-locale> <supported-locale>ru</supported-locale> <supported-locale>sk</supported-locale> <supported-locale>sv</supported-locale> <supported-locale>th</supported-locale> <supported-locale>tr</supported-locale> <supported-locale>zh-CN</supported-locale> <supported-locale>zh-TW</supported-locale> </locale-config>
ブラウザ言語をロケールに合わせて変更します。
ブラウザで提供されるロケールを上書きし、特定のロケールでユーザー・インタフェースを表示できます。このためには、ロケールを属性としてコンポーネントに渡し、そのコンポーネントを使用しているアプリケーションのf:view
タグを変更します。
<f:view locale="#{someBean.locale}">
ここで指定するロケールは、locale
属性を使用してコンポーネントに渡した内容と同じである必要があります。
この機能は、ビジネス・ルールWeb UIの別名の翻訳をサポートしています。ロケールに従った別名を設定できます。ビジネス・ルールWeb UIで「変換」タブまたはリソース・エディタ・ポップアップを介して様々なロケール向けに別名の翻訳を編集することもできます。
別名の翻訳をサポートするために、再利用可能なルールUI ADFタスク・フロー・コンポーネントのコンシューマは、ルールUI ADFタスク・フローをコールする際に、追加のパラメータとしてロケール固有のリソース・アーティファクトを提供することが必要になります。ただし、これらの追加のパラメータはオプションであり、コンシューマが拡張翻訳サポートを使用する場合にのみ必要です。
追加パラメータは次のとおりです。
property-name: relatedDetails property-class: oracle.integration.console.metadata.model.share.IRelatedMetadataDetails
例26-1 ルールWeb UI ADFタスク・フローにrelatedDetailsパラメータを渡すサンプル・コード
<taskFlow id="rulesdictflowdefinition1" taskFlowId="/WEB-INF/rule-dict-flow-definition.xml#rules-dict-flow-definition" activation="deferred" Refresh="default" RefreshCondition="${MyBean.refreshReqd}" xmlns="http://xmlns.oracle.com/adf/controller/binding"> <parameter id="relatedDetails" value="#{MyBean.relatedMetadataDetails}"/> </taskflow>
コンシューマは、oracle.integration.console.metadata.model.share.IRelatedMetadataDetailsの実装を渡す必要があります。
IRelatedMetadataDetails
の実装には、リポジトリからリソース・バンドルをロードするためのコードおよびユーザーがルール・アプリケーションに対する変更をコミットするときにバンドル・ファイルを保存するためのコードが含まれます。
例26-2 oracle.integration.console.metadata.model.share.IRelatedMetadataDetailsの実装を渡すサンプル・コード
public class MyRelatedMetadataDetails implements IRelatedMetadataDetails { private static final Locale[] LOCALES = { Locale.US, Locale.FRENCH }; private static final String RESOURCE_PATH = "file:///C:/scratch/sumit/system/rules/"; private static final String RESOURCE_BASE = "SimpleRule"; public MyRelatedMetadataDetails() { super(); } public String getDocument(IRelatedMetadataPath relatedPath) { String resourceSuffix = relatedPath.getValue(); try { return loadResource(resourceSuffix); } catch (IOException e) { return ""; } } private static String loadResource(String resourceSuffix) throws IOException { FileInputStream fis = null; FileChannel fc = null; try { URL url = new URL(RESOURCE_PATH + RESOURCE_BASE + resourceSuffix); fis = new FileInputStream(url.getFile()); fc = fis.getChannel(); ByteBuffer bb = ByteBuffer.allocate((int)fc.size()); fc.read(bb); bb.rewind(); return Charset.defaultCharset().decode(bb).toString(); } finally { if (fis != null) { fis.close(); } if (fc != null) { fc.close(); } } } public void createDocument(IRelatedMetadataPath relatedPath, String document) { try { storeResource(relatedPath.getValue(), document); } catch (IOException e) { e.printStackTrace(); } } public void saveDocument(IRelatedMetadataPath path, String document) { try { storeResource(path.getValue(), document); } catch (IOException e) { e.printStackTrace(); } } private static void storeResource(String resourceSuffix, String document) throws IOException { FileOutputStream fos = null; FileChannel fc = null; try { URL url = new URL(RESOURCE_PATH + RESOURCE_BASE + resourceSuffix); fos = new FileOutputStream(url.getFile()); fc = fos.getChannel(); ByteBuffer bb = ByteBuffer.allocateDirect(1024); bb.clear(); bb.put(Charset.defaultCharset().encode(document)); bb.flip(); while (bb.hasRemaining()) { fc.write(bb); } } finally { if (fos != null) { fos.close(); } if (fc != null) { fc.close(); } } } public IRelatedMetadataPathFinderFactory getFinderFactory() { return new RelatedMetadataPathFinderFactory(); } public List<IRelatedMetadataPath> getExisting(IRelatedMetadataPathFinder finder) { List<IRelatedMetadataPath> paths = new ArrayList<IRelatedMetadataPath>(); for (Locale locale : LOCALES) { paths.add(RelatedResourceMetadataPath.buildFromLocale(locale)); } return paths; } public class RelatedMetadataPathFinderFactory implements IRelated`MetadataPathFinderFactory { public IRelatedMetadataPathFinder getResourceFinder() { return new RelatedMetadataPathFinder(); } } public class RelatedMetadataPathFinder implements IRelatedMetadataPathFinder { public String getType() { return null; } public IRelatedMetadataPath matches(oracle.integration.console.metadata.model.share.MetadataPath srcPath, oracle.integration.console.metadata.model.share.MetadataPath matchPath) { return null; } } }
コンシューマは、dictionaryName + "Translations_" + locale.toString() + ".xml"
規則を使用して、リソース・バンドル・ファイルの名前を構築する必要があります。
別名の翻訳をサポートするために、ルールWeb UIアプリケーションのコンシューマは、ルール・ディクショナリDCまたはルールDCに属性を渡す必要があります。この属性は、タイプoracle.bpel.rulesshareddc.model.interface.ResourceManagerInterface.javaのインスタンスを受け入れるresourceManager
です。ただし、これらの追加のパラメータはオプションであり、コンシューマが拡張翻訳サポートを使用する場合にのみ必要です。
例26-3 ルール・ディクショナリDCにresourceManager属性を渡すサンプル・コード
<rddc:ruleDictionaryDC ruleDictModel="#{SomeBean.ruleDictModel1}" id="rddc1" resourceManager="#{SomeBean.resourceManager}"> </rddc:ruleDictionaryDC>
ResourceManagerInterface
の実装は、oracle.bpel.rulesshareddc.model.impl.ResourceManagerとして提供されています。コンシューマは、ResourceManagerのインスタンスを作成し、それを対応するUIコンポーネントに渡すことができます。
例26-4 resourceManagerのインスタンスを作成し、それをUIコンポーネントに渡すサンプル・コード
public ResourceManagerInterface getResourceManager() { if (resourceManager == null) { resourceManager = new ResourceManager(loadResources(), ruleDictionary); } return resourceManager; } private Map<Locale, String> loadResources() { Map<Locale, String> resourceMap = new HashMap<Locale, String>(); for (Locale locale : LOCALES) { try { URL url = new URL(RULES_FILE_PATH + "Translations_" + locale.toString() + ".xml"); String content = new Scanner(new File(url.getFile()), "UTF-8").useDelimiter("\\A").next(); resourceMap.put(locale, content); } catch (IOException e) { resourceMap.put(locale, ""); LOG.severe("Failed to load resource:" + e.getMessage()); } } if (!resourceMap.keySet().contains(getLocale())) { resourceMap.put(getLocale(), ""); } return resourceMap; } private void storeResources(Map<Locale, String> resourceMap) { for (Locale locale : resourceMap.keySet()) { try { URL url = new URL(RULES_FILE_PATH + "Translations_" + locale.toString() + ".xml"); BufferedWriter out = new BufferedWriter(new FileWriter(url.getFile())); out.write(resourceMap.get(locale)); out.close(); } catch (IOException e) { LOG.severe("Failed to store resource:" + e.getMessage()); } } }
注意: コンシューマは、保存されているリソース・バンドルすべてをリポジトリからロードする必要があり、java.util.Map (resourceMap)を構築する必要があります。その場合、リソース・バンドルのjava.util.Localeは、キーととして保持され、リソース・バンドル・ファイルの内容はjava.lang.Stringタイプの値として保持されます。 |
コンシューマは、dictionaryName + "Translations_" + locale.toString() + ".xml"
規則を使用して、リソース・バンドル・ファイルの名前を構築する必要があります。
コンシューマは、アプリケーション内でユーザーが変更をコミットするたびに、これらのリソース・バンドルをリポジトリに保存する必要があります。