ヘッダーをスキップ
Oracle Fusion Middleware Oracle SOA Suite開発者ガイド
11g リリース1(11.1.1)
B56238-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

26 宣言コンポーネントおよびタスク・フローの使用

この章では、Oracle Business Rulesの様々な宣言コンポーネントおよびタスク・フローを使用して、高性能で保守しやすい対話型の多層アプリケーションを開発する方法について説明します。

項目は次のとおりです。

26.1 宣言コンポーネントおよびタスク・フローの概要

宣言コンポーネントは再利用可能なコンポジット・ユーザー・インタフェース(UI)コンポーネントで、他の既存のApplication Development Framework(ADF)Facesコンポーネントで構成されています。ここでは、複数のJSFページが含まれているアプリケーションを考えてみます。特定ページの複数の部分では、一連の固有のコンポーネントが使用されます。このシナリオで、一連のコンポーネントのいずれかに変更を加えた場合、通常は、該当するページの複数の部分にその変更を複製する必要があります。このアプローチでは、ページの構造とレイアウトの一貫性を維持することが困難です。一方、一連の指定コンポーネントで構成した宣言コンポーネントを定義すると、そのコンポジット宣言コンポーネントを複数の場所またはページで再利用できます。このため、宣言コンポーネントによって、時間の節約とページ間の一貫性が確保されます。これは、コンポーネントに変更を加えると、そのコンポーネントを使用しているJSFページが自動的に更新されるためです。

ADFタスク・フローは、アプリケーションに制御フローを指定する際、モジュラおよびトランザクション・メソッドを提供する再利用可能なコンポーネントです。再利用可能な一連のタスク・フローは、アプリケーションを単一の大きなJSFページ・フローとして表現する代替手段として使用でき、これによって、モジュール性が提供されます。各タスク・フローには、アプリケーションの全体的なナビゲーション計画の一部が含まれています。タスク・フローのノードはアクティビティと呼ばれます。ナビゲーションとは別に、タスク・フロー・アクティビティは、マネージドBeanでメソッドをコールしたり、特定のページを起動せずに別のタスク・フローをコールすることもできます。このため、表示されているページとは独立してビジネス・ロジックを起動できるため、再利用が容易になります。

26.2 Oracle Business Rulesエディタの宣言コンポーネントの使用

この項では、Oracle Business Rulesエディタの宣言コンポーネントについて説明します。ルール・エディタ・コンポーネントを使用してアプリケーションを作成および実行し、アプリケーションをデプロイする方法についても説明します。また、この項では、サポートされているタグや、アプリケーションのローカライズ・プロセスのリストも示します。

26.2.1 Oracle Business Rulesエディタ・コンポーネントの概要

Oracle Business Rulesエディタは、ADFベースのWebアプリケーションに埋め込むことができる宣言コンポーネントです。このコンポーネントによって、ルール編集のユーザー・インタフェースが表示され、ルール編集に関連付けられているすべてのイベントが処理されます。ルール・エディタでは、ルールの作成と編集にRules SDK2 APIが使用されます。


注意:

ルール・エディタをルール・ディクショナリ・エディタと混同しないでください。ルール・エディタは、指定したルールセット内のルールを編集するために使用されます。実際には、ルール・エディタはルール・ディクショナリ・エディタに埋め込まれています。ルール・ディクショナリ・エディタの詳細は、第26.3項「Oracle Business Rulesディクショナリ・エディタの宣言コンポーネントの使用」を参照してください。

ルール・エディタを使用すると、単一のルールセットの一部であるルールとデシジョン表を編集できます。RuleSetModelオブジェクトを指定する必要があります。このオブジェクトは、ルール・エディタ・コンポーネントへのパラメータとして、Rules SDKルールセット・オブジェクトを囲むラッパーです。複数のルールセットを変更する必要がある場合は、複数のルール・エディタ・コンポーネントを(ルールセットごとに1つ)インスタンス化する必要があります。

ルール・エディタ・コンポーネントは、次の機能を実行します。


注意:

コンポーネント・ユーザーは、すべての編集が完了した後、ルールセットを保存する必要があります。

26.2.2 ルール・エディタ・コンポーネントを使用したサンプル・アプリケーションの作成および実行方法

この項では、ルール・エディタ・コンポーネントを使用してサンプル・アプリケーションを作成および実行するための手順を示します。

ルール・エディタ・コンポーネントを使用してADFベースのWebアプリケーションを作成するための前提条件は、使用しているコンピュータでSOA SuiteとOracle JDeveloperのインストールが実行されていることです。

ルール・エディタを使用してサンプル・アプリケーションを作成する手順は、次のとおりです。

最初のタスクはサンプル・アプリケーションの作成です。

