ルール・ディクショナリ・エディタのタスク・フローを使用したサンプル・アプリケーションの作成および実行方法
この項では、Oracleルール・ディクショナリ・エディタのタスク・フローを使用してサンプル・アプリケーションを作成および実行するためのステップを示します。
Oracleルール・ディクショナリ・エディタのタスク・フローを使用してADFベースのWebアプリケーションを作成するための前提条件は、使用しているコンピュータでOracle SOA SuiteとOracle JDeveloperのインストールが実行されていることです。
最初のタスクはサンプル・アプリケーションの作成です。
Oracleルール・ディクショナリ・エディタのタスク・フローを使用してサンプル・アプリケーションを作成するには:
-
Oracle JDeveloperを開きます。
-
「ファイル」メニューから、「新規」を選択し、次に「カスタム・アプリケーション」を選択して、アプリケーションを作成します。
-
図26-35に示すように、「アプリケーション名」フィールドにアプリケーションの名前(
useRuleDictTaskFlowApp
など)を入力し、「次へ」をクリックします。 -
図26-36に示すように、「プロジェクト名」フィールドに
useRuleDictTaskFlow
と入力し、「プロジェクト・テクノロジ」タブで「ADF Faces」が選択されていることを確認します。 -
「終了」をクリックしてプロジェクトを作成します。
-
Oracle JDeveloperの「アプリケーション」ウィンドウで「useRuleDictTaskFlow」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択して「プロジェクト・プロパティ」ダイアログ・ボックスを表示します。
「プロジェクト・プロパティ」ダイアログ・ボックスでは、次の手順に従います。
-
左側のパネルから「JSPタグ・ライブラリ」を選択します。
-
「追加」をクリックし、図26-37に示すように、「タグ・ライブラリの選択」ダイアログ・ボックスの「拡張機能」リストから「ADF Faces Components」を選択し、「OK」をクリックします。
-
左側のパネルから「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックして「ライブラリの追加」ダイアログ・ボックスを表示します。
-
図26-38に示すように、「ライブラリ」リストでOracle RulesおよびOracle Rules Dictionaryタスク・フローを選択し、「OK」をクリックします。これにより、Rules SDKおよびルール・ディクショナリ・タスク・フローのJARがプロジェクトに追加されます。
-
「OK」をクリックして、「プロジェクト・プロパティ」ダイアログ・ボックスを閉じます。
-
-
Oracle JDeveloperの「ファイル」メニューから「すべて保存」をクリックし、プロジェクトを保存します。
-
soaComposerTemplates.jar
に定義されているoracle.integration.console.metadata.model.share.MetadataDetails
インタフェースを実装するJavaクラスを作成しますMetadataDetails
インタフェースの詳細は、「MetadataDetailsインタフェース」を参照してください。ステップは次のとおりです:
-
Oracle JDeveloperを開きます。
-
「ファイル」メニューから「新規」を選択して、「新規ギャラリ」ダイアログ・ボックスを表示します。
-
「新規ギャラリ」ダイアログ・ボックスの「カテゴリ」パネルから、「一般」の下にある「Java」を選択します。「項目」で「Javaクラス」が選択されていることを確認し、「OK」をクリックして「Javaクラスの作成」ダイアログ・ボックスを表示します。
-
Javaクラスの名前(
MyMetaDataDetails
など)を入力します。 -
図26-39に示すように、「オプション属性」の下の「実装」ボックスに
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インタフェースの詳細は、「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-40に示すように、「Bean名」フィールドに
MyBean
と入力し、「スコープ」リストでsession
を選択して、MyBean.java
を指し示します。