View
2
Download
0
Category
Preview:
Citation preview
IBM Software Group
®
Lotus Domino XML 活用の基礎!
2004/12/01日本・アイ・ビー・エム株式会社ソフトウェア事業ソフトウエア・テクニカルセールス
IBM Software Group | Lotus software
2
特記事項本資料の記載内容は、正式な IBM のテストやレビューを受けておりません。内容について、できる限り正確を期すよう努めてはおりますが、いかなる明示または暗黙の保証も責任も負いかねます。本資料の情報は、使用先の責任において使用されるべきものであることを、あらかじめご了承ください。掲載情報は不定期に変更されることもあります。他のメディア等に無断で転載する事はご遠慮ください。本資料の著作権は日本アイ・ビー・エムにあります。非営利目的の個人利用の場合において、自由に使用してもかまいませんが、営利目的の使用は禁止させていただきます。IBM、AIX、WebSphere、は IBM Corporation の商標。Lotus、Lotus Domino、Lotus Notes、Lotus Workplace Messaging、Lotus Enterprise Integrator、Lotus Enterprise Script Builder、Lotus Domino Unified Communications Service、Lotus Instant Messaging/Web Conferencing、Lotus Team Workplace、Lotus Workplace Team Collaboration、Lotus Learning Management System、Lotus Virtual Classroom、Lotus LearningSpace、Lotus Workplace Collaborative Learning、Lotus Domino Document Manager、Lotus Discovery Server、Lotus Extended Search、Lotus Workplace Web Content Management、Lotus Workflow、は IBM-Lotus の商標。
その他、記載された社名および製品名は、それぞれ各社の商標または登録商標です。
IBM Software Group | Lotus software
3
Agenda
Domino XML の概要Domino XML で見栄えの良い Lotus Domino Webアプリケーションを作成するデータ交換のために XML を利用した Lotus Domino Webアプリケーションを作成するフォームで XML を利用するサーバー・サイドで XML の生成を行う付録:用語集
IBM Software Group | Lotus software
4
Domino XML Language (DXL)とは
XML フォーマットで記述された Lotus Domino データベース構造を表すために設計された言語。Lotus Notes/Domino R5 から利用可能 (注:本書の内容は Lotus Notes/Domino 6.x を基にしています。)DXL のスキーマ言語には DTD を使用(Domino DTD)。<DominoDirectory>¥xmlschemas¥ に定義。
IBM Software Group | Lotus software
5
どのように DXL を利用できるのか
ブラウザーに Lotus Domino のデータを渡し、XSLやDHTML/Javascript/CSS と組み合わせてアプリケーションを作成する。別システムとのデータ交換に利用する
IBM Software Group | Lotus software
6
Lotus Domino で XML のアプリケーションを作る利点
Lotus Domino のデータが、そのまま XML として利用でき、別システムを用意する必要がないLotus Domino の優れた機能がそのまま利用できる
セキュリティー
レプリカ/クラスタリング※/エージェント/全文索引 など
Lotus Domino と XML アーキテクチャの親和性実装方法によっては、既存のデータベースがほぼそのまま使用できる
※ブラウザーをご利用で、本格的なクラスタリングのフェール・オーバーが必要な場合、別途専用機器を導入する必要があります。
IBM Software Group | Lotus software
7
DXL を使い Lotus Domino Webアプリケーションを作成する
考慮すべき点
Web 化による負荷は考慮されているか?
Lotus Notes Client とブラウザーの機能やユーザービリティの違い、利用方法は考慮されているか?(付録参照)
ブラウザーの修正モジュールによる動作の違いを吸収できるか。セキュリティー対策ができているか。
アプリケーション作成の指針(Lotus Notes Client -> Web 化)
IBM Software Group | Lotus software
8
DXL を使い Lotus Domino Webアプリケーションを作成する
Web及びXML化する範囲の特定
表現のために XML を使うのか or データ交換のためにXML を使うのか?
ブラウザーからのアクセスのみ発生するのか、Lotus Notes Clientなどからのアクセスもありうるのか?
ユーザーの入力が必要になるのか、参照のみか?
アプリケーション作成の指針(Lotus Notes → Web及びXML 化)
IBM Software Group | Lotus software
9
DXL を使い Lotus Domino Webアプリケーションを作成する
一般的な XML アプリケーションの実装方法
XML と XSL をサーバーから取り寄せて使用する。
XML と スクリプト言語/DHTML などを組み合わせて使用する
サーバー側で XML データを処理し、 HTML データとしてブラウザーに渡す。
アプリケーション作成の指針(XML 化の実装方法)
IBM Software Group | Lotus software
10
DXL で見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
11
DXL で見栄えの良い Lotus Domino Webアプリケーションを作成する
?ReadViewEntriesブラウザーがビューから XML として取得するための URLコマンド
通常の Lotus Domino のビューにアクセスするときの URL に ?ReadViewEntries の URLコマンドをつける
Domino DTD に沿った DXL の形式で XML データを生成
URLコマンドでビューからDXL を取得する
IBM Software Group | Lotus software
12
(Browser)
DXL をビューから取得する
http://servername.co.jp/database.nsf/viewname
?ReadViewEntries
http://servername.co.jp/database.nsf/viewname
(Lotus Domino の データベースのビューを元に DXL を生成)
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
13
<?xml version="1.0" encoding="UTF-8"?>
<viewentries toplevelentries="2">
<viewentry position="1" unid="727F4F956E9114A149256F38001B7BD3" noteid="936" children="2" descendants="4" siblings="2">
<entrydata columnnumber="1" name="TITLE">
<text>親文書</text></entrydata>
<entrydata columnnumber="2" name=“BODY">
<text>親文書テキスト</text></entrydata>
<entrydata columnnumber="3" name=“DATE">
<datetime>20041025T140049,54+09</datetime></entrydata>
<entrydata columnnumber="4" name=“AUTHOR">
<text>Haruto Nakamura/LotusBPTech</text></entrydata>
</viewentry>
(... 続く)
</viewentries>
?ReadViewEntries で取得したDXL の一例(一部)
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
14
DXL の中身
日付と時刻のデータ。datetime
文字列形式のデータ。text
このエントリが含まれる列の名前。name
このエントリを含む列のインデックス番号。columnnumber
ビューの 1 列に対するデータの単一列のセルを表す。entrydata
ビュー階層でこのエントリに属する同レベルの文書の数 (このエントリを含まない) 。siblings
ビュー階層でこのエントリに属する全子エントリの数 (このエントリを含まない) 。descendants
ビュー階層で、このエントリの直属の子エントリの数。children
文書の NoteID。noteid
文書のユニバーサル ID (UNID) 。unid
ビュー階層でのエントリの位置。position
ビューの 1 行を示す。view entry
ビュー内のトップレベルエントリまたは主要文書の数。toplevelentries
Lotus Domino データベースのビューの構造を定義。ルート要素。viewentries
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
15
XML と XSL と結びつける
取得した XML と XSL を結びつけるためには
?ReadViewEntries で取得した XML に対して XSL に結びつける方法は?
<? xml-stylesheet type=“text/css” href=“style.xsl” ?>
?Readviewentries には↑上記の↑のようなタグを直接XML データに埋め込む簡単な方法がない
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
Dynamic XML を利用する。
本書では HTML と Javascript を組み合わせて、Dynamic XML を利用
IBM Software Group | Lotus software
16
サンプルのご紹介
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
17
コーディングのポイント 1. – 設計要素の[ページ]を利用する
ページとは
クライアントに画面を表示するための設計要素。フォームと異なり、文書にひもづけられてなく、アプリケーションのどの部分でも使用可能
Web/XML 化でのページの使用
ページのプロパティの[ページ情報]
タブの Web アクセスを HTML にする
ブラウザーからページにアクセスする。
http://server/test.nsf/page
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
18
コーディングのポイント 1. – 設計要素の[ページ]を利用する
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
19
Demo:Javascript 内
function applyXSL() {oResults = document.getElementById("results");oXML = document.getElementById("testxml");oXSL = document.getElementById("testxsl");
oResults.innerHTML = oXML.transformNode(oXSL.documentElement);}
デモのデータベース内で、testxml, testxsl は xml island, results は div として設定されている
コーディングのポイント 2. - xslの差し替え(Dynamic XML)
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
20
Demo:XLS 内
<td class="Ccol"><a id="anchor_{../@unid}" href="0/{../@unid}"><xsl:value-of select="." /></a>
</td>
文書の unid を URL に指定することで文書を開く。ビューを明示的に指定しない方法として 0/ を指定する方法がある。
コーディングのポイント 3. - リンクの作成
例:http://server.co.jp/test.nsf/0/9F7BCBB6ED1746E449256F3B002FC16C
ビュー名 (or ID) 文書の unid
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
21
階層構造のビュー
列構造により、親文書と子文書が同じフィールドの値を取れるとは限らない
対象のビューを階層構造にしないか、ブラウザー側で加工
パフォーマンス
一度に多くの文書を読み込まない(列数も考慮する)
ブラウザーのレンダリング能力/スクリプトの処理能力/パーサーの処理能力を考慮
?ReadViewEntries を使うときの注意点(1)
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
22
ビューの列の順番
ビューの列順どおりに DXL に読み込まれる
entrydata の name 属性の値
列名ではなく、設計要素名が利用される
<entrydata columnnumber="1" name="TITLE">
各種ブラウザーとの乗り入れ
各種ブラウザー用のコーディング
?ReadViewEntries を使うときの注意点(2)
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
23
?ReadViewEntries のオプション(一部)
StartKey の種類を指定します。引数が指定されていない場合、デフォルトはテキストです。
KeyType = text|time (
UntilKey は StartKey といっしょに使用するときだけ有効です。StartKey で指定した文書で始まり UntilKey で指定した文書で終わるビューエントリの範囲を表示することができます。
UntilKey = string
string はソートされたビュー内の文書へのキーです。StartKey = string
n には、ビューの表示を開始する行番号を指定します。階層表示ビューの行番号にはサブインデックスを含めることができます。
Start = n
サーバーの全データ型をテキストに変換します。PreFormat
n は表示する文書数です。Count = n
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
24
Count = nデフォルトでは 30文書に設定
(例) http://servername/db.nsf/view?ReadViewEntries&Count=100
あまり多くの文書を読み込むと、パフォーマンス低下の可能性
Start = n表示する文書の順番のうち、最初に表示させる文書を指定
(例) http://servername/db.nsf/view?ReadViewEntries&Start=100
Count との組み合わせで使用すると効果的
(例) http://servername/db.nsf/view?ReadViewEntries&Start=20&Count=20
<viewentry position=“n”....> の n に相当
?ReadViewEntries のオプション(一部)
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
25
StartKey = stringDXL で最初に取得する文書のキー
(例) http://servername/db.nsf/view?ReadViewEntries&StartKey=親文書50
ビューがソートされている必要あり。
UntilKey = stringDXL で最後に取得する文書のキー
(例) http://servername/db.nsf/view?ReadViewEntries&StartKey=親文書50&UntilKey=親文書75
必ず StartKey の指定が必要。
?ReadViewEntries のオプション(一部)
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
26
Preformattext 型以外のデータ型をサーバーが自動変換
(例) http://servername/db.nsf/view?ReadViewEntries&Preformat<datetime>20041025T140049,54+09</datetime>
↓
<text>2004/10/25 14:00:49</text>
?ReadViewEntries のオプション(一部)
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
27
DXL による Web 化 -> ポータル化
考慮する点
認証
• シングルサインオン
(参考)Web サイト領域認証文書
管理
• 表示させるポータル画面の管理
テンプレート開発
• ポータルの実装のコストと手間
Portal化
本格的なポータルをご検討される場合には、既存の弊社ポータル製品をお勧め致します。
DXLで見栄えの良いLotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
28
データ交換のために XMLを利用したLotus Domino Web アプリケーションを作成する
IBM Software Group | Lotus software
29
データ交換に使える Lotus Domino Webアプリケーションを作成する
簡単に自動で持ってくる反面、要素名が固定要素名が長く、階層深い必要以外のデータが含まれているデータ交換には不向き
?ReadViewEntries での特徴
データ交換のためには
必要な要素名のみを使う交換しやすいように要素を決定する
IBM Software Group | Lotus software
30
xml のタグを直接ビューに含めるような設計にする
列の先頭/末尾に文書を示すタグを含める
各列に文書の要素を示すタグを含める
View の設定
データ交換に使える Lotus Domino Webアプリケーションを作成する
xml のルートタグがxml のタグ
を含めることが出来ないため、このままでは使用できない。
IBM Software Group | Lotus software
31
1. page に埋め込みビューとしてビューを埋め込む[作成 - 埋め込み設計要素 – ビュー]ヘッダの内容もブラウザーに渡されるので、必要なければオフにする
page の設定
データ交換に使える Lotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
32
2. page に必要なタグを埋め込む
page の設定
データ交換に使える Lotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
33
3. ブラウザーに表示できる設定を行う
ビューの設定 → ビューの設定を HTML として扱う
埋め込みビューの設定 → HTML を使用
ページの設定 → コンテントタイプ text/xml (xml island などを使い html データにしたい場合には、 html をチェック)
page の設定
データ交換に使える Lotus Domino Webアプリケーションを作成する
IBM Software Group | Lotus software
34
データ交換に使える Lotus Domino Webアプリケーションを作成する
直接ビューに表示する文書数を操作する方法がないビューに SELECT 文を追加してビューで文書を振り分ける
メンテナンスフィールドの追加/変更には注意を払う
注意事項
IBM Software Group | Lotus software
35
DXL を使い Lotus Domino Webアプリケーションを作成する
サンプルのご紹介
IBM Software Group | Lotus software
36
フォームで XML を利用する
フォームは必ずしも XML 化を行う必要はありません。
ビューだけで機能が充足されるのであれば、必ずしも XML 化を行う必要はない。
場合によっては複雑な処理やメンテナンスが必要になる場合がある
IBM Software Group | Lotus software
37
ビューデータベースにひもづけられた設計要素であり、データベースに複数作成することが可能。
フォーム文書にひもづけられた設計要素であり、基本的に文書に一つのみ。
フォームを DXL を用いて表現する
フォームの XML化 - ビューとフォームの特性の違い
IBM Software Group | Lotus software
38
簡単なフォームで、表現力が必要でない場合
機能的に必要でなければ、無理に XML にしない(DHTML と CSS で十分
な場合もある)
Lotus Domino Designerで作成したフォームは自動変換によりブラウザー
に表示可能
Form を XML で表現したい場合
フォームのプロパティのデフォルトタブの Webアクセス内、コンテントタイプに [HTML] またはその他にチェックを入れ “text/xml” を指定する
Lotus Notesとブラウザー両方からアクセスする場合には、
そのための仕組みを実装することが必要
DXL を使い Lotus Domino Webアプリケーションを作成する
フォームの XML化 - 実装方法
IBM Software Group | Lotus software
39
DXL を使い Lotus Domino Webアプリケーションを作成する
フォームの XML化 - Lotus Notes とブラウザーのためのフォームの切り分け方法の例
フォーム内の非表示式で切り分ける
一つのフォーム内の非表示式で Web と Lotus Notes を切り分ける
設計が複雑になりやすいので注意
パススルー HTML を使用する
Lotus Notes 使用時のデザインが通常と異なる
計算結果のサブフォームを利用する
フォームの中に Lotus Notes/ Web で表示するサブフォームを埋め込む
@Clienttype, @Browserinfo などを利用する
同じ別名を持つフォームを作成する
設計要素のプロパティの設定で、使用するフォームを変更する
IBM Software Group | Lotus software
40
DXL を使い Lotus Domino Webアプリケーションを作成する
サンプルのご紹介
IBM Software Group | Lotus software
41
サーバー・サイドで XML の生成を行う
IBM Software Group | Lotus software
42
サーバー・サイドで XML を生成する
サーバー・サイドで XML の生成を行う
長所
クライアント側に負荷がかかりづらい
柔軟なコーディングが可能
Lotus Script や Java で用意されている XML のクラスが使用できる (DOM parser/SAX)
短所
サーバーに負荷がかかる
IBM Software Group | Lotus software
43
サーバーサイドで XML を生成する
サーバー・サイドで XML の生成を行う
手順1. Lotus Domino Designerで処理を行うエージェントを作成
2. ブラウザーからエージェントを呼び出す
3. ブラウザーに結果が表示される
詳細はLotus Domino Designerヘルプ “LotusScript で XML を使用する“を参考
IBM Software Group | Lotus software
44
まとめ
XML 内で XSL を指定してブラウザーで表示する
page/form ではこの方法が使用できる。
?ReadViewEntries では直接この方法は利用できない
xsl はブラウザーの種類により大きく依存する
XML と スクリプト言語、 DHTML、CSS などを組み合わせて使用する
ご紹介したすべての設計要素で使用できる
スクリプト言語はブラウザーの種類に依存する部分がある
クライアントの負荷に注意。
サーバー側で XML データを処理し、 HTML データとしてブラウザーに渡す。
柔軟なコーディングが可能だが、若干難度が高い
標準的なHTML をクライアント側に渡せば、クライアントにはほぼ依存しない。
サーバー側の負荷に注意
アプリケーション作成の指針(XML 化の実装方法)
IBM Software Group | Lotus software
45
参考:XML関連の資料
DXL に関する資料
Lotus Domino Designerでの XML のエクササイズ
http://www-6.ibm.com/jp/domino07/lotus/home.nsf/Content/DN5_X_XML_Designer
XML Powered by Domino How to use XML with Lotus Domino (英語)
http://www.redbooks.ibm.com/redbooks.nsf/0/7fccf9355f830c15852569510043ef2a?OpenDocument
(管理者ヘルプ)XML の生成にビューを使用する
IBM Software Group | Lotus software
46
参考:XML関連の資料
?ReadviewEntries に関する資料
Using Domino data in Web Applications: XML lessons from iNotes Web Access (英語)
http://www-10.lotus.com/ldd/today.nsf/Lookup/XML_iNotes
Creating dynamic categorized views (英語)
http://www-10.lotus.com/ldd/today.nsf/lookup/DynamicCategorizedViews
xml islands に関する資料
Lotus Domino Designerで XML データ・アイランドを使うhttp://www-6.ibm.com/jp/domino07/lotus/home.nsf/Content/DN5_X_20000501-1
IBM Software Group | Lotus software
47
参考:Web化に関する資料
Web 化全般に関する資料
Building dynamic collapsible views for Web applications(英語)
• http://www-10.lotus.com/ldd/today.nsf/Lookup/DynamicCollapsibleViews
Webifying an existing Notes Application(英語)
• http://www-10.lotus.com/ldd/today.nsf/lookup/Webifying_Notes_applications
Domino URL 虎の巻
• http://www-6.ibm.com/jp/domino07/lotus/home.nsf/Content/DN5_X_Domino_URL_cheat_sheet
(管理者ヘルプ)Notes および Web アプリケーションを設計するためのヒント
IBM Software Group | Lotus software
48
付録:用語集
xml Document Object model。XML にアクセスするための API。階層化構造。
xmlDOM
HTML 内に存在する xml 文書。 <xml></xml> タグで括られる。xml island
見栄えのための情報を記述したもの。CSS などが含まれる。スタイルシート
Lotus Notes/Domino R5 から使用できる設計要素で、フォームと似ているが文書にはひもづいていない。HTML などの記述も可能
ページ
データベースの文書の位置情報を示す一意の IDNoteID
Universal IDの略。Lotus Notes/Dominoの文書を一意として識別するための ID。すべてのレプリカDB上の同じ文書には、同じ UNID が振られる。
UNID
URL の引数として URL の後ろに付けるコマンド文。サーバー側で処理するための引数として使われる。
URL コマンド
Dynamic に XML 文書にアクセスするための API。Dynamic XML
タグ定義を行う文書の広義。DTD や XML Schema がそれにあたる。スキーマ言語
埋め込まれたタグの定義を行う定義文書DTD
XML のスタイルを記述するための言語XSL
Domino DTD で制定されている Lotus Domino 用の XMLDXL
マークアップ言語の一つ。任意のタグを埋め込んでデータを表現できる。XML
Recommended