第12章
この章では、スコープパス、およびexteNd Directorアプリケーションでスコープパスを使用する方法について説明します。この章は、次の節から構成されています。
ページフローおよびワークフローモデラーでスコープパスにアクセスする方法については、『ページフローおよびフォームガイド』のページフローモデラーに関する章、または『ワークフローガイド』のWorkflowModelerに関する章を参照してください。
スコープパスを使用すると、exteNd Directorアプリケーションのデータに簡単にアクセスできます。 「スコープ」という用語は、データの状態、またはデータの持続性を表します。 データは、シングルユーザセッションで使用できる場合、「非持続的」になり、 複数のセッションを介して、1人以上のユーザ、または外部アプリケーションに使用できる場合、「持続的」になります。
exteNd Directorアプリケーションでは、いくつかの非持続的および持続的スコープにアクセスできます。 HTTPセッションは、非持続的スコープの例で、exteNd Directorリソースセットは、持続的スコープの例です。 スコープパスの 「パス」は、特定のスコープ内のデータ位置です。
exteNd Directorには、スコープパスAPIを介してページフローおよびワークフローモデラーから使用できる定義済みスコープのグループがあります。
スコープパスを使用すると、次のように、データへのアクセス、およびデータの操作が簡単になります。
多くのスコープパスは、XMLドキュメントのXPathベースナビゲーションをサポートしています(事前定義されたスコープを参照)。 XPathとは、XMLドキュメントの部分にアドレスするためにWorld Wide Web Consortium (W3C)により定義された言語のことです。
XPath式は、XMLドキュメントを参照するスコープパスに追加できます。 ページフローおよびワークフローモデラーの[スコープパス]ダイアログは、この追加作業に使用できるスコープパスナビゲータツールへのリンクを提供します。
XPathナビゲータの詳細については、スコープパスおよびXPathナビゲータの使用を参照してください。
XPathについては、http://www.w3.org/TR/xpath20/を参照してください。
exteNd Directorは、標準ファイルアクセスおよびXPathに基くパス構文による、事前定義されたスコープのセットを提供します。 次の表は、各事前定義されたスコープパスの機能の要約を示します。 この表の列は次のことを示します。
XPath - マークが付いている場合、このスコープパスはXPathをサポートしています。詳細については、スコープパスおよびXPathナビゲータの使用を参照してください。
読み込み - マークが付いている場合、このスコープパスは読み込み可能です。 つまり、スコープデータは、ページフローおよびワークフローモデラーの「コピー元の指定」機能で使用できます。
書き込み - マークが付いている場合、このスコープパスは書き込み可能です。 つまり、スコープデータは、ページフローおよびワークフローモデラーの「コピー先の指定」機能で使用できます。
詳細については、スコープパスのコピーを参照してください。
説明
Applicationスコープとは、HTTPセッション用のアプリケーションサイズのスコープのことです。 このスコープに格納されるオブジェクトは、同じポートレットアプリケーションに存在し、同じセッションの要求を処理する他のオブジェクトで使用できます。 ページフローモデラーの場合、同じセッションに含まれる他のフローアクティビティ(JSPやサーブレットアクティビティなど)および他のポートレットでも使用できます。
パス
Application/aKey
/path/xpath
例
書き込み(コピー先)の例
Session/doc/mydoc --> Application/docout/doc1
読み込み (コピー元)の例
Application/prop/aString --> Flow/property/prop1
説明
Artifactスコープとは、次のいずれかに格納される持続的データ用のアプリケーションサイズのスコープのことです。
このスコープは、XMLドキュメントへのXPathナビゲーションをサポートしています。 Artifactスコープは、ページフローおよびワークフローモデラーにおけるスコープコピーのコピー元で使用できます。
ヒント: 可能な場合、Artifactスコープを使用するよりも、ResourceSetスコープおよびCM スコープスコープを使用した方がより効率的です。
パス
Artifact/cm://path/xpath
Artifact/war://path/xpath
Artifact/dir
/path/xpath
例
書き込み(コピー先)の例
Flow/document/mydoc --> Artifact/c:/applications/docs/mydoc1.xml
読み込み(コピー元)の例
Artifact/c:/applications/docs/mydoc1.xml --> Flow/document/mydoc
説明
CMスコープとは、Content Managementサブシステムに格納される持続的データ用のアプリケーションサイズのスコープのことです。 既存のリポジトリおよびパスを入力する必要があります。 「コピー先の指定」機能(書き込み可能)では、ドキュメントは、指定位置にPUBLISHEDステータスで書き込まれます。 このスコープは、XPath式をサポートしています。
パス
CM/myrepository/mypathtodoc/xpath
例
書き込み(コピー先)の例
Flow/mydoc/doc --> CM/companydoc/reports/report1.xml
読み込み (コピー元)の例
CM/companydoc/reports/report1.xml --> Flow/mydoc/doc
説明
Documentスコープを使用すると、一時XMLドキュメントを作成できます。 ページフローまたはワークフローアプリケーションでは、Documentスコープは、フローアプリケーションのシングルオブジェクトで使用でき、コピー元のみで有効です。
注記: ドキュメントには、有効な(正しい形式の)XMLドキュメントを使用する必要があります。
パス
Document/<elem></elem>
例
この例は、DocumentスコープからSessionスコープにドキュメント要素をコピーする方法を示します。
Document/<emps><emp><fn>John</fn><ln>Doe</ln></emp><emp><fn>Jane</fPortal
説明
Flowスコープは、ページフローまたはワークフロー内で使用されます。 ページフローでは、フロースコープは、ポートレットアプリケーションセッションのすべてのフローオブジェクト(格納されるページフローを含む)で使用できます ワークフローでは、フロースコープは、ワークフロープロセス期間のすべてのフローオブジェクト(格納されるページフローを含む)で使用できます
Flowスコープは、次のオブジェクトに対する排他的なアクセスを提供します。
Flowスコープオプション |
説明 |
---|---|
document |
XMLドキュメント(このスコープはXPath式をサポートしています)
|
property |
文字列変数 |
例外 |
Exceptionアクティビティに関連するメッセージタイプまたはその他のデータ
|
ドキュメントプロパティ |
ドキュメントタイプに関連付けられているプロパティ(メタデータ) |
次の3つのプロパティは、ワークフロー内で実行するページフローに適用されます。
|
|
lock |
現在のユーザのワークアイテムをロックしようとします。 |
unlock |
現在のユーザのワークアイテムのロックを解除しようとします。 |
persistent |
ワークアイテムが持続的状態(ワークフローコンテキスト)の場合trueが返され、非持続的状態(ページフローコンテキスト)の場合falseが返されます。 |
パス
Flow/document/varName/xpath
Flow/property/varName
Flow/exception/type
documentproperty/varName
例
書き込み(コピー先)の例
Session/doc/mydoc --> Flow/document/doc1
読み込み(コピー元)の例
Flow/doc/doc1 --> CM/companydoc/reports/report1.xml
説明
Formatスコープは、別のスコープに追加できる、またはフローの他のアクティビティにより参照できる固有な識別子をランタイムに作成します。
このスコープは、2種類のフォーマッタをサポートしています。 これらの両方のフォーマッタは、関連するjava.text.formatterクラスで定義されているように、パターンを使用します。
Formatスコープオプション |
機能 |
---|---|
Decimal |
指定フォーマットで数値を生成します。 getシーケンスを0から開始し、getValueがスコープで呼び出されるたびに1ずつ増やします。 このフォーマッタでは、初期値、または別の増分値は設定できません。
|
Date |
指定フォーマットでタイムスタンプを生成します。
|
パス
Format/Date|Decimal/pattern
例
Format/Decimal/000.0# Format/Date/yyyy.MM.dd Format/Date/yyMMddHHmmsss Format/Date/FULL
コピーの例
CM/myRepository/folder1/${/Format/Date/yyyy.MM.dd}.doc
説明
Logスコープを使用すると、exteNd Directorログ出力機能にアクセスできます。この機能は、いくつかの標準ログの1つまたは独自のカスタムログに情報を記述するランタイムログ出力機能です。ユーザはログに表示する情報の詳細レベルを決定できます。ログ出力はサーバコンソールに表示されます。 ログ出力レベルを指定しないと、デフォルト値が使用されます。
Logスコープは、ページフローおよびワークフローモデラーにおけるコピー先で使用できます。
パス
Log/LogIdentifier/Level
例
Log/EboFwLog Log/EboCmLog/5
コピーの例
String/mystring --> Log/myLogIdentifier
説明
Portalスコープは、ポータルリソースへの完全修飾URLを返します。 このスコープは、コピー元のみで有効です。
Portalスコープオプション |
Pathオプション |
説明 |
---|---|---|
Url |
Login |
PortalLoginポートレットURLを返します。 |
Logout |
Logout URLを返します(現在のユーザセッションを終了します)。 |
|
NewUser |
NewUserポートレットURLを返します。 |
|
Home |
ユーザ定義デフォルトページを返します。 定義されていない場合、またはユーザがanonymousの場合、ポータルデフォルトページURLを返します。 |
|
Resource |
ResourceSet URIを返します。 |
|
Context |
DirectorアプリケーションコンテキストURIを返します。 |
|
Portlet |
ポートレットの完全修飾URLを返します。 |
|
Keyword 以下のKeywordオプションの使用を参照 |
Navigation/ContainerPages |
コンテナページのナビゲーションを表示します。 |
Navigation/SharedPages |
共有ページのナビゲーションを表示します。 |
|
Navigation/PersonalPages |
パーソナルページのナビゲーションを表示します。 |
|
Navigation/QuickLinks |
クイックリンクのナビゲーションを表示します。 |
パス
Portal/Url/Login Portal/Url/Logout Portal/Url/NewUser Portal/Url/Home Portal/Url/Resource/a uri
Portal/Url/Context/a uri
Portal/Url/Portlet/a portlet name
例
Portal/Url/Resource/images/DirectorWelcomeHeader.jpg Portal/url/Context/PAC Portal/Portlet/StockQuote
Keywordオプションを使用し、ページフローアクティビティでスコープパス構文を使用することで、インストールされているナビゲーションポートレットを表示します。たとえば、次のとおりです。
${Portal/Keyword/Navigation/SharedPages}
詳細については、ページフローアクティビティでのスコープパス構文を参照してください。
Keywordは、インストールされているヘッダポートレットおよびナビゲーションポートレットで使用されるXSLパターンにアクセスします。 これらの2つのポートレットは、同じポートレットクラスを使用して、layoutという名前の初期設定の内容を、特定のXSLスタイルシートとともに表示します。 実際の内容は、コンテキストユーザにより決まります。
詳細ついては、『ポータルガイド』のポータルページに関する章を参照してください。
説明
PortletPreferenceは、現在のポートレット初期設定値を特定の変数名で示します。 このスコープは、現在のポートレットセッションのポートレット初期設定に対してプライベートです。 このスコープの値は、ユーザおよびポートレットインスタンスで持続します。
詳細については、『ポータルガイド』のポートレット初期設定に関する節を参照してください。
パス
PortletPreference/varName
例
書き込み(コピー先)の例
String/\x92 300\x94 --> PortletPreference/height
読み込み(コピー元)の例
PortletPreference/height --> Session/prop/height
次の事項も参照してください。
説明
Requestスコープは、ポートレットまたはHTTP要求に関連する要求オブジェクトを表します。 Requestスコープ値は、次の表で説明するように、ポートレットのアクションおよびレンダリング要求で使用できます。
レンダリングおよびアクション要求がページフローでどのように扱われるかについては、『ページフローおよびフォームガイド』のページフローの操作に関する章を参照してください。
Requestスコープは、次の値へのアクセスを提供します。
Requestスコープオプション |
説明 |
呼び出すメソッド |
---|---|---|
param |
指定パラメータに関連付けられたStringオブジェクトを返します。 レンダリングおよびアクション要求で使用できます。 |
getParameter() onEbiRequest. |
attr |
指定属性に関連付けられたStringオブジェクトを設定または返します。 レンダリングおよびアクション要求で使用できます。 |
get/setAttribute() onEbiRequest |
cookie |
指定クッキー名に関連付けられたクッキー値を返します。 レンダリングおよびアクション要求で使用できます。 注記: このオプションは、Objectを返します。 Pageflowで使用する場合、リンク式、または(たとえば、Javaアクティビティで)その後の処理のないレンダリングでは使用できません。 |
getCookieValue() onEboCookieUtil |
api |
指定要求メソッドに関連付けられた値を返します。 レンダリング要求のみで使用できます。 ページフローモデラーで、ツリービューからメソッドを選択します。
|
javax.portlet.RenderRequestのメソッドを参照してください。 |
prop |
指定プロパティに関連付けられたHTTP要求ヘッダを返します。 レンダリングおよびアクション要求で使用できます。 ページフローモデラーで、ツリービューからプロパティを選択します。 |
getHeader() on EbiRequest |
Request APIオプションおよびPersistMgr領域 PersistMgr領域設定を使用している場合、認証されたユーザに関連するapiオプションのget()メソッド、つまりgetAuthType()、getRemoteUser()、およびgetUserPrincipal()は、Nullを返します。 これは、要求オブジェクトには、PersistMgrを介した認証時にアプリケーションサーバにより認証データが返されないからです。
認証情報を取得するには、コードでコンテキストオブジェクト(com.sssw.fw.api.EbiContext)をインスタンス化します。 EboFactoryでいずれかのcreateEbiContext()メソッドを使用します。
パス
Request/param/varName
Request/attr/varName
Request/cookie/varName
Request/api/method
Request/prop/varName
例
書き込み(コピー先)の例
Session/mykey/locale --> Request/attr/locale
読み込み(コピー元)の例
Request/api/getLocale --> Session/mykey/locale
説明
ResourceBundleスコープを使用すると、定義されたJava resourceBundleにスコープできます。
パス
ResourceBundle/family
/aKey
例
コピーの例
ResourceBundle/myResourcesFile/Key1 --> Session/localize/locale
説明
ResourceSetスコープとは、exteNd DirectorプロジェクトResourceSetに格納される持続的データ用のアプリケーションサイズのスコープのことです。
注記: このスコープは、Artifact WARスコープに似ていますが、WARのResourceSetにおける既知のロケーションへのアクセスを制限します。
このスコープは、XMLドキュメントへのXPathナビゲーションをサポートします。
パス
/ResourceSet/path/xPath]
例
ResourceSet/pages/category/pagetype --> Flow/property/ptype
説明
Responseスコープは、ポートレット応答に関連する応答オブジェクトを表します。
Responseスコープ値は、次の表で特に指定されていない限り、ポートレットのアクションおよびレンダリング応答で使用できます。 レンダリングおよびアクション応答がページフローでどのように扱われるかについては、『ページフローおよびフォームガイド』のページフローの操作に関する章を参照してください。
Responseスコープは、次の値へのアクセスを提供します。
Responseスコープオプション |
説明 |
呼び出すメソッド |
---|---|---|
cookie |
指定値でクッキーを作成し、ブラウザに設定します。 レンダリングおよびアクション応答で使用できます。 |
addCookieToResponse() onEboCookieUtil |
render |
Portletレンダリング要求の指定Stringパラメータを設定します。 レンダリング応答のみで使用できます。 |
setRenderParam() onActionResponse |
パス
Response/cookie/varName
Response/render/varName
例
コピーの例
Session/param/myString --> Response/cookie/anAttribute
説明
Sessionスコープは、現在のポートレットセッションのポートレット、およびその含まれるリソースに対してプライベートです。 このスコープのオブジェクトのネームスペースは、ポートレットアプリケーションの他のWebコンポーネントでは使用できません。
重要: ページフローJSPページまたはサーブレットアクティビティからセッション変数にアクセスする場合、データをApplicationスコープにコピーする必要があります。詳細については、Applicationスコープを参照してください。
パス
Session/aKey
/path/xpath
例
書き込み(コピー先)の例
CM/myrepository/mypathtodoc/pubdoc.xml --> Session/doc/mydoc
説明
Stringスコープを使用すると、一時文字列を作成できます。 ページフローまたはWorkflowアプリケーションでは、Stringスコープは、フローアプリケーションのシングルオブジェクトで使用でき、コピー元のみで有効です。
パス
String/aString
例
コピーの例
/String/I am here -> /Session/myparam
説明
Userスコープは、ログインユーザおよびユーザ属性へのアクセスを提供します。 Userスコープは、次の値へのアクセスを提供します。
Userスコープオプション |
値 |
---|---|
fname |
ログインユーザのファーストネーム属性 |
lname |
ラストネーム属性 |
|
電子メール属性 |
id |
ユーザID属性 |
attr |
指定カスタム属性の値 |
パス
User/fname User/lname User/email User/id User/myattr
例
書き込み(コピー先)の例
Session/attrubute --> User/attr/attribute1
読み込み(コピー元)の例
User/email --> Session/contact
ページフローおよびワークフローモデラーでは、フローアプリケーションの選択ポイントで、いくつかの方法でスコープ間でデータをコピーできます。 たとえば、スコープパスを使用して、リンクで論理式を作成し、異なるスコープ間でデータをコピーできます。
注記: ページフローおよびワークフローモデラーのコピー機能は、1回のコピーで1つの値とオブジェクトのペアをコピーします。 DOMのノードへのスコープなど、オブジェクトの集合を操作する場合、Java ActivityまたはXSLでの解析を処理する必要があります。
スコープパスのコピーは、ページフローまたはWorkflowアクティビティの前後、あるいはリンクをたどった後に実行できます。 使用するコピーオプションは、フローの倫理により異なります。 スコープパスが各コピーオプションでどのように扱われるかは、次のとおりです。
アクティビティでのスコープパスのコピーは、ターゲットアクティビティを参照する複数のスコープパス間で競合がない場合いつでも実行できます。 たとえば、次の場合です。
たとえば、Link 2およびLink 3に基いて異なるページ結果を返す場合を考えます。 この場合、1つのアクティビティを参照する2つのリンク間で競合する可能性はないので、データをLink 2およびLink 3にコピーするか、HTML 2およびHTML 3の実行前にデータをコピーできます。
複数のリンクが1つのアクティビティを参照し、各リンクに異なるスコープが関連付けられている場合、データをリンクにコピーする必要があります。 次の例を考えてみます。
HTML 3を参照するリンクが2つあるとします。このとき、このアクティビティに異なるデータを関連付ける場合、つまり、データをリンクソースと独立させる場合、データをリンクにコピーする必要があります。
注記: HTML 3で2つの「copy before」スコープを使用できますが、フローエンジンは、ソースリンクによりこれらを区別できません。
スコープパスには代替構文があります。これは、特定のアプリケーション要素に追加し、ランタイムに解決することができます。
スコープパスには、ページフローアプリケーションでHTMLおよびXFormアクティビティから直接パスにアクセスするための代替構文があります。
注記: 標準構文は、exteNd Director ページフローで実行するオブジェクトにのみ適用されます。
構文は次のとおりです。
scopedpath?my_scoped_path
/scopedpath
たとえば、HTMLページで、次のように指定するとします。
<P>scopedpath?Request/attr/myVarName/scopedpath </P>
この場合、スコープパス構文の代わりにmyVarNameの文字列値が使用されます。
スコープパスをダイナミックに解決するには、次の構文を既存のスコープパスに追加します。
${myPath}
たとえば、ファイル名として現在のタイムスタンプを使用して、Content Managementサブシステムのダイナミックドキュメントを生成するには、次のように、FormatスコープをCMスコープに追加できます。
CM/myRepository/folder1/${/Format/Date/yyyy.MM.dd}.doc
ダイナミック代替構文${path}をRulesサブシステムで使用して、スコープパスにアクセスできます。 この機能は、「テンプレートフィールド」を持つ任意の条件またはアクションで使用できます。
詳細については、『ルールガイド』の「インストールされている条件」および「インストールされているアクション」を参照してください。
また、次の構文を使用して、ダイナミック解決をルール内にネストすることもできます。
{$CM/folder/${Format/Date/<pattern>}}.doc
ダイナミック代替構文を使用して、ポートレット初期設定記述子の値を表すこともできます。 この例は、ポートレット初期設定値の代わりに、Stringスコープパスの値を使用します。
... <text-color> {$String/red} </text-color> ...
スコープパスAPIを使用して、アプリケーションコード、たとえば、Java、JSP、またはServlet アクティビティから直接スコープパスにアクセスできます。 スコープパスにアクセスするための主なクラスは、次のとおりです。
パッケージおよびクラス |
提供メソッド |
---|---|
スコープパスのインスタンスにアクセスするためのメソッド |
|
スコープパスインスタンスを取得するためのcreateScopedPathメソッド |
注記: スコープパスおよびXPathナビゲータは、機能的には若干異なりますが、本質的には同じツールです。 この節では、スコープパスナビゲータについて説明しますが、 この説明は、実質上、XPathナビゲータにも適用されます。
スコープパスナビゲータは、ページフローおよびワークフローモデラーから使用できます。これを使用すると、ツリービューを使用してスコープパスを選択できます。 事前定義されたスコープパスのいずれかを選択すると、スコープパスナビゲータが別のウィンドウに表示されます。
ツリービューは、XPath式を作成する機能を提供します。
スコープパスによっては、XPath式をサポートしています(事前定義されたスコープを参照)。 スコープパスナビゲータは、W3Cにより定義されているように、いくつかのXPath式をサポートしています。 使用法の詳細については、http://www.w3.org/TR/xpath20/を参照してください。
重要: スコープパスナビゲータが、各スコープパス式に返すことができるドキュメント要素は1つだけです。 複数の要素を指定するXPath関数を使用する場合、グループの最初の要素だけが返されます。
入力時に式を自動的に評価する場合[リアルタイム]を選択し、手動で評価する場合[評価]を選択します。 評価結果がウィンドウ下部に表示されます。
注記: 以下で説明するXPath機能を使用しなくても、式をエディタフィールドに入力できます。
ツリービューまたはエディタを使用してXMLドキュメントに移動し、有効なXPathデリミタを入力します。 有効なデリミタは、スラッシュ /、開始角括弧[、または開始丸括弧(です。ナビゲータは、デリミタ入力時に使用できる要素および関数のリストをドロップダウンリストに表示されます。たとえば、次のとおりです。
アイテムを追加するには、そのアイテムをドロップダウンから選択し、必要に応じて、適切な値を入力します。たとえば、次のとおりです。
ヒント: 要素を右クリックして、他のXML編集機能にアクセスします。 詳細については、 『ユーティリティツール』の XMLエディタに関する章を参照してください。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...