第2章

ページフローの操作

このガイドでは、ページフロープロセスを説明し、完全なページフローの例をいくつか示します。この章には、次のトピックが含まれています。

 
Top of page

ページフロープロセスについて

ページフローアプリケーションのコアとなるのは、ページフローモデラーを使用して仮想的に作成するXMLファイル、「プロセス記述子」です。 プロセス記述子の視覚的な表示である「ページフロープロセス」は、分岐する一連のアクティビティやリンクで、ポートレット内で一連のユーザ操作をモデル化します。

ページフロープロセスの記述子は、リソースセット内のpageflow-processフォルダに配置されます。

プロセス オブジェクト   各ページフロープロセスには、プロセスの一般的な設定を総括して定義する「プロセスオブジェクト」と呼ばれるグローバルオブジェクトがあります。

For more information    プロセスに関連付けられたプロパティの設定の詳細については、プロセスプロパティを参照してください。

サブフロー(フロー内のフロー)   ページフロープロセスは、別のページフロープロセス内に含めることができます。 この操作を行う場合、埋め込まれるフローは収容フロー内に含まれます。

 
Top of page

ページフローポートレット記述子について

ページフローモデラーは、ページフローを保存するときに、ページフローを「ページフローランナー」にマップするリソースセットに、「ポートレットフラグメント展開記述子」を保存します。 ページフローランナーは、ポートレットとして実装されるJavaクラスです。exteNd Director には、ページフローランナーパッケージが付属しています(com.novell.afw.portal.portlet.pf.pageFlowRunner)。 このクラスは、どのページフローも実行することができます。 自身のページフローランナーを記述することもできますが、必要はありません。

For more information    ポートレットフラグメント展開記述子の詳細情報については、『ポータルガイド』のポートレットフラグメント展開記述子に関する節を参照してください。

各ページフローには個別の記述子があります   すべてのページフローが同じポートレットランナークラスを使用しますが、それぞれのページフローには自身の記述子があります。 記述子には、他のポートレット記述子と区別する固有の名前があります。 記述子に指定された名前は、デフォルトではページフローに指定された名前と同じです。 したがって、ページフローをページフローモデラーに保存すると、同じ名前を持つ2つのXML記述子を持つことになります。 これらの記述子は、次のリソースセット内のさまざまなフォルダに配置されます。

ポータルページでページフローを表示するには、ユーザは(ページフロー自身ではなく)ページフローを実行するポートレットを選択する必要があります。

記述子の内容   ページフローに対して作成された各ポートレットは、識別可能な初期化パラメータ、設定、および初期設定を指定します。 PF_IDと呼ばれる初期化パラメータの1つは、次を実行するページフロープロセス名を指定します。

  <init-param>
    <description>Pageflow ID</description>
    <name>PF_ID</name>
    <value>MyPageflow</value>
  </init-param>

ページフローポートレット記述子の例   次に、MyPageflowと呼ばれるページフローに対して生成されたポートレット記述子の例を示します。

  <portlet xmlns="http://www.novell.com/xml/ns/portlet-fragment" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <description>MyPageflow</description>
     <portlet-name>MyPageflow</portlet-name>
     <display-name>MyPageflow</display-name>
     <portlet-class>com.novell.afw.portal.portlet.pf.pageFlowRunner
     </portlet-class>
     <init-param>
        <description>Pageflow ID</description>
        <name>PF_ID</name>
        <value>MyPageflow</value>
     </init-param>
     <expiration-cache>0</expiration-cache>
     <supports>
        <mime-type>text/html</mime-type>
        <portlet-mode>view</portlet-mode>
     </supports>
     <portlet-info>
        <title>MyPageflow</title>
        <short-title>MyPageflow</short-title>
        <keywords>MyPageflow</keywords>
     </portlet-info>
     <portlet-preferences>
        <preference>
           <name>width</name>
           <value>400px</value>
           <read-only>false</read-only>
           <data-type>String</data-type>
           <required>false</required>
           <multi-valued>false</multi-valued>
        </preference>
        <preference>
           <name>height</name>
           <value>400px</value>
           <read-only>false</read-only>
           <data-type>String</data-type>
           <required>false</required>
           <multi-valued>false</multi-valued>
        </preference>
        <preference>
           <name>Restrict Portlet Size</name>
           <value>false</value>
           <read-only>false</read-only>
           <data-type>Boolean</data-type>
           <required>false</required>
           <multi-valued>false</multi-valued>
        </preference>
     </portlet-preferences>
     <enable-title-bar>1</enable-title-bar>
     <supported-option>Restart</supported-option>
     <supported-option>edit</supported-option>
     <preview-image></preview-image>
     <auto-register enabled="true">
        <registration-id>MyPageflow</registration-id>
     </auto-register>
  </portlet>

ページフローポートレットの初期設定   ページフローのポートレットの記述子には、ポートレットのランタイム表示を制御するために使用できる3つの初期設定があります。

初期設定

説明

ポートレットサイズの制限

