...

Lotus Notes JavaScript(SSJS) © 2012 IBM Corporation ®

by user

on
Category: Documents
332

views

Report

Comments

Transcript

Lotus Notes JavaScript(SSJS) © 2012 IBM Corporation ®
®
Lotus Notes開発者向けXPagesのサーバーサイド
JavaScript(SSJS)ガイド
© 2012 IBM Corporation
IBM Software Group | Lotus software
当ガイドの内容
 Lotus Notes/Dominoのアプリケーションを式言語/LotusScript(以下、LS)を用
いて開発してきた開発者向けに、XPagesのサーバーサイドJavascript(以下、
SSJS)の理解を助けることを目的とする
– 目的
•
•
SSJSの概要の紹介
SSJSの開発、またはSSJSのサンプルコードを参照する際の理解の補佐
– 対象
•
Lotus Notes/Dominoのアプリケーション開発に熟練し、XPages/Webの開発経験
は少ない開発者
– 記載内容
•
•
•
SSJSのコーディング方法
LS/式言語とSSJSの差異
SSJSでコーディングを行うときの考慮点
2
IBM Software Group | Lotus software
目次
– Notes開発者向けXPagesのサーバーサイドJavaScript(SSJS)解説
•
SSJS概説
– “サーバーサイド”とは
– SSJSの概要
– SSJSの制約
•
SSJSの主要なコンポーネント
– グローバルオブジェクト
> スコープ変数
– XSPライブラリ
– Dominoライブラリ
– グローバル関数
– @関数(SSJS)
– 参考.SSJSのその他のライブラリ
•
•
•
SSJSでJava/JSFのオブジェクトを扱う
SSJSのデバッグ
エラーハンドリング
3
IBM Software Group | Lotus software
“サーバーサイド”とは①
SSJS概説
 “サーバーサイド”とは
– Webサーバー側で処理を行うこと
 サーバーサイドスクリプトとは
– Webサーバー側で動作するプログラミング言語のこと
 Webのプログラミングでは、サーバー側で動作するプログラムとクライアント側
で動作するプログラムの両方が必要
•
実行環境が異なるため、サーバー/クライアントそれぞれのプログラムで利用され
る技術は異なる
Webアプリケーション
Flash
ブラウザ
JavaScript
(Jquery/proto
type.js/Dojo
など)
サーバー
サイドJava
ASP.
NET
PHP
Webサーバー
Python
4
IBM Software Group | Lotus software
“サーバーサイド”とは②
SSJS概説
 Lotus Notesのネイティブアプリケーションの場合、サーバーサイドとクライアン
トサイドで同様の言語でコーディング可能
– クライアントとサーバーで同様の実行環境が用意されているため
Notesネイティブアプリケーショ
ン
Lotus
Script
式言語
Lotus Notesクライアント
Lotus
Script
式言語
Lotus Dominoサーバー
 XPagesの場合は、他のWebアプリケーションと同様に、サーバーサイドとクラ
イアントサイドで異なる技術を用いて開発する必要がある
– XPagesでサーバーサイドに使用する言語が”サーバーサイドJavaScript”
XPages
JavaScript(
Dojo含む)
ブラウザ
サーバーサイド
JavaScript
(SSJS)
Lotus Domino Webサーバー
5
IBM Software Group | Lotus software
参考. XPagesのサーバーサイドとクライアントサイドの違い
使用する言語
クライアントサイド
サーバーサイド
・JavaScript
サーバーサイドJavaScript
・ブラウザにDLしたJavaScript
ライブラリ
Dojoなど
UIに関する操作
可
不可
使用可能なデータ
・ブラウザにダウンロードした
データ
・ブラウザから送信された
データ
・Webサービスから動的に取
得するデータ
・サーバーに保持している
データ
6
IBM Software Group | Lotus software
SSJSの概要
SSJS概説
 XPagesのSSJSとは
– 前述のとおり、Lotus Domino Webサーバー上で動作するサーバーサイドスクリプト
– 主に下記を用いてコーディングする
•
•
•
SSJS独自のライブラリ
LSのバックエンドクラスと同等のライブラリ
@関数(SSJS)
•
Javaのオブジェクト(後述)
– @関数(SSJS)は式言語の@関数とは異なる(後述)
> 以後、当資料では式言語の@関数を「@関数(式言語)」、SSJSの@関数を「@関数(SSJS)」と記述す
る
– 文法/ビルドインオブジェクト(配列など)のみJavaScriptを使用すると考えたほうがわ
かりやすい
– “サーバーサイドJavaScript”自体はXPages特有のものではない
•
他に、node.js/Rhino/Aptana Jaxerなどがある
7
IBM Software Group | Lotus software
SSJSの制約
SSJS概説
 サーバーサイドで動作するため、 BOM(Browser Object model)※1のオブジェク
トは使用できない
 XPagesではhtml/DOM(Document Object Model)※2はレンダリング時のみ生成
されるため、SSJSでDOMは扱えない
 上記の制約のため、既存のJavaScriptライブラリをインポートしても動作しない
ことが多い
 サーバサイドとクライアントサイドで共通のロジックは使用できない
– 設計要素のスクリプトライブラリの種類も異なる
•
•
クライアントサイド:JavaScript
サーバーサイド:サーバー JavaScript
※クライアントサイドのスクリプトライブラリをSSJSにインポートすることはできない
※1 ブラウザ構成要素のオブジェクト(windowやdocumentなど)
※2 HTML,XMLでマークアップされた文書をJavaScriptのオブジェクトとして扱う仕様
8
IBM Software Group | Lotus software
参考.なぜJavaScriptなのか?
SSJS概説
 開発経緯
– Lotus Notes/Dominoと同様のRADをJ2EE上で実現するモデルで開発され
たテクノロジーを援用
•
「IBM Lotus Workplace Designer(EoS)」/「IBM Lotus Component Designer」の製
品で採用されたテクノロジー
参考.XPages:history
http://en.wikipedia.org/wiki/XPages#History
 サーバサイドJavaScriptのメリット
– Javaとの親和性
– JavaScriptのデータ形式であるJSONとの親和性
– 複数言語を使用せずにすむ
•
現状、どのようなWebアプリケーションでもクライアントサイドでJavaScriptの使用は
必須
9
IBM Software Group | Lotus software
SSJSの主要なコンポーネント
SSJSの主要なコンポーネント
 SSJSは下記の特殊なオブジェクトとライブラリ群/関数で構成される