次の手順に従います。

  1. Oracle JDeveloperを開きます。

  2. 「ファイル」メニューから、「新規」「汎用アプリケーション」の順に選択し、アプリケーションを作成します。

  3. 図26-13に示すように、「アプリケーション名」フィールドにアプリケーションの名前(useRulesDCAppなど)を入力し、「次へ」をクリックします。

    図26-13 汎用アプリケーションの作成

    汎用アプリケーション
    「図26-13 汎用アプリケーションの作成」の説明

  4. 図26-14に示すように、「プロジェクト名」フィールドにuseRulesDCと入力し、「プロジェクト・テクノロジ」タブで「ADF Faces」が選択されていることを確認します。

    「終了」をクリックしてプロジェクトを作成します。

    図26-14 プロジェクトの作成

    プロジェクトの作成
    「図26-14 プロジェクトの作成」の作成

  5. Oracle JDeveloperの「アプリケーション・ナビゲータ」で「useRulesDC」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択して「プロジェクト・プロパティ」ダイアログ・ボックスを表示します。

    「プロジェクト・プロパティ」ダイアログ・ボックスでは、次の手順に従います。

    1. 左側のパネルから「JSPタグ・ライブラリ」を選択します。

    2. 「追加」をクリックし、図26-15に示すように、「タグ・ライブラリの選択」ダイアログの拡張機能リストから「ADF Faces Components」を選択し、「OK」をクリックします。

      図26-15 タブ・ライブラリの選択

      タグ・ライブラリの選択
      「図26-15 タブ・ライブラリの選択」の説明

    3. 「追加」をクリックして「ユーザー」を選択し、「タグ・ライブラリの選択」ダイアログ・ボックスで「新規」をクリックします。

    4. 図26-16に示すように、JDEV_INSTALL/jdeveloper/soa/modules/oracle.soa.rules_editor_dc.webapp_11.1.1を参照し、一度に1つのjarファイルを選択して、「開く」をクリックします。選択したタグ・ライブラリがユーザー・リストに追加されます。

      図26-16 ユーザー・リストへのタグ・ライブラリの追加

      ユーザー・リストへのタグ・ライブラリの追加
      「図26-16 ユーザー・リストへのタグ・ライブラリの追加」の説明

      このディレクトリに5つのjarファイル(adflibRulesDC.jar、adflibExpBuilderDC.jar、adflibBucketsetEditorDC.jar、adflibRuleValidationTableDC.jarおよびadflibValidationTableDC.jar)があることを確認します。

      すべてのjar(タグ・ライブラリ)がユーザー・リストに追加されるまで、このプロセスを繰り返します。

    5. 図26-17に示すように、「タグ・ライブラリの選択」ダイアログ・ボックスで、ユーザー・リストのすべてのjarを選択して「OK」をクリックします。

      図26-17 ユーザー・リストに追加されたタグ・ライブラリの選択

      ユーザー・リストに追加されたタグ・ライブラリの選択
      「図26-17 ユーザー・リストに追加されたタグ・ライブラリの選択」の説明

      図26-18に示すように、5つのタグ・ライブラリ(bucketsetEditorexpBuilderrulesEditorruleValidationTableおよびvalidationTable)がプロジェクトに追加されます。

      図26-18 プロジェクトに追加されたタグ・ライブラリ

      プロジェクトに追加されたタグ・ライブラリ
      「図26-18 プロジェクトに追加されたタグ・ライブラリ」の説明

    6. 左側のパネルから「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックして「ライブラリの追加」ダイアログ・ボックスを表示します。

      図26-19に示すように、「ライブラリ」リストで「Oracle Rules」を選択し、「OK」をクリックします。Rules SDKがプロジェクトに追加されます。

      図26-19 プロジェクトへのRules SDKの追加

      プロジェクトへのRules SDKの追加
      「図26-19 プロジェクトへのRules SDKの追加」

    7. 「OK」をクリックして「プロジェクト・プロパティ」ダイアログ・ボックスを閉じます。

  6. Oracle JDeveloperの「ファイル」メニューから、「すべて保存」を選択してプロジェクトを保存します。

RuleSetModelオブジェクトを作成する手順は、次のとおりです。

ルール・エディタ・コンポーネントには、oracle.bpel.rulesdc.model.impl.RuleSetModelオブジェクトが必要です。コンポーネントでは、このオブジェクトを使用して、ルールセット内のルールやデシジョン表を読み取ります。したがって、次のタスクは、RuleSetModelオブジェクトを作成するSomeBean.javaと呼ばれるマネージドBeanの作成です。

次の手順に従います。

  1. Oracle JDeveloperを開きます。

  2. 「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。

  3. 「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「一般」の下にある「Java」を選択します。「項目」で「Javaクラス」が選択されていることを確認し、「OK」をクリックして「Javaクラスの作成」ダイアログ・ボックスを表示します。

  4. 図26-20に示すように、Javaクラスの名前(SomeBean.javaなど)を入力して「OK」をクリックし、プロジェクトにJavaクラスを作成します。

    図26-20 Javaクラスの作成

    Javaクラスの作成
    「図26-20 Javaクラスの作成」の説明

    次に、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 =
            "C:/scratch/asuraj/system/rules/OrderBooking.rules";
        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;
        }
        //please 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);
                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.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();
        }
    }
    
  5. faces-config.xmlファイルを概要モードで開き、「マネージドBean」の下の「+」ボタンをクリックして「マネージドBeanの作成」ダイアログ・ボックスを表示します。図26-21に示すように、「Bean名」にsomeBean、「スコープ」にsessionと入力し、SomeBean.javaを指し示します。

    図26-21 Bean名とスコープの指定

    Bean名とスコープの指定
    「図26-21 Bean名とスコープの指定」の説明

    ADF/JSFフレームワークによって、ユーザー・インタフェースを表示するSomeBean.javaへの複数のコールが実行されます。たとえば、someBean.ruleSetModelは複数回コールされます。しがたって、RuleSetModelオブジェクトは、コールの都度最作成せずに、1度に作成してキャッシュし、返すほうが効率的です。

ルール・エディタ・コンポーネントの.jspxファイルを作成する手順は、次のとおりです。

次のタスクは、ルール・エディタ・コンポーネント・タグに挿入する.jspxファイルの作成です。

次の手順に従います。

  1. Oracle JDeveloperを開きます。

  2. 「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。

  3. 「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「Web層」の下にある「JSF」を選択します。

  4. 「項目」で「JSFページ」を選択し、「OK」をクリックして「JSFページの作成」ダイアログ・ボックスを表示します。

  5. 図26-22に示すように、「JSFページの作成」ダイアログ・ボックスで、「ファイル名」にuseRulesDC.jspxと入力します。

    図26-22 JSFページ・ファイルの作成

    JSFページ・ファイルの作成
    「図26-22 JSFページ・ファイルの作成」の説明

    図26-23に示すように、Oracle JDeveloperの「コンポーネント・パレット」にRulesCompLibが表示されます。

    図26-23 「コンポーネント・パレット」のルール・エディタ・コンポーネント・ライブラリ

    「コンポーネント・パレット」のルール・エディタ・コンポーネント・ライブラリ
    「図26-23 「コンポーネント・パレット」のルール・エディタ・コンポーネント・ライブラリ」の説明

    これは、サンプル・アプリケーションの作成時にrulesDCタグ・ライブラリを追加してあるためです。

  6. 「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: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共有ライブラリを参照する手順は、次のとおりです。

.jspxファイルを作成した後は、weblogic-application.xmlファイルからoracle.rules共有ライブラリを参照する必要があります。