<div>タグを、ページフローの要求の結果付近に配置するかどうかを制御します。 これは、フローの幅が広いか大きい場合に役立ちます。

タグは、ポートレットサイズの制限がtrueに設定され、ポートレットが最大化された状態でない場合にのみ、HTMLに追加されます。

注記:   ポートレットサイズの制限の初期設定がtrueに設定されると、ページフローランナーポートレットによりコンテンツタイプが自動的にtext/htmlに設定されます。

ポートレットサイズの制限のデフォルト値は、falseです。

ポートレットサイズの制限の初期設定がtrueに設定された場合に、幅をピクセル単位で指定します。 この初期設定は、ポートレットサイズの制限がfalseに設定された場合は無視されます。

幅のデフォルト値は、400pxです。

高さ

ポートレットサイズの制限の初期設定がtrueに設定された場合に、高さをピクセル単位で指定します。 この初期設定は、ポートレットサイズの制限がfalseに設定された場合は無視されます。

高さのデフォルト値は、400pxです。

 
Top of page

ページフローでのスコープパスの使用

スコープパス」を使用すると、ページフロープロセスからさまざまな種類のデータにアクセスできます。exteNd Directorには、ページフローモデラーから、およびスコープパスAPIを通じて利用可能な事前定義されたスコープパスのグループが含まれます。

データは、非持続的または持続的のいずれかの状態にあります。 データは、単一のアプリケーションセッションで単一のユーザのみが使用できる場合は、非持続的になります。 データは、複数のユーザが使用できる場合、または他のアプリケーションで使用できる可能性がある場合は、持続的になります。 スコープパスのコンテキストでは、パスとは、指定されたスコープ内にあるデータの物理的な場所です。

 
Top of section

ページフローモデラーのスコープパス

ページフローモデラーでは、次の複数の方法でスコープパスを使用します。

 
Top of section

ページフロー内で使用できるスコープ

事前定義されたすべてのスコープをページフロー内で使用できます。

For more information    事前定義されたスコープの使い方の詳細については、『exteNd Directorアプリケーションの開発』のスコープパスに関する章を参照してください。

ページフロー内で使用するスコープパスの例を次に示します。

スコープパス

使用可能なランタイムの値

/Request/prop/User-Agent

Mozilla 6.0 (MSIE 6.0)

/String/true

true

/ResourceSet/html/myHTML.html

myHTML htmlファイルのコンテンツ