– グローバルオブジェクト
•
•
プログラムのどこからでも参照可能なオブジェクト
各ライブラリへのエントリポイントや、ページを超えて共有する変数を提供
– XSPライブラリ
•
現在表示しているXPage※1やブラウザコンテキスト(ブラウザやログインユーザーの情報など)へのアクセ
スを提供
– Dominoライブラリ
•
LSのバックエンドクラスへのアクセスを提供
– グローバル関数
•
プログラムのどこからでも呼び出し可能な関数
– @関数(SSJS)
•
•
Lotus Notes/Domino上の@関数(式言語)をエミュレートする
SSJS内に直接記述する
※1 XPageはXPagesのページを表す単一の設計要素。XPages(Webアプリ開発技術の総称)とはまったく異なるので注意。
10
IBM Software Group | Lotus software
グローバルオブジェクト
SSJSの主要なコンポーネント
>グローバルオブジェクト
 グローバルオブジェクトとは
– プログラムのどこからでも参照可能なオブジェクト
•
LSの宣言(Dim/New/Set)にあたる操作を行わなくても、直接メソッドをコールしたり、プロパ
ティにアクセスできる
 SSJSでは、各ライブラリのへエントリポイントとなるグローバルオブジェクトが用意され
ている
– XSPライブラリのグローバルオブジェクト
•
context/dominoDocument1(NotesXspDocument)
•
database/session
•
facesContextなど
•
applicationScope/sessionScope/requestScope/viewScope
– Dominoライブラリのグローバルオブジェクト
– JSFのオブジェクト
– スコープ変数(ライブラリではなく変数、後述)
 上記のグローバルオブジェクト名はすべて予約語(dominoDocument1を除く、後述)
11
IBM Software Group | Lotus software
SSJSの主要なコンポーネント
>グローバルオブジェクト
LSとSSJSのエントリポイントの比較
 LSとSSJSのエントリポイントの違い
– LSではエントリポイントになる任意のオブジェクト名を定義し、あらかじめ
Newを用いて宣言する必要がある
•
•
Dim session as New NotesSession
Dim ws as New NotesUIWorkspace
– SSJSではLSの上記Newメソッドにあたるメソッドはなく、直接エントリポイント
となるグローバルオブジェクトへアクセスする
•
•
オブジェクト名は予約語
例.現在のユーザーの階層名を取得するロジック
LS
Dim session As New NotesSession
Dim user As String
user = session.EffectiveUserName
SSJS
//session(予約語)がNotesSessionクラスの
//グローバルオブジェクト
var user = session. getEffectiveUserName();
12
IBM Software Group | Lotus software
スコープ変数①
SSJSの主要なコンポーネント
>グローバルオブジェクト
 スコープ変数を使うと、ページ内、またはページを超えて値を保持することが
できる
 スコープ変数の種類
•
•
applicationScope・・・アプリケーションの範囲。アプリケーションが存在する限り有
効。異なるセッション間でも保存される
sessionScope・・・セッションの範囲。1回のセッションを通じて有効。異なるセッショ
ン間では保存されない
※sessionScopeはアクセスしているDBに保存されるため、複数DBで共有はできない。
•
•
requestScope・・・要求の範囲。1回のリクエスト(サーバーへのサブミットとそのレ
スポンス)の間のみ有効
viewScope・・・表示の範囲。1つのページ内でのみ有効。ページを遷移すると無効
となる
13
IBM Software Group | Lotus software
SSJSの主要なコンポーネント
>グローバルオブジェクト
スコープ変数②
 使用方法
– [使用するスコープ変数] + “.”+“任意の変数名”]という形式で使用する。
※事前に変数名の定義/宣言などを行う必要はない
•
例.値を格納する場合
var userName = "IBM User";
sessionScope.name = userName;
•
例.値を呼び出す場合
var userName = sessionScope.name;
14
IBM Software Group | Lotus software
XSPライブラリ
SSJSの主要なコンポーネント
>XSPライブラリ
 現在表示しているXPageやブラウザコンテキストにアクセスする6つのクラス
– DirectoryUser
•
ログイン中のユーザ情報を取得する。
– NotesXspDocument
•
XPageのデータソース(文書)へのアクセスを提供する。
– NotesXspViewEntry
•
XPage上のビュー/表などの行のデータへのアクセスを提供する。
– XSPContext
•
現在のコンテキストを表す。ページ遷移や他のオブジェクトへのアクセスポイント。
– XSPUrl
•
URL を表す。
– XSPUserAgent
•
ブラウザの情報へのアクセスを提供する。
15
IBM Software Group | Lotus software
XSPライブラリの主なクラスとアクセス方法①
SSJSの主要なコンポーネント
>XSPライブラリ
 NotesXspDocument
•
•
データソースで指定した文書へのアクセスを提供
オブジェクト名は、[プロパティ]-[データソース]で指定した名前
– デフォルトではdocument1
– グローバルオブジェクトであるため直接オブジェクト名で呼べる
•
使用できるメソッド/プロパティはNotesDocumentクラスに近い
– 主なメソッド・・・getItemValue/replaceItemValue/getNoteID/saveなど
– 主なプロパティ・・・isNewNote/isResponse/isEditable/hasItemなど
•
DominoライブラリのNotesDocumentオブジェクトへのアクセスを提供
– getDocumentメソッドで取得する(後述)
16
IBM Software Group | Lotus software
XSPライブラリの主なクラスとアクセス方法②
SSJSの主要なコンポーネント
>XSPライブラリ
 XSPContext
– 現在へのコンテキストへのアクセス
– オブジェクト名は”context”(予約語)
•
グローバルオブジェクトであるため直接オブジェクト名で呼べる
– ページを遷移するメソッドや他のXSPライブラリへのアクセスポイントを提供
– 主なメソッドの例
•
•
•
•
•
redirectToPageメソッド・・・新規XPageを開く
reloadPageメソッド・・・ページを再ロードする
getUserメソッド・・・現在のユーザーをDirectoryUserオブジェクトとして取得する
getUserAgentメソッド・・・XSPUserAgentオブジェクトを取得する
getURLメソッド・・・XSPUrlオブジェクトを取得する
 DirectoryUser
– 現在のユーザー情報へのアクセス
– 主なメソッドの例
•
getRolesメソッド・・・現在のユーザーのロールを取得する
※SSJSで直にロールを取得できるメソッドは上記のみ
※戻り値はJavaのjava.util.vector型(後述)
17
IBM Software Group | Lotus software
XSPライブラリの主なクラスとアクセス方法③
SSJSの主要なコンポーネント
>XSPライブラリ
 NotesXSPViewEntry