次の手順に従います。

  1. Oracle JDeveloperで、「アプリケーション・リソース」→「ディスクリプタ」→「META-INF」の順に参照し、weblogic-application.xmlファイルを開きます。

  2. 図26-24に示すように、次の行を追加してoracle.rules共有ライブラリを参照します。

    <library-ref>
    <library-name>oracle.rules</library-name>
    </library-ref>
    

    図26-24 oracle.rules共有ライブラリの参照

    oracle.rules共有ライブラリの参照
    「図26-24 oracle.rules共有ライブラリの参照」の説明

  3. oracle.rules共有ライブラリを埋込みWeblogic Serverにデプロイします。デプロイしないと、サンプル・アプリケーションの実行時にClassNotFoundExceptionが発生する可能性があります。oracle.rules共有ライブラリをWeblogic Serverにデプロイする手順は、次のとおりです。

    1. WLSコンソール(http://host:port/console/login/LoginForm.jsp)を起動します。Oracle JDeveloperで埋込みWeblogic Serverが実行されていることを確認します。

    2. 図26-25に示すように、「デプロイメント」を選択して「インストール」をクリックし、<JDEV_INSTALL>/jdeveloper/soa/modules/oracle.rules_11.1.1/rules.jarを選択して「終了」をクリックします。

      図26-25 Weblogic Serverへの共有ライブラリのデプロイ

      Weblogic Serverへの共有ライブラリのデプロイ
      「図26-25 Weblogic Serverへの共有ライブラリのデプロイ」の説明

ルール・エディタ・サンプル・アプリケーションを実行する手順は、次のとおりです。

最後のタスクは、サンプル・アプリケーションの実行です。

サンプル・アプリケーションを実行するには、Oracle JDeveloperで、useRulesDC.jspxファイルを右クリックして「実行」を選択します。図26-26に示すように、Webブラウザでサンプル・アプリケーションが開始します。

図26-26 サンプル・アプリケーションの実行

サンプル・アプリケーションの実行
「図26-26 サンプル・アプリケーションの実行」の説明

26.2.3 スタンドアロンWeblogic Serverへのルール・エディタ・アプリケーションのデプロイ方法

アプリケーションEARファイルをスタンドアロンWeblogic Serverにデプロイする準備が整った場合は、次の手順を実行します。

  1. WebLogic Serverコンソール(http://host:port/console/login/LoginForm.jsp)を起動し、oracle.rulesがデプロイメント・リストに表示されていることを確認します。

  2. デプロイメント・リストに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ファイルを選択します。

  3. Oracle JDeveloperを開きます。

  4. 「アプリケーション・ナビゲータ」でプロジェクト名を右クリックし、「プロジェクト・プロパティ」を選択します。

  5. 左側のパネルから「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックします。

  6. 図26-27に示すように、「ライブラリの追加」ダイアログ・ボックスで、「Oracle Rules Editor Component」を選択して「OK」をクリックします。

    図26-27 Oracle Rules Editor Componentの追加

    Oracle Rules Editor Componentの追加
    「図26-27 Oracle Rules Editor Componentの追加」の説明

    この手順では、これらのライブラリを参照できますが、これらのライブラリがデフォルトでデプロイされることはありません。したがって、jarはプロジェクトwarファイルには組み込まれていません。

  7. デプロイする必要があるプロジェクト(EARファイルを作成する場所)で、次の手順を実行します。

    1. 次の行をweblogic-application.xmlに追加します。

      <library-ref>
         <library-name>oracle.rules</library-name>
      </library-ref>
      
    2. 次の行をプロジェクトWARファイルのweblogic.xmlに追加します。

      <library-ref>
         <library-name>oracle.soa.rules_editor_dc.webapp</library-name>
      </library-ref>
      
    3. EARファイルをWeblogic Serverにデプロイします。

EARの作成方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Java EE開発者ガイド』のデプロイメントのためのEARファイルの作成方法に関する項を参照してください。

26.2.4 ルール・エディタ・コンポーネントのサポートされているタグに関する注意事項

この項では、ルール・エディタ・コンポーネントでサポートされているタグおよび属性のリストを示します。

表26-1に、サポートされているファセットのリストを示します。

表26-1 ルール・エディタ・コンポーネントのサポートされているファセット

名前 説明

patternDisplay

特定のユーザー・インタフェースを表示するために使用します。このファセットを使用して、ルールの条件とパターンを(拡張モードで)表示します。これは、ルールのIF部分に相当します。

actionDisplay

特定のユーザー・インタフェースを表示するために使用します。このファセットを使用して、ルール・アクションを表示します。これは、ルールのTHEN部分に相当します。


表26-2に、サポートされている属性のリストを示します。

表26-2 ルール・エディタ・コンポーネントのサポートされている属性

名前 タイプ 必須 デフォルト値 ELのサポート 説明

rulesetModel

oracle.bpel.rulesdc.model.RuleSetInterface

はい

-

ELのみ

Rules SDKルールセット・オブジェクトを囲むラッパー。ルール・エディタ・コンポーネントjarファイル(adflibRulesDC.jar)の一部として提供されるRuleSetModelオブジェクトを使用できます。

ruleModel

java.lang.String

いいえ

oracle.bpel.rulesdc.model.RuleModel

はい

デフォルトのRuleModelのカスタマイズに使用します。RuleModelクラスを拡張して、特定のメソッドを上書きできます。

viewOnly

java.lang.Boolean

いいえ

true

はい

trueの場合は、表示専用モードで、ルールセット内の既存のルールを表示できます。falseの場合は、編集モードで、ルールを新規に追加したり、既存のルールを編集できます。

genericPattern

java.lang.Boolean

いいえ

true

はい

trueの場合、ルール・エディタ・コンポーネントには、条件とパターンのIF部分を(拡張モードで)表示するためのユーザー・インタフェースが表示されます。falseの場合、patternDisplayファセットはルール・エディタ・コンポーネントに渡す必要があります。ファセットにはユーザー定義のユーザー・インタフェースを含める必要があります。ファセットには、RuleModelおよびSimpleTestModelへのアクセス権があります。

genericAction

java.lang.Boolean

いいえ

true

はい

trueの場合、ルール・エディタ・コンポーネントには、THEN部分(アクション)を表示するためのユーザー・インタフェースが表示されます。falseの場合、actionDisplayファセットはルール・エディタ・コンポーネントに渡す必要があります。ファセットにはユーザー定義のユーザー・インタフェースを含める必要があります。ファセットには、ActionModelへのアクセス権があります。

locale

java.util.Locale

いいえ

Locale.getDefault()

はい

ローカライズに使用します。

timezone

java.util.TimeZone

いいえ

TimeZone.getDefault()

はい

ローカライズに使用します。

displayRuleSetEffDate

java.lang.Boolean

いいえ

true

はい

trueの場合、ルール・エディタ・コンポーネントには、ルールセットの有効日を表示するためのユーザー・インタフェースが表示されます。

discloseRules

java.lang.Boolean

いいえ

false

はい

trueの場合は、ルールセット内のすべてのルールが展開されます。falseの場合は、すべてのルールが縮小されます。

dateStyle

java.lang.String

いいえ

ロケールから取得

はい

指定すると、その日付スタイルがすべてのinputDateコンポーネントで使用されます(例: yyyy.MM.dd)。

timeStyle

java.lang.String

いいえ

ロケールから取得

はい

指定すると、その時刻スタイルがすべてのinputDateコンポーネントで使用されます(例: HH:mm:ss)。

dtColumnPageSize

java.lang.Integer

いいえ

5

はい

デシジョン表に一度に表示する列数。この属性は、ルールがコラムの場合のみ機能します。

dtHeight

java.lang.Integer

いいえ

16

はい

デシジョン表に一度に表示する行数。行数が指定の高さを超える場合は、スクロール・バーが表示されます。

displayRuleSetName

java.lang.Boolean

いいえ

true

はい

編集可能なルールセット名がデフォルトで表示されます。falseに設定することで、非表示にできます。

disableRuleSetName

java.lang.Boolean

いいえ

false

はい

trueの場合、ルールセット名は使用不可となり、編集できません。デフォルトでは、値はfalseです。

showValidationPanel

java.lang.Boolean

いいえ

true

はい

検証パネルがデフォルトで表示されます。falseに設定することで、非表示にできます。


26.3 Oracle Business Rulesディクショナリ・エディタの宣言コンポーネントの使用

この項では、Oracle Business Rulesディクショナリ・エディタの宣言コンポーネントについて説明します。ルール・ディクショナリ・エディタ・コンポーネントを使用してアプリケーションを作成および実行し、アプリケーションをデプロイする方法についても説明します。また、この項では、サポートされているタグや、アプリケーションのローカライズ・プロセスのリストも示します。

26.3.1 Oracle Business Rulesディクショナリ・コンポーネントの概要

Oracle Business Rulesディクショナリ・エディタは、ADFベースのWebアプリケーションに埋め込むことができるコンポジット宣言コンポーネントです。Rules SDK2 APIを使用することで、グローバル、バケットセット、ルールセットなどのビジネス・ルール・メタデータ・アーチファクトを編集できます。


注意:

ルール・ディクショナリ・エディタをルール・エディタと混同しないでください。ルール・エディタは、指定したルールセット内のルールを編集するために使用されます。実際には、ルール・エディタはルール・ディクショナリ・エディタに埋め込まれています。ルール・エディタの詳細は、第26.2項「Oracle Business Rulesエディタの宣言コンポーネントの使用」を参照してください。

ルール・ディクショナリ・エディタのタスク・フローでは、ルール・ディクショナリ・エディタ・コンポーネントを使用してアプリケーションを作成します。通常は、ルール・ディクショナリ・エディタ・コンポーネントまたはルール・ディクショナリ・エディタのタスク・フローのいずれかを使用します(両方は使用しません)。ルール・ディクショナリ・エディタのタスク・フローの詳細は、第26.4項「Oracle Business Rulesディクショナリ・タスク・フローの使用」を参照してください。

ルール・ディクショナリ・エディタ・コンポーネントは、次の機能を実行します。

  • グローバル・エディタを使用して、final属性がtrueに設定されているグローバルまたは変数を編集します(図26-28を参照)。

    図26-28 グローバル・エディタ

    図26-28の説明は次にあります。
    「図26-28 グローバル・エディタ」の説明

    グローバル・エディタでは、グローバルの名前、説明および値を編集できます。グローバルを作成または削除することはできません。ただし、グローバルの検証はサポートされています。

  • バケットセット・エディタを使用して、バケットセットを編集します(図26-29を参照)。

    図26-29 バケットセット・エディタ

    図26-29の説明は次にあります。
    「図26-29 バケットセット・エディタ」の説明

    バケットセット・エディタでは、バケットセットおよびバケットセット内のバケットのCRUD(作成、読取り、更新および削除)操作を実行できます。バケットセットの検証もサポートされています。

  • ルールセットを編集します(図26-30を参照)。

    図26-30 ルールセットの編集

    図26-30の説明は次にあります。
    「図26-30 ルールセットの編集」の説明

    ルール・ディクショナリ・エディタで編集できるのは、選択したルールセット内のルールのみです。ルールセットを作成または削除することはできません。

26.3.2 ルール・ディクショナリ・エディタ・コンポーネントを使用したサンプル・アプリケーションの作成および実行方法

この項では、ルール・ディクショナリ・エディタ・コンポーネントを使用してサンプル・アプリケーションを作成および実行するための手順を示します。

ルール・ディクショナリ・エディタ・コンポーネントを使用してADFベースのWebアプリケーションを作成するための前提条件は、使用しているコンピュータでSOA SuiteとOracle JDeveloperのインストールが実行されていることです。

ルール・ディクショナリ・エディタを使用してサンプル・アプリケーションを作成する手順は、次のとおりです。

最初のタスクはサンプル・アプリケーションの作成です。

次の手順に従います。

  1. Oracle JDeveloperを開きます。

  2. 「ファイル」メニューから、「新規」「汎用アプリケーション」の順に選択し、アプリケーションを作成します。

  3. 図26-31に示すように、「アプリケーション名」フィールドにアプリケーションの名前(useRuleDictDCAppなど)を入力し、「次へ」をクリックします。

    図26-31 汎用アプリケーションの作成

    汎用アプリケーションの作成
    「図26-31 汎用アプリケーションの作成」の説明

  4. 図26-32に示すように、「プロジェクト名」フィールドにuseRuleDictDCと入力し、「プロジェクト・テクノロジ」タブで「ADF Faces」が選択されていることを確認します。

    「終了」をクリックしてプロジェクトを作成します。

    図26-32 プロジェクトの作成

    プロジェクトの作成
    「図26-32 プロジェクトの作成」の作成

  5. Oracle JDeveloperの「アプリケーション・ナビゲータ」で「useRuleDictDC」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択して「プロジェクト・プロパティ」ダイアログ・ボックスを表示します。

    「プロジェクト・プロパティ」ダイアログ・ボックスでは、次の手順に従います。

    1. 左側のパネルから「JSPタグ・ライブラリ」を選択します。

    2. 「追加」をクリックし、図26-33に示すように、「タグ・ライブラリの選択」ダイアログの拡張機能リストから「ADF Faces Components」を選択し、「OK」をクリックします。

      図26-33 タブ・ライブラリの選択

      タブ・ライブラリの選択
      「図26-33 タブ・ライブラリの選択」の説明

    3. 「追加」をクリックして「ユーザー」を選択し、「タグ・ライブラリの選択」ダイアログ・ボックスで「新規」をクリックします。

    4. 図26-34に示すように、JDEV_INSTALL/jdeveloper/soa/modules/oracle.soa.rules_dict_dc.webapp_11.1.1を参照し、一度に1つのjarファイルを選択して、「開く」をクリックします。選択したタグ・ライブラリがユーザー・リストに追加されます。

      図26-34 ユーザー・リストへのルール・ディクショナリ・タグ・ライブラリの追加

      ユーザー・リストへのルール・ディクショナリ・タグ・ライブラリの追加
      「図26-34 ユーザー・リストへのルール・ディクショナリ・タグ・ライブラリの追加」の説明

      このディレクトリに7つのjarファイル(adflibBucketsetEditorDC.jar、adflibExpBuilderDC.jar、adflibGlobalsEditorDC.jar、adflibRuleDictionaryDC.jar、adflibRulesDC.jar、adflibRuleValidationTableDC.jarおよびadflibValidationTableDC.jar)があることを確認します。

      すべてのjar(タグ・ライブラリ)がユーザー・リストに追加されるまで、このプロセスを繰り返します。スクリーン・ショット

    5. 図26-35に示すように、「タグ・ライブラリの選択」ダイアログ・ボックスで、ユーザー・リストのすべてのjarを選択して「OK」をクリックします。

      図26-35 ユーザー・リストに追加されたルール・ディクショナリ・タグ・ライブラリの選択

      ユーザー・リストに追加されたルール・ディクショナリ・タグ・ライブラリの選択
      「図26-35 ユーザー・リストに追加されたルール・ディクショナリ・タグ・ライブラリの選択」の説明

      図26-36に示すように、7つのタグ・ライブラリ(bucketsetEditorexpBuilderglobalsEditorruleDictionaryDCrulesCompLibruleValidationTableおよびvalidationTable)がプロジェクトに追加されます。

      図26-36 プロジェクトに追加されたルール・ディクショナリ・タグ・ライブラリ

      プロジェクトに追加されたルール・ディクショナリ・タグ・ライブラリ
      「図26-36 プロジェクトに追加されたルール・ディクショナリ・タグ・ライブラリ」の説明

    6. 左側のパネルから「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックして「ライブラリの追加」ダイアログ・ボックスを表示します。

      図26-19に示すように、「ライブラリ」リストで「Oracle Rules」を選択し、「OK」をクリックします。Rules SDKがプロジェクトに追加されます。

      図26-37 プロジェクトへのRules SDKの追加

      プロジェクトへのRules SDKの追加
      「図26-37 プロジェクトへのRules SDKの追加」の説明

    7. 「OK」をクリックして「プロジェクト・プロパティ」ダイアログ・ボックスを閉じます。

  6. Oracle JDeveloperの「ファイル」メニューから、「すべて保存」を選択してプロジェクトを保存します。

RuleDictionaryModelオブジェクトを作成する手順は、次のとおりです。

ルール・ディクショナリ・エディタ・コンポーネントには、oracle.bpel.ruledictionarydc.model.impl.RuleDictionaryModelオブジェクトが必要です。コンポーネントでは、このオブジェクトを使用して、ディクショナリからグローバル、バケットセットおよびルールセットの情報を読み取ります。したがって、次のタスクは、RuleDictionaryModelオブジェクトを作成するSomeBean.javaと呼ばれるマネージドBeanの作成です。

次の手順に従います。

  1. Oracle JDeveloperを開きます。

  2. 「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。

  3. 「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「一般」の下にある「Java」を選択します。「項目」で「Javaクラス」が選択されていることを確認し、「OK」をクリックして「Javaクラスの作成」ダイアログ・ボックスを表示します。

  4. 図26-38に示すように、Javaクラスの名前(SomeBean.javaなど)を入力して「OK」をクリックし、プロジェクトにJavaクラスを作成します。

    図26-38 Javaクラスの作成

    Javaクラスの作成
    「図26-38 Javaクラスの作成」の説明

    次に、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;
        }
        //please 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 the validation method on the ruleDictModel to update the Validation Panel
    
        public void validate() {
            if (this.ruleDictModel == null)
                return;
            this.ruleDictModel.validate();
        }
    }
    
  5. faces-config.xmlファイルを概要モードで開き、「マネージドBean」の下の「+」ボタンをクリックして「マネージドBeanの作成」ダイアログ・ボックスを表示します。図26-39に示すように、「Bean名」にsomeBean、「スコープ」にsessionと入力し、SomeBean.javaを指し示します。

    図26-39 Bean名とスコープの指定

    Bean名とスコープの指定
    「図26-39 Bean名とスコープの指定」の説明

    ADF/JSFフレームワークによって、ユーザー・インタフェースを表示するSomeBean.javaへの複数のコールが実行されます。たとえば、someBean.ruleDictModelは複数回コールされます。しがたって、RuleDictModelオブジェクトは、コールの都度最作成せずに、1度に作成してキャッシュし、返すほうが効率的です。