/ResourceSet/document-template/employees.xml/emp_list/employees[@id=\x92 12345綻/firstName

IDが12345の従業員名の文字列。 この値は、リソースセット内のemployees.xmlファイルに配置されます。

/Flow/document/InstanceData

Flowスコープのdocumentフォルダに格納されたXML文書のコンテンツ。

制限   ページフロー内では事前定義されたどのスコープも使用できますが、要求および応答スコープには複数の制限が適用されています。詳細については、ページフローおよびポートレットランタイムの動作を参照してください。

 
Top of page

ページフローおよびポートレットランタイムの動作

この節では、ポートレットランタイム動作によるページフローの動作の変更方法について、いくつか説明します。

 
Top of section

スコープパスおよびポートレットランタイムコンテキスト

ページフローが実行される各ポイントでは、ページフローランナーポートレットのランタイム動作が、スコープパスで利用できる情報の種類に直接影響します。 したがって、ページフローで使用するスコープパスを決定する場合に、基本的なポートレットランタイムコンテキストについて知っておく必要があり、要求および応答スコープを使用する場合には特に知っておく必要があります。

要求および応答スコープに適用される制限   要求および応答スコープの操作を行う場合は、次の制限について知っておく必要があります。

その他のすべての要求および応答オプションは、表示(ページフローランナーポートレットのrender()メソッドの実行範囲内)またはアクション(ページフローランナーポートレットのprocessAction()メソッドの実行範囲内)で使用できます。

利用可能なポートレットランタイムコンテキストの決定   次のルールは、ページフロー内のそれぞれの処理段階で適用されるコンテキストを決定します。

 
Top of section

ページフローのパフォーマンスとポートレットのキャッシュ

ページフローランナーポートレットのキャッシュ動作は、ページフローのパフォーマンスに直接影響します。

ページフローのポートレット記述子で期限切れキャッシュを定義できます。

ページフローに関連付けられた表示操作の数を最小限にする場合は、期限切れキャッシュを正の数に設定する必要があります。

期限切れキャッシュを設定する方法を示す例は、次のとおりです。

  <portlet xmlns="http://www.novell.com/xml/ns/portlet-fragment" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <description>MyPageflow</description>
     <portlet-name>MyPageflow</portlet-name>
     <display-name>MyPageflow</display-name>
     <portlet-class>com.novell.afw.portal.portlet.pf.pageFlowRunner</portlet-class>
  <init-param>
        <description>Pageflow ID</description>
        <name>PF_ID</name>
        <value>tdbphonelistPageflow</value>
  </init-param>
  <expiration-cache>1000</expiration-cache>
  ...
  </portlet>

 
Top of page

ページフローのログ出力

次のログは、ページフローのランタイム動作に関する情報を収集する手助けをします。

ログ

説明

PageFlowLog

すべてのページフローに共通する情報をログ記録します。

PageFlowFormLog

ページフローに関連付けられたXForms処理に関連する情報をログ記録します。

これらのログに関連付けられた設定を変更する場合、ページフローサブシステムの config.xmlファイルを編集できます。

たとえば、アプリケーションで実行しているページフローに関する情報をより多く収集するには、これらのログのログ出力レベルを3から5に増やす必要があります。

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE properties PUBLIC "-//SilverStream Software, LLC//DTD Framework Config XML 3.0//EN" "framework-config_3_0.dtd">
   <properties>
      <property>
          <key>PageflowService/engine-id</key>
          <value>engine-id</value>
      </property>
  	 ...
  	 <property>
          <key>PageFlowLog.LoggingLevel</key>
          <value>5</value>
      </property>
      <property>
          <key>PageFlowLog.LogFieldSeparator</key>
          <value>|</value>
      </property>
      <property>
          <key>PageFlowLog.LoggingProvider</key>
  	 	 <value>com.sssw.fw.log.EboStandardOutLoggingProvider</value>
      </property>
      <property>
          <key>PageFlowFormLog.LoggingLevel</key>
          <value>5</value>
      </property>
      <property>
          <key>PageFlowFormLog.LogFieldSeparator</key>
          <value>|</value>
      </property>
      <property>
          <key>PageFlowFormLog.LoggingProvider</key>
  	 	 <value>com.sssw.fw.log.EboStandardOutLoggingProvider</value>
      </property>
  	 ...
  </properties>

注記:   Director Administration Consoleでログ出力レベルを変更することもできます。

 
Top of page

この節では、基本的なページフローの概念を表すいくつかの例を示します。

 
Top of section

例1: HTMLアクティビティを使用した単純なフロー

これは、単純なリンクに接続された2つのHTMLアクティビティが後続する、必須のモードアクティビティを表す単純なページフローです。 HTMLアクティビティは、ユーザに静的ページを表示するプレゼンテーションアクティビティです。

Example1

 
Top of section

例2: リンク式を使用したフロー

この例は、ページフロー内でナビゲーションパスを制御するために、どのようにリンク式を使用できるかを表しています。 リンク2およびリンク3の式により、ユーザがHTML1でクリックしたボタンが確定します。クリックされたボタンによって、HTML2またはHTML3が表示されます。

Example2

 
Top of section

例3: システムアクティビティを使用したフロー

次のフローは、システムアクティビティであるXSLアクティビティを使用する例を表しています。 XSLアクティビティ1は、いくつかのXMLインスタンスデータを変換します。 結果のHTML出力は、HTML1への入力として使用されます。

XSLアクティビティは、システムアクティビティであるため、ユーザからは見えません。 このフローが開始されると、ユーザにはHTMLページのみが表示されます。

Example3

 
Top of section

例4: WebサービスおよびXHTMLフォーム

このフローには、システムアクティビティの別の例である、Webサービスアクティビティが含まれます。 このアクティビティは、株式相場を表示するWebサービスを起動します。 Webサービスが起動される前に、ユーザは、フォームアクティビティに関連付けられたXHTMLフォームで株式銘柄を指定します。 Webサービスが処理を終了すると、2番目のフォームアクティビティが相場の結果を表示します。 ブラウザの更新を処理するため、このフローにはチェックポイントアクティビティが含まれます。 更新が発生するたびに、フローは相場チェックポイントアクティビティを返し、そのポイントから続行されます。

Example4

例外アクティビティもこのフローに追加され、ランタイムに発生する可能性のある例外を処理します。 たとえば、呼び出されているWebサービスが何らかの原因で利用できない場合、例外アクティビティが制御します。 このアクティビティは、ユーザに役立つメッセージを表示するDisplay ExceptionというHTMLアクティビティに処理を転送します。

また、このフローには、「スマートリンク」も使用されています。 スマートリンクは、多数のアクティビティを共通のアクティビティにリンクする必要がある場合に、ページフロー内の複雑さ軽減します。 この例では、Help HTMLアクティビティには、ランタイムに生成されたダイナミックリンクによってアクセスできます。

 
Top of section

例5: データベースのページフロー

この例は、単一のテーブルにアクセスするために使用される、典型的なデータベースページフローを表しています。 これには、ユーザが検索条件を入力し検索結果を表示できる、複数のデータベースアクティビティとフォームが含まれます。 また、ユーザが挿入、更新、および削除を実行できるようにするアクティビティとフォームも含まれます。

すべてのデータベースページフロープロセスには、データベースのアクセスに必要なすべての情報を提供するData Setオブジェクトが含まれます。

DBPageFlow1

このフローは、データベースページフローウィザードにより生成されました。

For more information    データベースページフローウィザードの詳細については、を参照してください。



Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.  more ...