– 現在表示しているXPageのビューコントロール/繰り返しコントロール/データ
表コントロールの行へのアクセスを提供
•
データソースが”Dominoビュー”の場合のみ
– オブジェクト名はプロパティの”var”に指定した名前(コレクション名)
•
指定する箇所は次ページ参照
– 主なメソッド
•
•
getColumnValue・・・列のプログラム名を指定し、ビューエントリ内の列の値を取得
getDocument・・・ビューエントリに関連付けられた文書を取得
– ビュー/繰り返しコントロール/データ表のコンテンツを書き出すために使用
される
•
サンプルコード 『NotesXSPViewEntry sample JavaScript code for XPages』
http://goo.gl/NMFPP
18
IBM Software Group | Lotus software
参考.NotesXSPViewEntryのオブジェクト名の指定
SSJSの主要なコンポーネント
>XSPライブラリ
 下記のいずれかから指定する
•
ビューコントロール/繰り返しコントロール/データ表の場合
– [プロパティ]-[すべてのプロパティ]-[データ]-[var]
•
繰り返しコントロール/データ表コントロールの場合
– [繰り返し/データ表]-[オプション]-[コレクション名]
19
IBM Software Group | Lotus software
参考.XSPライブラリを使用したSSJSサンプル
SSJSの主要なコンポーネント
>XSPライブラリ
 現在のユーザー名とブラウザ名を取得し、文書に保存するスクリプト
//現在のユーザー名をDirectoryUserオブジェクトから取得する
//グローバルオブジェクトであるcontext(XSPContextオブジェクト)は直接オブジェクト名で呼べる
var loginUser = context.getUser();
var loginUserName = loginUser.getFullName();
//現在の使用されているブラウザの名前を取得する
var browser = context.getUserAgent().getBrowser();
//文書に値をセットする
//グローバルオブジェクトであるdocument1(NotesXSPDocument)は直接オブジェクト名で呼べる
//”Browser”フィールドへブラウザの共通名をセット
document1.replaceItemValue("Browser",browser);
//”UserFullName”フィールドへブラウザの共通名をセット
document1.replaceItemValue("UserFullName",loginUserName);
//現在の文書を保存する
document1.save();
//home.xspへリダイレクトする
context.redirectToPage("home.xsp");
20
IBM Software Group | Lotus software
SSJSの主要なコンポーネント
>Dominoライブラリ
Dominoライブラリ
 LSのバックエンドクラスへのアクセスを提供
– 実際には、SSJSのDominoライブラリはLotus Notes/DominoのJavaのクラス
をコールしている
•
•
SSJSのアクセス順序
SSJS
Lotus Domino
Javaクラス
LotusScript
Back engine
Lotus Domino
のオブジェクト
参考.LSのアクセス順序
LS
LotusScript
Back engine
Lotus Domino
のオブジェクト
– Javaクラスと同様のこと実装可能であるとともに、同様の考慮点がある
•
Dominoライブラリのオブジェクトはrecycle()メソッドでメモリを解放することを推奨
(詳細は後述)
21
IBM Software Group | Lotus software
LSとSSJSのクラスの差異
SSJSの主要なコンポーネント
>Dominoライブラリ
 DominoライブラリとLSのクラスと比較した場合の差異は下記
– LSの77クラス中、SSJSで使用できるクラスは48クラス
•
SSJSで使用できないクラス
– フロントエンドのクラス
> NotesUIWorkspace、NotesUIDocument、NotesUIVIew、NotesUIDatabase、NotesUISchedulerの5ク
ラス
> NotesTimerクラス
– DXL(Domino XML Language)に関するクラス
> NotesDOMNode、NotesXMLProcessor, NotesDOMParserクラスなど23クラス
※SSJSでは、DominoライブラリにNotesDxlExporter クラス/NotesDxlImporterクラスのみがある
※SSJSのDOMライブラリは使用できない(後述)
•
SSJS独自のクラス
– NotesAgentContextクラス
> 実行中のエージェントの環境を表す。
– NotesBaseクラス
> recycleメソッドのみ提供
無条件にオブジェクトを破棄し、そのメモリをシステムに返す。
22
IBM Software Group | Lotus software
LSとSSJSのメソッド/プロパティの差異①
SSJSの主要なコンポーネント
>Dominoライブラリ
 メソッド/プロパティのほとんどが使用可能
•
•
例1.LSのNotesDocumentクラスの77のメソッド・プロパティのうち、SSJSでは74が使用可能
例2.LSのNotesDatabaseクラスの109のメソッド・プロパティのうち、SSJSでは101が使用可能
– 使用できないメソッドがあったとしても基本的に代替の手段は用意されている
 まったく同一ではないため、都度ヘルプを確認する必要あり
 LSとSSJSの主な差異
•
•
•
Newメソッドがない(後述)
NotesDatabaseクラスのUnprocessedDocumentsプロパティがない(対応方法はp33参照)
一部のプロパティ/メソッドの名称が異なる
– Javaのネーミングルールに従うため
– プロパティは先頭に”Is”が追加される場合がある
> 例.LSのNotesDocumentクラスのEncryptedOnSendプロパティはSSJSではIsEncryptedOnSend
– プロパティを取得するメソッド名はget + プロパティ名
> 例. NotesDatabaseクラスのACLプロパティを取得する場合
var acl:NotesACL = database.getACL();
23
IBM Software Group | Lotus software
LSとSSJSのメソッド/プロパティとの差異②
SSJSの主要なコンポーネント
>Dominoライブラリ
– プロパティをセットするメソッド名はset + プロパティ名
> 例. .NotesDocumentクラスのEncryptedOnSendプロパティにtrueをセット
var doc:NotesDocument = document1.getDocument();
doc.setEncryptOnSend(true);
•
Javaクラス独自のメソッド/プロパティを追加
– 例.NotesDatabaseクラスにFTDomainSearchメソッドが追加されている
•
一部のメソッドを異なるクラス/@関数(SSJS)に付け替え
– 例1.LSのNotesDatabaseクラスの下記メソッドは、SSJSでは、 NotesAgentContextクラス
に同様のメソッドがある
> UnprocessedFTSearchメソッド/UnprocessedFTSearchRangeメソッ
ド/UnprocessedSearchメソッド
– 例2.LSのNotesDatabaseクラスのIsDB2プロパティは@関数(SSJS)に@IsDB2がある
24
IBM Software Group | Lotus software
LSとSSJSのgetItemValueメソッドの違い
SSJSの主要なコンポーネント
>Dominoライブラリ
 SSJSではNotesDocumentクラスのgetItemValueメソッドの使用方法が異なる