ルール・ディクショナリ・エディタ・コンポーネントの.jspxファイルを作成する手順は、次のとおりです。

次のタスクは、ルール・ディクショナリ・エディタ・コンポーネント・タグに挿入する.jspxファイルの作成です。

次の手順に従います。

  1. Oracle JDeveloperを開きます。

  2. 「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。

  3. 「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「Web層」の下にある「JSF」を選択します。

  4. 図26-40に示すように、「項目」で「JSFページ」を選択し、「OK」をクリックして「JSFページの作成」ダイアログ・ボックスを表示します。

    図26-40 ルール・ディクショナリ・エディタ・タグを挿入するJSFページ・ファイルの作成

    JSFページ・ファイルの作成
    「図26-40 ルール・ディクショナリ・エディタ・タグを挿入するJSFページ・ファイルの作成」の説明

  5. 図26-41に示すように、「JSFページの作成」ダイアログ・ボックスで、「ファイル名」にuseRuleDictDC.jspxと入力します。

    図26-41 JSFページ名の指定

    JSFページ名の指定
    「図26-41 JSFページ名の指定」の説明

    図26-42に示すように、Oracle JDeveloperの「コンポーネント・パレット」にRuleDictionaryEditorが表示されます。

    図26-42 「コンポーネント・パレット」のルール・ディクショナリ・エディタ・ライブラリ

    「コンポーネント・パレット」のルール・ディクショナリ・エディタ・ライブラリ
    「図26-42 「コンポーネント・パレット」のルール・ディクショナリ・エディタ・ライブラリ」の説明

    これは、サンプル・アプリケーションの作成時にruleDictionaryDCタグ・ライブラリを追加してあるためです。

  6. 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: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共有ライブラリを参照する手順は、次のとおりです。

