Skip to main content link. Accesskey S
  • Help
  • HCL Logo
  • HCL Notes and Domino Application Development wiki
  • THIS WIKI IS READ-ONLY. Individual names altered for privacy purposes.
  • HCL Forums and Blogs
  • Home
  • Product Documentation
  • Community Articles
  • Learning Center
  • API Documentation
Search
Community Articles > 日本語 - Japanese > XPages データソース解説 - スコープ
  • Share Show Menu▼
  • Subscribe Show Menu▼

Recent articles by this author

XPages データソース解説 - URL パラメータ

XPages のデータソースとページをアクセスする際の URL パラメータとの関係について解説します。

XPages データソース解説 - スコープ

XPages のデータソースのスコープについて解説します。

XPages データソース解説 - 定義方法

XPages のデータソースの定義方法について解説します。

XPages データソース解説 - 種類

XPages のデータソースの種類について解説します。

XPages データソース解説 - 内部動作

XPages のデータソースの内部動作について解説します。
Community articleXPages データソース解説 - スコープ
Added by ~Martha Brekroflar | Edited by ~Martha Brekroflar on January 12, 2012 | Version 3
  • Actions Show Menu▼
expanded Abstract
collapsed Abstract
XPages のデータソースのスコープについて解説します。
Tags: XPages, データソース
ShowTable of Contents
HideTable of Contents
  • 1 構造的スコープ
  • 2 構造的スコープとデータソース保存動作の関係
    • 2.1 「送信」タイプのボタンコントロールを利用する
    • 2.2 「文書の保存」シンプルアクションを利用する
    • 2.3 「データソースの保存」シンプルアクションを利用する
  • 3 時間的スコープ
    • 3.1 request スコープの場合
    • 3.2 view スコープ (デフォルト) の場合
    • 3.3 session スコープの場合
XPages で定義したデータソースは、ページを構成するコントロールツリーの構造および生存時間に関して、有効範囲のスコープを持ちます。

シリーズ目次:
  • データソースの種類external link
  • データソースの定義方法external link
  • データソースのアクセス方法external link
  • データソースのスコープexternal link
  • データソースとURL パラメータexternal link
  • データソースの内部動作external link

構造的スコープ


ページを構成するコントロールのツリー構造に対して、データソースの有効スコープの基本は、
「定義した場所の内側およびその子孫において有効である」となります。

以下は、XPage 内にネストする2つのパネルを配置し、一番外側の XPage およびその中の2つのパネルの
それぞれのレベルにおいて、Domino 文書タイプのデータソースとそれを参照する計算結果フィールドを配置した例です。


XPageのレベル:
 定義したデータソース: document1
 配置した計算結果フィールド: computedField1

外側パネルのレベル:
 定義したデータソース: document2
 配置した計算結果フィールド: computedField2

内側パネルのレベル:
 定義したデータソース: document3
 配置した計算結果フィールド: computedField3

このような配置において、それぞれの計算結果フィールドにバインド可能なデータソースは以下のようになります。

computedField1: document1
computedField2: document1, document2
computedField3: document1, document2, document3

この関係は、パネルコントロールをビューコントロールやカスタムコントロールに置き換えた場合や、
利用するデータソースのタイプを Domino ビューに置き換えた場合も同様です。

構造的スコープとデータソース保存動作の関係


編集モードの Domino 文書タイプのデータソースを利用している場合、ユーザーはその値を編集、保存することが可能です。

通常、データソースの保存を行う場合には、以下の3つの方法が利用されます。

「送信」タイプのボタンコントロールを利用する


XPage内に「送信」タイプのボタンを配置した場合、ユーザーがそのボタンをクリックするとページ内で定義されている
データソースが自動的に保存されます。

注意する点は、XPage が複数のデータソースを定義していた場合です。「送信」タイプのボタンは、全てのデータソースを
一括して保存します。個別のデータソースを指定して動作することはできません。

「文書の保存」シンプルアクションを利用する


ボタンコントロールやリンクコントロールなどの onclick イベントなどに、「文書の保存」シンプルアクションを指定します。
ユーザーがそれらのコントロールをクリックすると、データソースの保存が行われます。

「文書の保存」シンプルアクションでは、保存する対象のデータソースを明示的に指定することが可能です。
複数のデータソースを定義する XPage 内で、明示的に保存する対象を指定した場合には、指定したデータソースのみが
保存されます。
明示的な指定を行わなかった場合には、グローバル変数である currentDocument が指定されたものとみなされます。
currentDocument に関する詳しい説明は、「データソースの内部動作」external linkの説明を参照してください。

この保存対象データソースの指定の際には、上述のデータソースの構造的スコープが有効である点に注意してください。
例えば上図の例で、「文書の保存」シンプルアクションが割り当てられたボタンコントロールを外側パネルの内側かつ内側パネルの外側に
配置した場合、指定可能なデータソースは、document1 あるいは document2 のみであり、document3 はスコープ外のため
指定することはできません。

「データソースの保存」シンプルアクションを利用する


ボタンコントロールやリンクコントロールなどの onclick イベントなどに、「データソースの保存」シンプルアクションを指定します。
ユーザーがそれらのコントロールをクリックすると、ページ内の全てのデータソースの保存が行われます。
この動作は「送信」タイプのボタンと同様です。

時間的スコープ