– LSのGetItemValueメソッドの場合
•
戻り値は文字列/数値/日時値の配列
– SSJSのgetItemValueメソッドの場合
•
戻り値は文字列/数値/日時値のjava.util.Vector型
※javaオブジェクトの扱い方については後述
•
SSJSでは戻り値の型を指定したメソッドをよく使用する
– getItemValueString・・・文字列値を 1 つだけ持つアイテムの値を返す。 もっとも使用頻度
が高い。
– getItemValueDouble・・・数値を 1 つだけ持つアイテムの値を返す。
– getItemValueInteger・・・数値を 1 つだけ持つアイテムの値を返す。
25
IBM Software Group | Lotus software
Dominoライブラリへのアクセス方法①
SSJSの主要なコンポーネント
>Dominoライブラリ
 Dominoライブラリのグローバルオブジェクト
– グローバルオブジェクトであるため、特に宣言などせずにアクセス可能
•
•
•
session・・・現在のLotus Dominoセッション(NotesSessionクラス)。予約語。
database・・・現在のデータベース(NotesDatabaseクラス)。予約語。
view1・・・XPageのデータソースとして指定しているビュー。オブジェクト名はデータ
ソースで指定した名前”view1”がデフォルト(NotesViewクラス)
26
IBM Software Group | Lotus software
Dominoライブラリへのアクセス方法②
SSJSの主要なコンポーネント
>Dominoライブラリ
 現在の文書データソースへのアクセス
– docment1(NotesXspDocument)のgetDocument()メソッドを使用する(p16参
照)
•
•
引数 True・・・XPage上の変更を反映する
引数 False・・・XPage上の変更を反映しない
 その他のDominoライブラリは上記オブジェクトをエントリポイントとし、そのメ
ソッドを使用してアクセスする
– SSJSではLSのNewメソッドに対応するメソッドがないため、上位のオブジェ
クトのcreateメソッドなどを使用する(詳細は次ページ)
27
IBM Software Group | Lotus software
LSのNewメソッドとDominoライブラリのメソッドの対応 SSJSの主要なコンポーネント
>Dominoライブラリ
SSJSで対応するメソッド
LSでNewメソッドを持つクラス
クラス名
メソッド名
NotesACLEntry クラス
NotesACL
createACLEntry
NotesDatabase クラス
NotesSession
getDatabase
NotesDateTime クラス
NotesSession
createDateTime
NotesDbDirectory クラス
NotesSession
getDbDirectory
NotesDocument クラス
NotesDatabase
createDocument
NotesItem クラス
NotesDocument
replaceItemValue
NotesLog クラス
NotesSession
createLog
NotesName クラス
NotesSession
createName
NotesNewsletter クラス
NotesSession
createNewsletter
NotesRegistration クラス
NotesSession
createRegistration
NotesRichTextItem クラス
NotesDocument
createRichTextItem
NotesSession クラス
なし。グローバルオブジェクトであるため最初からアクセス可能。
28
IBM Software Group | Lotus software
LSとSSJSの文法の差異
SSJSの主要なコンポーネント
>Dominoライブラリ
 大文字小文字を区別する
– SSJSでは最初の単語を小文字で始め、以後の単語の先頭文字は大文字(Camel記法)
 宣言
– JavaScriptで宣言は必須ではないが、SSJSでは下記のように宣言することが多い
•
Var 変数名:型
 文末にセミコロン”;”を記述する
 オブジェクトを割り当てる場合に”Set”は必要ない
 メソッドを呼ぶときにCallは必要ない
 一部の比較演算子は異なる
– LSで等価は”=“、SSJSでは等価は”==“
 引数を必要としない場合もメソッド/プロパティの末尾に”()”を記述する
詳細は「Notes/Domino開発者向けJavaScript入門」p9-p19参照
http://www.ibm.com/developerworks/jp/lotus/ldd_tech/2011apr_nd_js.html
29
IBM Software Group | Lotus software
Dominoライブラリを使用する上での考慮点
SSJSの主要なコンポーネント
>Dominoライブラリ
 Dominoライブラリのオブジェクト(Lotus Notesのオブジェクト)を使用した場
合、recycleメソッドで明示的にメモリを解放することを推奨
•
呼び出し方は[オブジェクト名.recycle()]
var doc:NotesDocument =document1.getDocument();
//処理
doc.recycle();
 下記のLotus Notes における Java APIの考慮点がSSJSでもあてはまるため
– JVM では、ガベージコレクションが不要になったオブジェクトを定期的に解
放する
•
そのためJavaのオブジェクトのメモリ管理について意識する必要はない
– Lotus Notes/DominoのオブジェクトはJVMのガベージコレクションの対象外
でメモリが解放されない
•
•
Lotus Notes/Domino のメモリ管理下に置かれるオブジェクトが生成されるため
メモリを解放するためにはrecycle() メソッドの実行が必要
– 詳細は『Lotus Notes/Domino における Java 実行環境とその問題判別につ
いて 』参照
30
IBM Software Group | Lotus software
参考.Dominoライブラリを使用したSSJSサンプル
 Dominoディレクトリのユーザー文書
から現在のユーザーの役職名と会
社名を取得し、現在の文書に保存
するサンプル
※赤字が異なる箇所(大文字小文字の違いを除く)
SSJS
SSJSの主要なコンポーネント
>Dominoライブラリ
参考.LS
Dim session As New NotesSession
Dim ndb As NotesDatabase
Dim nvw As NotesView
Dim ndoc As NotesDocument
Dim loginUsrName As String
Dim nam As NotesName
Dim key As String
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Dim companyname,jobtitle As Variant
var loginUsrName =session. getEffectiveUserName() ;
var nam:NotesName = session.createName(loginUsrName);
Set db = session.CurrentDatabase
var key = nam.getAbbreviated();
loginUsrName = session.EffectiveUserName
//databaseは現在のDBをあらわすグローバルオブジェクト
Set nam = New NotesName(loginUsrName)
var ndb:NotesDatabase = session.getDatabase(database.getServer(),"names.nsf");
key = nam.Abbreviated
var nvw:NotesView = ndb.getView("($Vimpeople)");
var ndoc:NotesDocument = nvw.getDocumentByKey(key,true);
Set ndb = session.getdatabase(db.Server,"names.nsf")
Set nvw = ndb.GetView("($Vimpeople)")
var companyName = ndoc.getItemValue("CompanyName");
Set ndoc = nvw.GetDocumentByKey(key,True)
var jobTitle = ndoc.getItemValue("JobTitle");
companyname = ndoc.GetItemValue("CompanyName")
var doc:NotesDocument = document1.getDocument(true);
jobtitle = ndoc.GetItemValue("JobTitle")
doc.replaceItemValue("KaisyaMei",companyName);
doc.replaceItemValue("YakushokuMei",jobTitle);
Set doc = ws.CurrentDocument.Document
Call doc.ReplaceItemValue("KaisyaMei",companyname)
doc.save(true,true,true);
Call doc.ReplaceItemValue("YakushokuMei",jobtitle)
//Dominoライブラリのオブジェクトは明示的にメモリを解放
nam.recycle();ndb.recycle();nvw.recycle();ndoc.recycle();doc.recycle();
Call doc.Save(True,True,True)
31
IBM Software Group | Lotus software
SSJSの主要なコンポーネント
>グローバル関数
グローバル関数
 プログラムのどこからでも呼び出し可能な関数
 各コントロールへのアクセスする関数などがある