.jspxファイルを作成した後は、weblogic-application.xmlファイルからoracle.rules共有ライブラリを参照する必要があります。

次の手順に従います。

  1. Oracle JDeveloperで、「アプリケーション・リソース」→「ディスクリプタ」→「META-INF」の順に参照し、weblogic-application.xmlファイルを開きます。

  2. 図26-43に示すように、次の行を追加してoracle.rules共有ライブラリを参照します。

    <library-ref>
    <library-name>oracle.rules</library-name>
    </library-ref>
    

    図26-43 oracle.rules共有ライブラリの参照

    oracle.rules共有ライブラリの参照
    「図26-43 oracle.rules共有ライブラリの参照」の説明

  3. oracle.rules共有ライブラリを埋込みWeblogic Serverにデプロイします。デプロイしないと、サンプル・アプリケーションの実行時にClassNotFoundExceptionが発生する可能性があります。oracle.rules共有ライブラリをWeblogic Serverにデプロイする手順は、次のとおりです。

    1. WLSコンソール(http://host:port/console/login/LoginForm.jsp)を起動します。Oracle JDeveloperで埋込みWeblogic Serverが実行されていることを確認します。

    2. 図26-44に示すように、「デプロイメント」を選択して「インストール」をクリックし、<JDEV_INSTALL>/jdeveloper/soa/modules/oracle.rules_11.1.1/rules.jarを選択して「終了」をクリックします。

      図26-44 Weblogic Serverへの共有ライブラリのデプロイ

      Weblogic Serverへの共有ライブラリのデプロイ
      「図26-44 Weblogic Serverへの共有ライブラリのデプロイ」の説明

ルール・ディクショナリ・エディタ・サンプル・アプリケーションを実行する手順は、次のとおりです。

最後のタスクは、サンプル・アプリケーションの実行です。

サンプル・アプリケーションを実行するには、Oracle JDeveloperで、useRuleDictDC.jspxファイルを右クリックして「実行」を選択します。図26-45に示すように、Webブラウザでサンプル・アプリケーションが開始します。

図26-45 ルール・ディクショナリ・エディタ・サンプル・アプリケーションの実行

ルール・ディクショナリ・エディタ・サンプル・アプリケーションの実行
「図26-45 ルール・ディクショナリ・エディタ・サンプル・アプリケーションの実行」の説明

26.3.3 スタンドアロンWeblogic Serverへのルール・ディクショナリ・エディタ・アプリケーションのデプロイ方法

アプリケーションEARファイルをスタンドアロンWeblogic Serverにデプロイする準備が整った場合は、次の手順を実行します。

  1. WebLogic Serverコンソール(http://host:port/console/login/LoginForm.jsp)を起動し、oracle.rulesがデプロイメント・リストに表示されていることを確認します。

  2. デプロイメント・リストに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ファイルを選択します。

  3. Oracle JDeveloperを開きます。

  4. 「アプリケーション・ナビゲータ」でプロジェクト名を右クリックし、「プロジェクト・プロパティ」を選択します。

  5. 左側のパネルから「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックします。

  6. 図26-46に示すように、「ライブラリの追加」ダイアログ・ボックスで、「Oracle Rules Dictionary Component」を選択して「OK」をクリックします。

    図26-46 Oracle Rules Dictionary Componentの追加

    Oracle Rules Dictionary Componentの追加
    「図26-46 Oracle Rules Dictionary Componentの追加」の説明

    この手順では、これらのライブラリを参照できますが、これらのライブラリがデフォルトでデプロイされることはありません。したがって、jarファイルはプロジェクトwarファイルには組み込まれていません。

  7. デプロイする必要があるプロジェクト(EARファイルを作成する場所)で、次の手順を実行します。

    1. 次の行をweblogic-application.xmlに追加します。

      <library-ref>
         <library-name>oracle.rules</library-name>
      </library-ref>
      
    2. 次の行をプロジェクトWARファイルのweblogic.xmlに追加します。

      <library-ref>
         <library-name>oracle.soa.rules_dict_dc.webapp</library-name>
      </library-ref>
      
    3. EARファイルをWeblogic Serverにデプロイします。

26.3.4 ルール・ディクショナリ・エディタ・コンポーネントのサポートされている属性に関する注意事項

この項では、ルール・ディクショナリ・エディタ・コンポーネントでサポートされている属性のリストを示します。

表26-3に、サポートされている属性のリストを示します。

表26-3 ルール・ディクショナリ・エディタのサポートされている属性

名前 タイプ 必須 デフォルト値 ELのサポート 説明

ruleDictModel

oracle.bpel.ruledictionarydc.model.interfaces.RuleDictionaryInterface

はい

-

ELのみ

Rules SDKディクショナリ・オブジェクトを囲むラッパー。ルール・ディクショナリ・エディタ・コンポーネントjarファイル(adflibRuleDictionaryDC.jar)の一部として提供されるRuleDictionaryModelオブジェクトを使用できます。

viewOnly

java.lang.Boolean

いいえ

true

はい

trueの場合は、表示専用モードで、既存のディクショナリ・データを表示できますが、データを編集することはできません。falseの場合は、編集モードで、既存のディクショナリ・データを編集できます。

locale

java.util.Locale

いいえ

Locale.getDefault()

はい

ローカライズに使用します。

timezone

java.util.TimeZone

いいえ

TimeZone.getDefault()

はい

ローカライズに使用します。

dateStyle

java.lang.String

いいえ

ロケールから取得

はい

指定すると、その日付スタイルがすべてのinputDateコンポーネントで使用されます(例: yyyy.MM.dd)。

timeStyle

java.lang.String

いいえ

ロケールから取得

はい

指定すると、その時刻スタイルがすべてのinputDateコンポーネントで使用されます(例: HH:mm:ss)。

dtColumnPageSize

java.lang.Integer

いいえ

5

はい

デシジョン表に一度に表示する列数。この属性は、ルールがコラムの場合のみ機能します。

dtHeight

java.lang.Integer

いいえ

16

はい

デシジョン表に一度に表示する行数。行数が指定の高さを超える場合は、スクロール・バーが表示されます。

selectedTab

java.lang.String

いいえ

-

はい

指定のタブ名(グローバル、バケットセットまたはルールセットの名前)に切り替えます。

showValidationPanel

java.lang.Boolean

いいえ

true

はい

検証パネルがデフォルトで表示されます。falseに設定することで、非表示にできます。

discloseRules

java.lang.Boolean

いいえ

false

はい

trueの場合は、ルールセット内のすべてのルールが展開されます。falseの場合は、すべてのルールが縮小されます。

displayRuleSetName

java.lang.Boolean

いいえ

true

はい

編集可能なルールセット名がデフォルトで表示されます。falseに設定することで、非表示にできます。

disableRuleSetName

java.lang.Boolean

いいえ

false

はい

trueの場合、ルールセット名は使用不可となり、編集できません。デフォルトでは、値はfalseです。


26.4 Oracle Business Rulesディクショナリ・タスク・フローの使用

この項では、Oracle Business Rulesディクショナリ・エディタのタスク・フローについて説明します。ルール・ディクショナリ・エディタのタスク・フローを使用してアプリケーションを作成および実行し、アプリケーションをデプロイする方法についても説明します。

26.4.1 Oracle Business Rulesディクショナリ・タスク・フローの概要

ルール・ディクショナリ・エディタのタスク・フローは、基本的にはルール・ディクショナリ・エディタの宣言コンポーネントを囲むラッパーです。このタスク・フローは、タスク・フローが必要なADFベースのWebアプリケーションで、宣言コンポーネントのかわりに使用されます。ルール・ディクショナリ・エディタ・コンポーネントの詳細は、第26.3項「Oracle Business Rulesディクショナリ・エディタの宣言コンポーネントの使用」を参照してください。

26.4.2 ルール・ディクショナリ・エディタのタスク・フローを使用したサンプル・アプリケーションの作成および実行方法

この項では、ルール・ディクショナリ・エディタのタスク・フローを使用してサンプル・アプリケーションを作成および実行するための手順を示します。

ルール・ディクショナリ・エディタのタスク・フローを使用してADFベースのWebアプリケーションを作成するには、次の前提条件があります。

  • 使用しているコンピュータでSOA SuiteとOracle JDeveloperのインストールが実行されている必要があります。

  • adflibRuleDictionaryTaskFlow.jarファイルを取得する必要があります。次の手順に従います。

    1. <JDEV_INSTALL>/jdeveloper/soa/modules/oracle.soa.rules_dict_dc.webapp_11.1.1/oracle.soa.rules_dict_dc.webapp.warを開きます。

    2. WEB-INF/lib/adflibRuleDictionaryTaskFlow.jarをローカル・ディレクトリに解凍します。

ルール・ディクショナリ・エディタのタスク・フローを使用してサンプル・アプリケーションを作成する手順は、次のとおりです。

最初のタスクはサンプル・アプリケーションの作成です。

次の手順に従います。

  1. Oracle JDeveloperを開きます。

  2. 「ファイル」メニューから、「新規」「汎用アプリケーション」の順に選択し、アプリケーションを作成します。

  3. 図26-47に示すように、「アプリケーション名」フィールドにアプリケーションの名前(useRuleDictTaskFlowAppなど)を入力し、「次へ」をクリックします。

    図26-47 汎用タスク・フロー・アプリケーションの作成

    汎用タスク・フロー・アプリケーションの作成
    「図26-47 汎用タスク・フロー・アプリケーションの作成」の説明

  4. 図26-48に示すように、「プロジェクト名」フィールドにuseRuleDictTaskFlowと入力し、「プロジェクト・テクノロジ」タブで「ADF Faces」が選択されていることを確認します。

    「終了」をクリックしてプロジェクトを作成します。

    図26-48 タスク・フロー・プロジェクトの作成

    タスク・フロー・プロジェクトの作成
    「図26-48 タスク・フロー・プロジェクトの作成」の説明

  5. Oracle JDeveloperの「アプリケーション・ナビゲータ」で「useRuleDictTaskFlow」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択して「プロジェクト・プロパティ」ダイアログ・ボックスを表示します。

    「プロジェクト・プロパティ」ダイアログ・ボックスでは、次の手順に従います。

    1. 左側のパネルから「JSPタグ・ライブラリ」を選択します。

    2. 「追加」をクリックし、図26-49に示すように、「タグ・ライブラリの選択」ダイアログの拡張機能リストから「ADF Faces Components」を選択し、「OK」をクリックします。

      図26-49 タスク・フロー・アプリケーションのタブ・ライブラリの選択

      タスク・フロー・アプリケーションのタブ・ライブラリの選択
      「図26-49 タスク・フロー・アプリケーションのタブ・ライブラリの選択」の説明

    3. 左側のパネルから「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックして「ライブラリの追加」ダイアログ・ボックスを表示します。

    4. 「OK」をクリックして「プロジェクト・プロパティ」ダイアログ・ボックスを閉じます。

  6. Oracle JDeveloperの「ファイル」メニューから、「すべて保存」を選択してプロジェクトを保存します。

  7. soaComposerTemplates.jarに定義されているoracle.integration.console.metadata.model.share.MetadataDetailsインタフェースを実装するJavaクラスを作成します。MetadataDetailsインタフェースの詳細は、I.1項「MetadataDetailsインタフェース」を参照してください。

    次の手順に従います。

    1. Oracle JDeveloperを開きます。

    2. 「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。

    3. 「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「一般」の下にある「Java」を選択します。「項目」で「Javaクラス」が選択されていることを確認し、「OK」をクリックして「Javaクラスの作成」ダイアログ・ボックスを表示します。

    4. 図26-53に示すように、Javaクラスの名前(MyMetaDataDetailsなど)を入力し、「オプション属性」の下の「実装」ボックスにMetadataDetailsインタフェースを追加し、「OK」をクリックしてプロジェクトにJavaクラスを作成します。

      図26-53 MetadataDetailsインタフェースを実装するJavaクラスの作成

      MetadataDetailsの実装
      「図26-53 MetadataDetailsインタフェースを実装する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:///C:/scratch/asuraj/system/rules/OrderBooking.rules";
      
          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 "";
          }
      }
      
  8. 図26-54に示すように、oracle.integration.console.metadata.model.share.NLSPreferencesインタフェースを実装するJavaクラスを作成します。このインタフェースはsoaComposerTemplates.jarに定義されています。

    図26-54 NLSPreferencesインタフェースを実装するJavaクラスの作成

    NLSPreferencesの実装
    「図26-54 NLSPreferencesインタフェースを実装するJavaクラスの作成」の説明

    NLSPreferencesインタフェースの詳細は、I.2項「NLSPreferencesインタフェース」を参照してください。

    次に、MyNLSPreferences.javaファイルのサンプルを示します。

    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;
        }
    }
    
  9. MetadataDetailsおよびNLSPreferencesの実装を返すMyBean.javaというマネージドBeanを作成します。このマネージド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;
        }
    }
    
  10. faces-config.xmlファイルを概要モードで開き、「マネージドBean」の下の「+」ボタンをクリックして「マネージドBeanの作成」ダイアログ・ボックスを表示します。図26-55に示すように、「Bean名」にMyBean、「スコープ」にsessionと入力し、MyBean.javaを指し示します。

    図26-55 タスク・フロー・アプリケーションでのBean名とスコープの指定

    Bean名とスコープの指定
    「図26-55 タスク・フロー・アプリケーションでのBean名とスコープの指定」の説明

