投稿

5月, 2011の投稿を表示しています

Notes 開発者のための XPages SSJS 解説 (3)

イメージ
今回は XPages 開発の JavaScript コーディングで頻繁に出てくる XSP ライブラリとバックエンドライブラリをしっかりと理解したいと思います。

XPages は LotusScript のクラスと同様、オブジェクトにはフロントエンドの文書/ビューを扱う XSP ライブラリとバックエンドの文書/ビューを扱う Domino ライブラリがあります。

Domino ライブラリを使用して、現在ページ表示しているデータベースとは違う他のデータベースを参照したり、今ページ上で開いている文書以外の文書にアクセスできます。要は、ユーザーインタフェース(ページ)に見えていないものを扱います。
これに対して、フロントエンドの XSP ライブラリはヘルプで「XSP」、「Xsp」というオブジェクトの名前がついています。。XSP や Xsp という言葉を見つけたら、それはフロントエンドのオブジェクトだと思ってください。
LotusScript クラスでフロントエンドというと「UI」にあたるんですが、考え方は同様です。
ブラウザ中にまさに表示されているページで扱えるものです。Domino 文書をデータソースで使用していれば文書を、Domino ビューをページで表示していればそのビューが XSP オブジェクトとして扱えます。

(補足: ここで「XSP ライブラリ」と「XSP オブジェクト」という言葉を使用していますが、ライブラリはそれぞれのオブジェクトの集まりと理解してください。)


話をグローバルオブジェクトに戻しますが、
ヘルプでのグローバルオブジェクトおよびグローバル関数
currentDocument と dominoDocument1 のそれぞれの説明にこうあります。
currentDocument現行コンテキストで最も近くにある文書を表す NotesXspDocument オブジェクト。dominoDocument1Lotus Domino 文書データソースを表す NotesXspDocument オブジェクト。ちなみに dominoDocument1 は仮の名前で、XPage でデータソースの名前を指定しますが、そのデータソース名です。仮りに皆さんの指定したデータソース名を dominoDocument1 として説明しています。

currentDocument も do…

Notes 開発者のための XPages SSJS 解説 (2)

イメージ
前回は content グローバルオブジェクトを見ましたが、今回からデータベース内の文書などにアクセスするためのオブジェクトを見ていきます。

データベースオブジェクトにアクセするには、「database」オブジェクトを使用します。


まずは、Lotus Domino Designer 8.5 の「グローバルオブジェクトおよびグローバル関数」の章を見てください。
ヘルプには、

database
データソースとして現在使用されている Lotus Domino データベースを表す

とあります。
つまり、「database」は今 XPage を開いてるデータベース自体のオブジェクトということになります。LotusScript で言い換えるとこの「database」グローバルオブジェクトは LotusScript の NotesDatabase クラスが、コーディング中、初期化することなく  XPage の中で使用できるのと同じです。
Dim session As New NotesSession Dim db As NotesDatabase Set db = session.CurrentDatabase 上記のコードのように、LotusScript では現在のデータベースオブジェクトを取得するのに、NotesSession を new して CurrentDatabase で取得していましたが、XPages では直接現在のデータベースを database グローバルオブジェクトからコーディングできます。
そういった観点から LotusScript の NotesUIDatabase クラス がイベントで Source としてすぐ使用できるイメージですが、混同しやすいので、ここでは LotusScript の NotesDatabase と同じようなものだと覚えたほうが得策です。

また、JavaScript でこのオブジェクトを利用する際、
database.<メソッドまたはプロパティ>
の文法になります。メソッドは Domino オブジェクトの下の NotesDatabase オブジェクトのメソッド、プロパティが使用できます。
以下はその使用例のコードです。
database.getServer() //サーバー名の取得 database.getTitle() …

Notes 開発者のための XPages SSJS 解説 (1)

イメージ
4 月から今月にわたり、大阪、東京、名古屋で「Teamstudio Bootcamp for XPages」ワークショップで XPages 開発のハンズオンを実施させていただきました。ご参加いただいた皆さんには重ねて御礼申し上げます。

そのハンズオンで、サーバーサイド JavaScript (SSJS) が今ひとつよくわからないという感想をいただくことがありました。とかくハンズオンではコードの入力に忙しく、SSJS の十分な理解を得られないまま進めざるをえない状況に陥りがちです。ご参加いただいた方は、ほとんどがすでにLotusScript での開発経験がある方なので、SSJS をまったく新しい言語として覚えるよりは、LotusScript との違いや類似点に焦点をあててご説明したほうがよりご理解いただけることがわかってきました。今回は、その勘所を皆さんにもご紹介したいと思います。

私が LotusScript を覚えたときは、皆さんもそうだと思いますが、とにもかくにも Designer ヘルプをよく見ました。全てを覚えるというよりは、出てきたコードをその都度ヘルプと照らし合わせながら、またサンプルを見ながら理解するのがもっとも効率的だと思っています。ヘルプの見方を覚えるだけで、急に全容がわかるということも期待できます。

今回は「IBM Lotus Domino and Notes Information Center」のヘルプを使います。このサイトは、Domino Designer にインストールされているヘルプよりも最新の情報が最新の状態で入手できるのでブックマークしておくと便利です。


JavaScript の構文や書き方よりは、むしろグローバルオブジェクト、Domino オブジェクト、XSP オブジェクトの理解していただきたいと思います。
グローバルオブジェクト ヘルプには「グローバルオブジェクトは、サーバーサイドスクリプトへのエントリポイントを提供します。 グローバルオブジェクトの名前を入力すると、そのグローバルオブジェクトがインスタンス化されます。」とあります。 簡単な言葉で言えば、XPage 内でいつでもどこでも使えるオブジェクト。 スコープ変数を扱う、「applicationScope」、「requestScope」、「sessionScope」、「viewSc…