– 主な関数
•
getComponent
– XPage上のコントロールを直接オブジェクトとして取得する
– オブジェクトはsetValue/getValueメソッドを持つため、値の取得/セットが可能
> 例.編集ボックス(inputText1)の値を取得する
var temp = getComponent("inputText1").getValue();
– 詳細な各オブジェクトのプロパティ/メソッドはXPages Extensiblity APIのJavadoc参照
(8.5.2以降)
> ヘルプには記載されていない
> “UI”や”XSP”の接頭辞がついているオブジェクトが各コントロールのオブジェクト
XPages Extensibility API Documentation
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/XPages_Extensibility_API_Documentation
32
IBM Software Group | Lotus software
参考.グローバル関数を使用したサンプル
SSJSの主要なコンポーネント
>グローバル関数
 XPageのビューで選択された文書を取得する例
– LSのエージェントで、NotesDatabaseクラスのUnprocessedDocumentsを使用した場合に該当
※実行時の対象はデフォルトの”すべての選択文書”の場合
– ビューの選択文書を取得するロジック
•
•
①getComponentを用いてビューコントロールをオブジェクトとして取得
②ビューコントロールのメソッドであるgetSelectedIds()を用いて、選択文書のNoteIDを取得
•
③NoteIDをキーに、databaseオブジェクト(NotesDatabaseクラス)から文書を取得する
– 参考.Class UIViewPanel (XPages Extensibility API)
– http://public.dhe.ibm.com/software/dw/lotus/DominoDesigner/JavaDocs/XPagesExtAPI/8.5.2/com/ibm/xsp/component/UIViewPanel.html#getSelectedIds%28%29
参考.Notes/Domino 8.5.1における XPages 新機能
http://www.ibm.com/developerworks/jp/ysl/library/lotus/y-lot-xpages851newfunction/
参考. XPages Tutorial Part 48 : チェックボックスをアクションにリンクさせる
http://notesdominoliaison.blogspot.com/2010/01/xpages-tutorial-part-48.html
var viewPanel=getComponent("viewPanel1");
var docIDs=viewPanel.getSelectedIds();
for(i=0 ; i < docIDs.length ; i++){
var docId = docIDs[i];
var doc:NotesDocument = database.getDocumentByID(docId);
// Process selected documents here
doc.recycle();
}
33
IBM Software Group | Lotus software
@関数(SSJS)
SSJSの主要なコンポーネント
>@関数(SSJS)
 SSJSはLotus Notes/Dominoの@関数(式言語)をエミュレートする
– 基本的に@関数(式言語)と同様の引数/オプションが使用可能
•
特殊な引数/オプションは使用できない(後述)
– @関数(式言語)274個中、@関数(SSJS)で対応する関数は94個
•
主な使用できる関数
–
–
–
–
–
–
ビューの列値取得(@DbColumn)
ビューの検索・値取得(@DbLookup)
条件式(@If)
名前取得・処理(@Name/@UserName)
日時取得・処理(@Now/@Today/@Yesterday/@Year/@Monthなど)
文字列処理(@Right/@RightBack/@Left/@LeftBack/@Middle/@MIddleBack/@Trimなど)
– SSJS独自の関数も追加されている
– @Element/@List/@Null
– 使用できない関数一覧
•
List of Formula Not Supported In XPages
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/List_of_Formula_Not_Supported_In_XPages
34
IBM Software Group | Lotus software
SSJSの主要なコンポーネント
>@関数(SSJS)
利用可能な@関数(SSJS)一覧
@Abs
@Do
@IsNull
@Name
@Sum
@Abstract
@Element
@IsNumber
@NewLine
@Text
@Adjust
@Elements
@IsResponseDoc
@No
@TextToNumber
@AttachmentLengths
@Ends
@IsText
@Now
@TextToTime
@AttachmentModifiedTimes
@Error
@IsTime
@Null
@Time
@AttachmentNames
@Explode
@IsUnavailable
@ProperCase
@Today
@Attachments
@Failure
@Left
@Random
@Tomorrow
@Author
@False
@LeftBack
@Repeat
@Trim
@Begins
@GetField
@Length
@Replace
@True
@Char
@Hour
@List
@ReplaceSubstring
@Unique
@ClientType
@If
@LowerCase
@ReplicaID
@UpperCase
@Contains
@Implode
@Max
@Return
@UserName
@Count
@Integer
@Member
@Right
@Weekday
@Created
@IsAvailable
@Middle
@RightBack
@Word
@Date
@IsDocBeingLoaded
@MiddleBack
@Round
@Year
@Day
@IsDocBeingSaved
@Min
@Second
@Yes
@DbColumn
@IsError
@Minute
@Select
@Yesterday
@DbLookup
@IsMember
@Modified
@SetField
@DbName
@IsNewDoc
@Modulo
@Subset
@DbTitle
@IsNotMember
@Month
@Success
35
IBM Software Group | Lotus software
@関数(式言語)と@関数(SSJS)の差異①
SSJSの主要なコンポーネント
>@関数(SSJS)
 SSJSで使用できない主な@関数(式言語)
– UIを直接操作するもの
•
•
@Command(@Commandで指定できるパラメータは388個)
@PickList/@Prompt/@Dialogboxなど
•
@MailSend/@DocumentUniqueID
•
@SetEnvironment/@Environment/@Version/RegqueryValueなど
•
@GetProfileField/@SetProfileField
– UIにある文書にアクセス/操作するもの
– Notesクライアント環境にアクセスするもの
– プロフィール文書にアクセスするもの
– ブラウザのコンテキストにかかわるもの
•
@URLHistory/@UrlQueryString/@BrowserInfoなど
※補足.ブラウザコンテキストにはSSJSのXSPライブラリを使用する(p15)
算術演算に関するもの
• @Tan/@Signなど
※補足.SSJSのStandardライブラリ、Mathクラスで代替可能
 厳密な傾向はなく、都度ヘルプの確認が必要