ルール・ディクショナリ・エディタのタスク・フローを.jspxファイルに追加する手順は、次のとおりです。

次のタスクは、ルール・ディクショナリ・エディタ・コンポーネント・タグに挿入する.jspxファイルの作成です。

次の手順に従います。

  1. Oracle JDeveloperを開きます。

  2. 「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。

  3. 「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「Web層」の下にある「JSF」を選択します。

  4. 図26-56に示すように、「項目」で「JSFページ」を選択し、「OK」をクリックして「JSFページの作成」ダイアログ・ボックスを表示します。

    図26-56 ルール・ディクショナリ・エディタのタスク・フローを挿入するJSFページ・ファイルの作成

    JSFページ・ファイルの作成
    「図26-56 ルール・ディクショナリ・エディタのタスク・フローを挿入するJSFページ・ファイルの作成」の説明

  5. 図26-57に示すように、「JSFページの作成」ダイアログ・ボックスで、「ファイル名」にuseRuleDictTaskFlow.jspxと入力します。

    図26-57 タスク・フローのJSFページ名の指定

    タスク・フローのJSFページ名の指定
    「図26-57 タスク・フローのJSFページ名の指定」の説明

    図26-58に示すように、Oracle JDeveloperの「コンポーネント・パレット」にadflibRuleDictionaryTaskFlow.jarが表示されます。

    図26-58 「コンポーネント・パレット」のルール・ディクショナリ・タスク・フローJAR

    「コンポーネント・パレット」のルール・ディクショナリ・タスク・フローJAR
    「図26-58 「コンポーネント・パレット」のルール・ディクショナリ・タスク・フローJAR」の説明

    これは、サンプル・アプリケーションの作成時にadfLibRuleDictionaryTaskFlow.jarをライブラリとクラスパスに追加してあるためです。

  6. adflibRuleDictionaryTaskFlow.jarを選択して、「コンポーネント・パレット」の「リージョン」でrule-dict-flow-definitionが使用可能になるようにします。図26-59に示すように、rule-dict-flow-definitionリージョンを.jspxファイルにドラッグ・アンド・ドロップすると、必要なすべてのパラメータを指定できます。

    図26-59 リージョンのドラッグ・アンド・ドロップ

    リージョンのドラッグ・アンド・ドロップ
    「図26-59 リージョンのドラッグ・アンド・ドロップ」の説明

    次に、タスク・フローが追加された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>
    

    前述のサンプルでは、次のボタンをページに表示するためのコード・スニペットがあります。

    • トグル・モード: 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>