データソースのサポートするプロパティのひとつとして、scope プロパティがあります。
このプロパティは「すべてのプロパティ」から指定可能であり、データソースの時間的有効範囲を指定するすることができます。
指定可能なスコープはスコープ変数の種類と同じ以下の4つで、その意味も同等です。
  • application
  • session
  • view
  • request
指定がない場合のデフォルトは view スコープです。

スコープを変更した場合の挙動の変化を、具体的な例を通して見ていきます。

2つの XPage を用意します。
1つめはビューコントロールを配置したページです。文書一覧を表示するためのものです。
Subject 列には「列の値をリンクとして表示する」を指定し、次の2つめの XPage を開くように設定します。

view XPage (全ての文書を列挙するビューを表示する)

2つめは、選択した文書を表示するためのページです。Domino 文書タイプのデータソースを持ち、文書のフィールド値を表示します。
追加で2つのボタンが配置されています。ひとつは view ページに戻るためのもの、
もうひとつは、Domino 文書表示のための表を部分更新して最新の情報を表示させるためのものです。
合わせて、データソースがオープンされたことを確認するために、queryOpenDocument イベントに
JavaScript のロジックも割り当てられています。

form XPage (選択した Domino 文書を表示する)

このような XPage は、Domino アプリケーションを XPage で作成する際の最も基本的な組み合わせです。

このサンプルに対して、以下の操作を順に行います。
  1. view ページをアクセスして文書一覧を表示する
  2. 任意の1つを選択してクリックし、form ページに表示させる
  3. 「更新」ボタンを押して、文書表示を更新する
  4. Notes クライアント等の別クライアントを利用して、現在表示中の文書を裏で更新する
  5. 再度「更新」ボタンを押して、文書表示を更新する
  6. 「戻る」ボタンを押して view ページに戻り、別の文書を選択して form ページに表示させる

データソースのスコープを変えながらこれらの操作を行った結果が以下の表示なります。

操作
request スコープ
view スコープ (デフォルト)
session スコープ
1
2
(queryOpenDocument が発生)

(queryOpenDocument が発生)

(queryOpenDocument が発生)

3
(queryOpenDocument が発生)

5
(queryOpenDocument が発生)

6
(queryOpenDocument が発生)

(queryOpenDocument が発生)


request スコープの場合


データソースは http リクエストのたびに生成と破棄を繰り返します。

form ページの新規ページロード時、部分更新時に関わらず、アクセスがあるたびにデータソースが生成され、
文書のフィールド値が読み込まれています。
そのため、毎回 queryOpenDocument が発生しています。
別クライアントによる裏からの文書更新および view ページ経由での選択文書の切り替え両方に対して、常に最新の
フィールド値が表示されています。

view スコープ (デフォルト) の場合


データソースは新たにページを表示する際に生成され、同じページにとどまる限り破棄されることなく再利用されます。

データソースがオープンされるのは view ページから文書を選択したときのみであり、form ページ内にとどまって
部分更新を繰り返す限りは、データが更新されることはありません。
そのため、form ページ内にとどまっている間に裏から変更が行われても、表示されるフィールド値が更新されることは
ありません。

session スコープの場合


データソースは最初のアクセス時に生成され一旦生成されるとページのリロードに関係なくセッションが続く限り
破棄されることなく再利用されます。

データソースが生成されるのは、view ページで始めて文書を選択して form ページを表示させたときのみであり、
それ以降ページを遷移して選択を変更しても、作成し直されることはありません。
そのため、裏から文書を更新したり文書選択を変更したりしても、form ページに表示されるフィールド値が変化することは
ありません。


以上のように、データソースのスコープにより生成、破棄されるタイミングが変化し、そこから取得されるフィールド値も
異なったものになります。

データソースの新規生成には Java オブジェクトの生成および元となった Domino 文書やビューのオープンとデータの
読み込みなどの操作が必要であり、XPage アプリケーションのパフォーマンスに影響します。
そのため、アプリケーションが実現しなければいけない機能の内容によって、最適なものを選択します。

別クライアントによる裏からの更新も含めて、常に最新の情報を入手する必要がある場合には request スコープを利用します。
但し、HTTP リクエストごとにデータソースの生成と破棄を繰り返すため、一番重い処理となります。

別ページに遷移したのち元のページに戻ってきた際にも、前回利用していたデータソースの値を保持しておく必要がある場合には
session スコープを利用します。生成と破棄が最小限なため、一番軽い処理となります。

  • Actions Show Menu▼


expanded Attachments (0)
collapsed Attachments (0)
Edit the article to add or modify attachments.
expanded Versions (3)
collapsed Versions (3)
Version Comparison     
VersionDateChanged by              Summary of changes
This version (3)Jan 12, 2012, 5:11:07 AM~Martha Brekroflar  Minor Change
1Jan 12, 2012, 3:38:22 AM~Yoshi Froluchekettu  
0Jan 12, 2012, 4:03:29 AM~Yoshi Froluchekettu  
expanded Comments (0)
collapsed Comments (0)
Copy and paste this wiki markup to link to this article from another article in this wiki.
Go ElsewhereStay ConnectedAbout
  • HCL Software
  • HCL Digital Solutions community
  • HCL Software support
  • BlogsDigital Solutions blog
  • Community LinkHCL Software forums and blogs
  • About HCL
  • Privacy
  • Accessibility