– @UserNameは使えるが、@UserRolesは使えない
– @Uniqueは使えるが、@Sortは使えない
36
IBM Software Group | Lotus software
@関数(式言語)と@関数(SSJS)の差異②
SSJSの主要なコンポーネント
>@関数(SSJS)
 特殊なオプションを使用するものは使用できない
– @Contains
•
•
@関数(式言語)では2つの複数値を引数とし、個々の値をすべて比較して判定する
@関数(SSJS)では、2つの引数はストリング。複数値同士の比較はできない。
– @Text
•
format-string(日時構成要素)の指定はできず、ストリング形式に変換するのみ
– 例. @Text(@Now;“D3T1”) の “D3T1”などは指定できない
– @DbColumn/@DbLookup
•
ODBCデータソースは使用できない。
– 引数の数も異なる。@関数(SSJS)では@関数(式言語)の”class:cache”はパラメータにない。
– @Name
•
一部のオプション([HIERARCHYONLY]や[PHRASE]など)が指定できない。
※Lotus Notes/Dominoでよく使用する[CN]/[ABBREVIATE]/[CANONICALIZE]は使用可能
– @Explode
•
@関数(式言語)では日時範囲の指定が可能だが、@関数(SSJS)では不可
– 例. @関数(式言語)では@Explode([2011/10/01 - 2011/10/03])は、範囲を展開し
た”2011/10/01”,”2011/10/02”,2011/10/3”の文字列リストを返す
37
IBM Software Group | Lotus software
@関数(式言語)とSSJSの文法の差異
SSJSの主要なコンポーネント
>@関数(SSJS)
 大文字と小文字を正確に区別する
 パラメータはセミコロンではなくカンマで区切る
 フォーム上では直接フィールド名で値にアクセスできるが、SSJSでは
NotesXSPDocumentクラスを用いて変数の値を取得する
 オプションもストリングであるため""で囲って指定する
 比較演算子の記述
– 式言語で等価は”=“、SSJSでは等価は”==“など
 配列の記述
– 式言語では”:”で区切って記述可能。SSJSではArrayオブジェクトや@List関数を使用
する必要がある
 引数を必要としない場合も”()”の記述が必須
– ()を記述しなくてもスクリプトエディタ上エラーにはならないが、戻り値が下記の固定
の文字列になる
•
“function:IBMJS built-in function”
38
IBM Software Group | Lotus software
SSJSの主要なコンポーネント
>@関数(SSJS)
@関数(SSJS)を使用したSSJSサンプル
 ユーザー名を略称形式で表示する(計算結果フィールドに記述、以下同様)
SSJS
@Text(@Name("[Abbreviate]",@UserName()));
参考.式言語
@Text(@Name([Abbreviate];@UserName))
 Statusフィールドの値に応じて表示する文字列を変更するサンプル
SSJS
var Status=document1.getItemValueString("Status");
@If(
Status=="0","作成中",
Status=="1","承認依頼中",
"");
参考.式言語
@If(
Status="0";"作成中";
Status="1";"承認依頼中";
"")
 Dominoディレクトリの($VIMPeople)ビューの1列目(FullName)を取得する
SSJS
var svrname = session.getServerName();
var dbpath = new Array(svrname,"names.nsf");
@DbColumn(dbpath,"($VIMPeople)",1);
参考.式言語
dbpath := @ServerName:"names.nsf";
@DbColumn("":"";dbpath;"($VIMPeople)";1)
39
IBM Software Group | Lotus software
参考.SSJSのその他のライブラリ
SSJSの主要なコンポーネント
>その他のライブラリ
 Standardライブラリ
– クライアントサイドのJavaScriptのビルトインオブジェクトと同様
•
Array/Boolean/Date/Math/Number/Object/RegExp/String
 Runtimeライブラリ
– 国際化対応のためのクラス群を提供
•
タイムゾーンやロケールの操作など
 DOMライブラリ
– XML Document Object Model 形式の文書を表す
– データストアが XML ベースではないため、現時点(Lotus Notes/Domino 8.5.3)では
使用されていない
 参考.ヘルプ『サーバーサイドのスクリプト』
40
IBM Software Group | Lotus software
SSJSでJava/JSFのオブジェクトを扱う①
SSJSでJava/JSFの
オブジェクトを扱う
 SSJSではJava/JSFの標準のオブジェクトを用いてロジックを記述する場合が
ある
– Java/JSFの標準のオブジェクトはヘルプには記載されていない(詳細は次
項)
– 使用するケース
•
SSJSのXSPライブラリ/Dominoライブラリのメソッドの戻り値が配列の場合
– 戻り値の型はjava.util.Listかjava.util.Vectorになる(扱い方は後述)
•
SSJSのライブラリで行えない処理を行う場合
– グローバルオブジェクトのfacesContextなどを使用する(後述)
 Javaのオブジェクトを直接組み込むことも可能
– ヘルプ『JavaScript への Java の組み込み』参照
41
IBM Software Group | Lotus software
SSJSでJava/JSFのオブジェクトを扱う②
SSJSでJava/JSFの
オブジェクトを扱う
 Lotus Notes/DominoのJava/JSFのJavadocは標準では提供されていない
– Is it possible to get JavaDoc files for Domino Designer Java agents?
https://www-304.ibm.com/support/docview.wss?uid=swg21258816
 Lotus Notes/DominoのJava/JSFのバージョンにあわせ、他から取得・または
生成し、それぞれのJavadocを参照する必要がある
•
Lotus Notes/Domino における Java 実行環境とその問題判別について
http://www-01.ibm.com/support/docview.wss?uid=swg21466201
 当資料では、参考としてオラクル社のJavadocへリンクする
– サポートされるドキュメントではない
42
IBM Software Group | Lotus software
SSJSでjava.util.Listを扱う
SSJSでJava/JSFの
オブジェクトを扱う
 java.util.Listとは
– Javaの順序つきのリストのインターフェース
 SSJSでjava.util.Listが戻り値の型であるメソッド
•
•
DirectoryUserクラスのgetRolesメソッド/getGroupsメソッド
NotesXspDocumentクラスのgetAttachmentListメソッド
– getAttachmentListメソッドの場合、各要素はNotesEmbeddedObject 型
 java.util.Listのメソッドの例