前述のコード・サンプルでは、MyBean.java(マネージドBean)から取得されるパラメータとハードコードされたパラメータがあります。

oracle.rules共有ライブラリを参照する手順は、次のとおりです。

次のタスクは、weblogic-application.xmlファイルからoracle.rules共有ライブラリを参照することです。

次の手順に従います。

  1. Oracle JDeveloperで、「アプリケーション・リソース」→「ディスクリプタ」→「META-INF」の順に参照し、weblogic-application.xmlファイルを開きます。

  2. 図26-60に示すように、次の行を追加してoracle.rules共有ライブラリを参照します。

    <library-ref>
    <library-name>oracle.rules</library-name>
    </library-ref>
    

    図26-60 oracle.rules共有ライブラリの参照

    oracle.rules共有ライブラリの参照
    「図26-60 oracle.rules共有ライブラリの参照」の説明

タスク・フロー・サンプル・アプリケーションを実行する手順は、次のとおりです。

最後のタスクは、サンプル・アプリケーションの実行です。

サンプル・アプリケーションを実行するには、Oracle JDeveloperで、useRulesDictTaskFlow.jspxファイルを右クリックして「実行」を選択します。図26-45に示すように、Webブラウザでサンプル・アプリケーションが開始します。

図26-61 ルール・ディクショナリ・エディタのタスク・フロー・サンプル・アプリケーションの実行

ルール・ディクショナリ・エディタのタスク・フロー・サンプルの実行
「図26-61 ルール・ディクショナリ・エディタのタスク・フロー・サンプル・アプリケーションの実行」の説明

26.4.3 スタンドアロンWeblogic Serverへのルール・ディクショナリ・エディタのタスク・フロー・アプリケーションのデプロイ方法

アプリケーションEARファイルをスタンドアロンWeblogic Serverにデプロイする準備が整った場合は、次の手順を実行します。

  1. WebLogic Serverコンソール(http://host:port/console/login/LoginForm.jsp)を起動し、oracle.rulesがデプロイメント・リストに表示されていることを確認します。

  2. デプロイメント・リストに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ファイルを選択します。

  3. デプロイする必要があるプロジェクト(EARファイルを作成する場所)で、次の手順を実行します。

    1. 次の行をweblogic-application.xmlに追加します。

      <library-ref>
         <library-name>oracle.rules</library-name>
      </library-ref>
      
    2. 次の行をプロジェクトWARファイルのweblogic.xmlに追加します。

      <library-ref>
         <library-name>oracle.soa.rules_dict_dc.webapp</library-name>
      </library-ref>
      
    3. EARファイルをWeblogic Serverにデプロイします。

26.5 ADFベースのWebアプリケーションのローカライズ

ルール・エディタ・コンポーネント、ルール・ディクショナリ・エディタ・コンポーネントまたはルール・ディクショナリ・エディタのタスク・フローを使用して作成されたアプリケーションは、ローカライズできます。

次の手順に従います。

  1. ルール・エディタ・コンポーネントを使用するプロジェクトの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>
    
  2. ブラウザ言語をロケールに合わせて変更します。

  3. ブラウザで提供されるロケールを上書きし、特定のロケールでユーザー・インタフェースを表示できます。このためには、ロケールを属性としてコンポーネントに渡し、そのコンポーネントを使用しているアプリケーションのf:viewタグを変更します。

    <f:view locale="#{someBean.locale}">
    

    ここで指定するlocaleは、locale属性を使用してコンポーネントに渡した内容と同じである必要があります。