– getメソッド・・・リスト内の指定された位置にある要素を返す
– indexOfメソッド・・・指定された要素がリスト内で最初に検出された位置のインデック
スを返す
– containsメソッド・・・リストに指定の要素がある場合に true を返す
– sizeメソッド・・・ リスト内にある要素の数を返す
– 詳細は下記参照
> http://java.sun.com/javase/ja/6/docs/ja/api/index.html?java/util/List.html
43
IBM Software Group | Lotus software
SSJSでjava.util.Listを使用したサンプル
SSJSでJava/JSFの
オブジェクトを扱う
 ログインユーザーが、”Admin”または”Manager”ロールを持つか否かを判定
するロジック(コントロールの[可視]/[表示]プロパティの[値の計算]に記述)
•
①DirectoryUserクラスのgetRolesメソッドを使用してロールを取得する
– 戻り値の型がjava.util.List
•
② java.util.Listのcontainsメソッドを使用して、”[Manager]”または”Admin”の文字
列を含むかどうかを判定する
– containsメソッド
– http://java.sun.com/javase/ja/6/docs/ja/api/java/util/List.html#contains(java.lang.Obje
ct)
var roleList = context.getUser().getRoles();
roleList.contains("[Manager]") || roleList.contains("[Admin]");
44
IBM Software Group | Lotus software
SSJSでjava.util.Vector型を扱う
SSJSでJava/JSFの
オブジェクトを扱う
 java.util.Vectorとは
– 可変長の配列を実現する
 SSJSでjava.util.Vectorが戻り値の型である主なメソッド
– NotesXspDocumentクラスのgetItemValueメソッド
– NotesDocumentクラスのgetItemValueメソッド
– NotesViewクラスのgetColumnValuesメソッド
– NotesSessionクラスのevaluateメソッド
 java.util.Vectorのメソッド
– java.util.Listインターフェースを実装しているため、 java.util.Listのメソッド(p42)が使用
可能
– 詳細は下記参照
•
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Vector.html
45
IBM Software Group | Lotus software
SSJSでfacesContextを扱う
SSJSでJava/JSFの
オブジェクトを扱う
 facesContextとは
– JSFのオブジェクトで、JSFの現在の状態を保持する。JSFの状態を取得す
るための出発点
•
詳細は下記のJSFのJavaDoc参照
http://docs.oracle.com/cd/E17824_01/dsc_docs/docs/jscreator/apis/jsf/javax/fac
es/context/FacesContext.html
– SSJSでは、 facesContextはグローバルオブジェクトであ
り、”facesContext”は予約語
– SSJSのXSPライブラリやDominoライブラリで行えない処理を行うときなどに
使用する。
•
•
XPage以外のページにリダイレクトする(次項)
JSONを返すWebサービスを実装する(p48)
46
IBM Software Group | Lotus software
SSJSでfacesContextを使用したサンプル①
SSJSでJava/JSFの
オブジェクトを扱う
 XPage以外のページにリダイレクトするロジック
– XSPライブラリの「redirectToPage」メソッドはXPageにリダイレクトする仕様。
XPage以外のページにリダイレクトするにはfacesContextを使用する必要が
ある
– Xpageから”http://www-10.lotus.com/ldd/ddwiki.nsf“にリダイレクトするロ
ジック
•
•
①グローバルオブジェクトのfacesContextを使用する
②他のコンテキストのラッパーである「ExternalContext」を取得
– http://docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/1.2_MR1/docs/api/j
avax/faces/context/ExternalContext.html
•
③ExternalContextのredirectメソッドを使用する
– http://docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/1.2_MR1/docs/api/j
avax/faces/context/ExternalContext.html#redirect(java.lang.String)
var extContext = facesContext.getExternalContext();
extContext.redirect("http://www-10.lotus.com/ldd/ddwiki.nsf");
47
IBM Software Group | Lotus software
参考. SSJSでfacesContextを使用したサンプル②
SSJSでJava/JSFの
オブジェクトを扱う
 JSONでデータを返すWebサービスの作成
– 下記の技術文書参照
•
XPagesでDojoウィジェットを利用する
http://www.ibm.com/developerworks/jp/ysl/library/lotus/y-lot-dojoonxpages/
48
IBM Software Group | Lotus software
参考.その他のJSFのグローバルオブジェクト
SSJSでJava/JSFの
オブジェクトを扱う
 JSF1.2のオブジェクト。保持する値の詳細はヘルプ『グローバルオブジェクトおよびグ
ローバル関数 (JavaScript)』参照
グローバルオブジェクト名
JSFのオブジェクトの型
cookie
com.sun.faces.context.RequestCookieMap オブジェクト
header
com.sun.faces.context.RequestHeaderMap オブジェクト
headerValues
com.sun.faces.context.RequestHeaderValuesMap オブジェクト
initParam
com.sun.faces.context.InitParameterMap オブジェクト
param
com.sun.faces.context.RequestParameterMap オブジェクト
paramValues
com.sun.faces.context.RequestParameterValuesMap オブジェクト
 オブジェクトの型については下記参照
– Mojjarra-2.0.1 com.sun.faces.context
http://www.docjar.com/docs/api/com/sun/faces/context/package-index.html
※MojjarraはJSFの実装のひとつ
※上記もサポートされるドキュメントではない
49
IBM Software Group | Lotus software
SSJSのデバッグ①-エラーページの有効化-
SSJSのデバッグ
 XPagesでは、XPageの出力がエラーで失敗した際に、エラー内容を表示する
機能がある
– この機能が無効の場合、単に「エラー500(Internal Server Error)」ページが
表示される(次項参照)
 XPagesのエラーページの出力を有効にするには
– アプリケーションのプロパティ > XPages タブ > デフォルトのエラーページを
表示にチェックを入れる
50
IBM Software Group | Lotus software
参考.XPagesの標準のエラーページの出力画面
SSJSのデバッグ
 無効時(デフォルト)の例
 有効時の例
51
IBM Software Group | Lotus software
SSJSのデバッグ②-変数/オブジェクトの値の確認-
SSJSのデバッグ
 デバッグのために、変数/オブジェクトの値を確認する方法
– 一時的にXPage上に計算結果フィールドを配置する
•
[プロパティ]-[値]を[JavaScript]とし、確認したい変数の値を記述する
 print
– ストリングをログに書き出す
– 書き出し場所はLotus Dominoサーバーのコンソール(log.nsf)
•
デザイナー上のプレビューで実行した場合、クライアントのlog.nsfに書き出される
52
IBM Software Group | Lotus software
SSJSのデバッグ②
SSJSのデバッグ
 _dump
– オブジェクトのストリング表現をログファイルに書き出す
•
ストリング表現・・・オブジェクトの型と入っている値
– _dumpの出力例.匿名ユーザーでログインしているときに、現在のユーザー名を
NotesSessionクラスのgetEffectiveUserNameメソッドで書き出す
var name = session.getEffectiveUserName();
_dump(name);
– 書き出し結果
– 書き出し場所はprintと同様
53
IBM Software Group | Lotus software
エラーハンドリング①
エラーハンドリング
 try…catchステートメントやthrow ステートメントを使用する
– エラーチェックのサンプル
•
サーバー・サイド XPages JavaScript での単純なエラー・チェック
http://www.ibm.com/developerworks/jp/lotus/library/2011xpages_check/
 エラーハンドリングのロジックを記述する上での考慮点
– LSの”Nothing”/”Empty”はSSJSでは”null”にあたる
•
•
•
JavaScriptで”null”はオブジェクト
LotusScriptで使用するnullに該当するものはSSJSでは存在しない
SSJSの”IsEmpty”は、空ストリング(“”)か否かを判定する
54
IBM Software Group | Lotus software
エラーハンドリング②
エラーハンドリング
 エラーハンドリングのロジックを記述する上での考慮点(続き)
– JavaScriptに”Exit”は存在しない
•
returnで処理を中断できる
– @関数(式言語)ではヌル値と空ストリング(””)は同義
•
SSJSでも同様
– @関数(SSJS)で戻り値の有無を判定する場合、SSJSのnullオブジェクトではなく空ストリン
グ(“”)と比較を行う
– @IsNull()はnull値ではなく、空ストリングと等しいかどうかを判定する
55
IBM Software Group | Lotus software
参考資料
56
IBM Software Group | Lotus software
参考.サーバーサイドJavaScriptの記述箇所
 XPagesでは[イベント]タブで、クライアントサイドで記述するのか、サーバーサ
イドへ記述するのかを選択する
57
IBM Software Group | Lotus software
参考.SSJSのスクリプトエディタ画面
 メソッド/クラスは先読みで表示
– 引数の有無/型/戻り値の型も表示
 [参照]タブの[ライブラリ]を切り替えることで現在アクセス可能なグローバルオブジェクト/
グローバル関数/DOM/Domino/XSP/@関数(SSJS)をすべて参照できる
58
IBM Software Group | Lotus software
参考.XPagesのヘルプ
 Standard版のみ参照可能
 Lotus Domino Designer User Guideの一
部とLotus Domino Designer XPageのリ
ファレンスに記載
59
IBM Software Group | Lotus software
参考.ヘルプ以外の情報源①
 Lotus Notes and Domino Application Development wiki
– XPagesの情報はwikiに多く掲載されている。
•
Notes 開発者のための XPages SSJS 解説
•
SSJSサンプルコード(英語)
http://goo.gl/QHTZ6
– “クラス名” + “sample JavaScript code for XPages ” というタイトルで各クラスのサンプルコードがある
http://goo.gl/qk4Bv
※ページを開いたタイミングでエラーが表示される場合は、各ページをタイトルで検索し
なおしてください
• 日本語のカテゴリ
http://goo.gl/2kg8l
• XPages リンク集
– 各コントロールやOneUIの解説などへのリンク集
http://goo.gl/ZD6sp
• Domino Designer XPages Extension Library(英語)
•
http://goo.gl/engyS
API Documentation(英語)
http://goo.gl/wzqjz
• XPages開発のお供に「Demonstration Application for XPages」
http://goo.gl/cMg2k
60
IBM Software Group | Lotus software
参考.ヘルプ以外の情報源②
 Developer Works Lotus/Notes Domino
– 主にアプリケーション開発の項目に多くのXPagesの情報を掲載
http://www.ibm.com/developerworks/jp/lotus/products/lnd/
– Lotus Domino 8.5.1 を使用した Domino Web アプリケーションの構築
http://goo.gl/Am2fa
– チュートリアル
•
XPages入門
http://www.ibm.com/developerworks/jp/lotus/education/xpages/
•
新人SEが学ぶ XPages
http://goo.gl/S4uwc
•
Lotus Domino Designer での XPages 機能の活用
http://www.ibm.com/developerworks/jp/lotus/education/ls-ddxpages/
61
IBM Software Group | Lotus software
参考.ヘルプ以外の情報源③
 XPages技術者コミュニティー
– ディスカッションやwiki/ファイルなどを共有
http://goo.gl/ApvMS
 XPages.Info
– サンプルアプリの操作が可能。一部のサンプルはDL可能
http://xpages.info/XPagesHome.nsf/DemosJapan.xsp#
 OpenNTF
– http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-8427T9
62
IBM Software Group | Lotus software
参考.ヘルプ以外の情報源④
 テクてく Lotusコミュニティー
– テクてくLotus 技術者夜会の資料を公開。デベロッパー編にはXPagesのハ
ンズオンなどがある
http://goo.gl/XH0mk
 ICS Business Partner Technical Enablement team Japan Blog
– XPagesのTipsや製品の最新情報の提供など
http://goo.gl/uCLNw
 notes/domino liaison
– Teamstudio社のテクニカルディレクター、加藤氏のサイト
•
XPagesのチュートリアル、Tipsなども掲載
http://notesdominoliaison.blogspot.com/
63
IBM Software Group | Lotus software
© IBM Corporation 2012. All Rights Reserved.
ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の目
的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助言を意図したものではなく、またそのような結果を生むものでもありま
せん。本プレゼンテーションに含まれている情報については、完全性と正確性を帰するよう努力しましたが、「現状のまま」提供され、明示または暗示にかか
わらずいかなる保証も伴わないものとします。本プレゼンテーションまたはその他の資料の使用によって、あるいはその他の関連によって、いかなる損害が
生じた場合も、IBMは責任を負わないものとします。 本プレゼンテーションに含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいか
なる保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約の条項を変更することを意図したものでもな
く、またそのような結果を生むものでもありません。
本プレゼンテーションでIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を行っているすべての国でそれらが使用可能であることを
暗示するものではありません。本プレゼンテーションで言及している製品リリース日付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の
決定権をもっていつでも変更できるものとし、いかなる方法においても将来の製品または機能が使用可能になると確約することを意図したものではありませ
ん。本資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上高の向上、またはその他の結果が生じると述べる、または暗示するこ
とを意図したものでも、またそのような結果を生むものでもありません。
パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループットや
パフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、入出力構成、ストレージ構成、および処理されるワークロードなどの考
慮事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではあ
りません。
記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示されたも
のです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。
IBM、IBM ロゴ、ibm.com、Lotus および Lotus Notes、Lotus Dominoは、世界の多くの国で登録されたInternational Business Machines Corporationの商標で
す。
他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。
現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。
他の会社名、製品名およびサービス名などはそれぞれ各社の商標。
64
Fly UP