当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2017年11月21日火曜日

IBM Verse Extensibilityを使ってみよう!

皆さん、こんばんは!今日も夜に更新です!(言い切った!)

昨日はIBM Verse On-Premisesを導入してみました。今日もしっかりと動いています!
ということで、今日はその続きとなる「IBM Verse Extensibility」についてみていきます。
テクてく11月度の資料は
【資料公開】テクてく​​​​​​​​​​​​L​o​t​u​s​​技​​術​​者​​夜​​​会​​​:​ザ・​デベロッ​パー編​​​​17​_​11_1​7
に公開してありますので、そちらを読んでいただくと、より一層理解が深まりますので、お忘れなきよう!

その他、
GitHub にもサンプルアプリケーションが公開されています。
IBM Verse Developers
開発者用のドキュメントはこちら。
IBM Verse

これらも必ず見ることをお勧めします。

では、IBM Verse Extensibilityを見ていきましょう。
小難しいアーキテクチャはおいておいて・・・
どういったものかというと、
「IBM Verse」を拡張したり、他のWebアプリケーションと連携する
ものです。
その中で、Verse Extension Pointsという形で用意されている拡張機能は、
今のところ、
com.ibm.appreg.ext.simpleLink
com.ibm.appreg.ext.templatedLink
com.ibm.verse.ext.widget
com.ibm.verse.ext.namePicker
com.ibm.verse.ext.beforeOnSend
com.ibm.verse.ext.liveText
です。

テクてくでは、
com.ibm.verse.ext.liveText
com.ibm.verse.ext.beforeOnSend
com.ibm.verse.ext.namePicker
が紹介されました。

このうち、
 com.ibm.verse.ext.beforeOnSend
については、IBM Championの吉田さんがご自身のブログで紹介していますので、そちらをご覧ください。
リンクはこちら。
IBM Verse からのメール送信前に確認画面を表示する

このブログでは、
com.ibm.verse.ext.namePicker
をXPagesを使ってできるかどうかを試してみましょう。
環境としては、当然ですが、昨日構築したIBM Verse On-Premisesを利用します。
クラウド版のIBM Verseとは若干違う可能性もありますがご了承ください。

テクてくでは、「Custom Name Picker」として、以下の方法で実現したよという説明がありました。
1.Verse UI内にIFRAMEが生成されます。
2.IFRAME内にHTMLで作成した画面が表示されます。
3.iNotesの全文検索APIを利用して、ドミノディレクトリからユーザー情報を検索します。
4.検索結果をHTMLの画面内に表示します。
5.ユーザー名をpostMessageでVerseに送信します(宛先にセット)。

この説明を聞いてデモを見ながら、「あれ?画面をXPagesで作ってもできんじゃね?」と思いました。
ということで、HTMLの画面をXPagesで作ってみましょう。


1.XPages アプリケーションの作成
 Verse On-Premisesを構築したDominoサーバー上にNotes DBを作成します。
 ACLは「-Default-」は"読者"で良いですが、「Anonymous」は"なし"にしておきましょう(ドミノディレクトリの情報を表示するので、最低限のACL設定はした方が良いです)。


2.XPage の作成
XPage の名称は何でも良いです。ただし、Verse ExtensibilityにURL情報を渡す必要があるので、長くしすぎないようにしましょう。

データソースはドミノディレクトリを設定します。自DBではないところに注意しましょう。
ビューはユーザー情報を表示するためのビューを設定します。
テクてくでは専用のビューを作っていたので、同じようにビューを作成してそれを定義しました。

ビューの設定情報は、
3. Extend Domino Directory
を参照してください。
(実はXPagesで作るのであれば、ビューは既存のもので良かったのですが、折角なので流用しました)


3.画面ロードの設定
2.IFRAME内にHTMLで作成した画面が表示されます。
ということをXPages の中で行う必要があります。
これはイベントハンドラを利用しているので、CSJSで記述する必要があります。
XPagesでは「出力スクリプト」コントロール(xp:scriptBlock)を使うことで記述することができます。
記述方法は、サンプルのui.jsからそのまま引用できます。
テクテクの公開資料の中にある「custom-name-picker」用の「ui.js」の1-41行目をそのままコピペします。
その際、12行目の
"https://djxtest01.lab.japan.ibm.com",
は自分のDominoサーバーのホスト名に書き換えます。
私の場合、こんな感じになりました。
出力スクリプトに記述した画面ロードのコード



4.ネームピッカー用のビュー設定

ビュー情報をXPageにセットする方法ですが、ビューコントロール(xp:viewPanel)ではなく、繰り返しコントロールを使いました。
これは、
5.ユーザー名をpostMessageでVerseに送信します(宛先にセット)。
を簡単に行えるようにするためです。
サンプルコードを見るとわかりますが、この部分は、CSJSで書かれています。
ビューコントロールで該当する行をダブルクリックしたときのイベントを書くのが面倒だったということですね(笑)
作った画面はこんな感じです。
Verseでのネームピッカーとなる(はず)の画面

ユーザー名の部分はクリックできるように、リンク表示にしています。
ここでXPagesで正しく表示されるのかのテストをしてみました。
XPages でネームピッカーもどきを表示してみた

一応、ドミノディレクトリの情報は表示できています。


5.宛先セット方法
あとは、ここで選択されたユーザー情報をVerseに戻せればOK(のはず)です。
テクてくでも講師の方が「postMessage さえどうにかなれば簡単ですよ」みたいなことを仰っていたので、無理をせずに、サンプルをほぼ流用させていただきました。
postMessageのコード
こちらはイメージでの表示とさせていただきます。
※実際のコードは、テクてくのサンプルについているのでそちらをご利用ください。
違っているのは、
var userEmail = document.getElementById( "#{id:internetAddress1}" ).innerHTML;
var userName = document.getElementById( "#{id:link1}" ).innerHTML;

だけです。
これは画面上で選択されたユーザー情報を取得する箇所なので、XPages での記述となっています。
残りは全く同じです。


6.IBM Verse Extensibilityの設定
アプリケーションはできた(はず)なので、あとはIBM Verseとの連携設定をするだけです。
この連携設定には、
「application.json」というファイルを使います。
このファイルはVerse Extension Pointsごとにフォーマットが決まっているので、一度作ってしまえば簡単に作成できます(他人がつくったものも流用できます)。
ということで、テクてくで公開されたサンプルの「application.json」をカスタマイズします(笑)
application.jsonのサンプル
 大事なのは、「url:」の個所です。ここに先ほど作成したXPagesのURLを設定します。
これにより、IBM Verseで宛先をクリックすると動作するようになります。
この「application.json」はIBM Verse On-Premisesの場合、Dominoサーバー上に配置する必要があります。
通常、
\VOP\application.json
に配置するのですが、DominoサーバーのDataディレクトリに置きたくないよ!
という場合、Dominoサーバーのnotes.iniに
VOP_EXTENSIBILITY_APPLICATIONS_JSON_FILEPATH=xxxx\application.json
※xxxxは任意のファイルパス
と記述することで、任意のディレクトリに配置することができます。


7.動かしてみた
IBM Verseでメールを作成後、[宛先]の個所がリンクになりクリックできるようになるはずです。
実際にクリックしてみると・・・
ロード中の画面

といったIBM Verse Extensibilityで作成した画面をロードしてますよ。という表示がされた後、XPages で作成したネームピッカー用の画面が表示されます!

XPages のネームピッカー用画面がIBM Verse内に表示された!

ここで、リンク状態になっている名前をクリックすると、宛先もしくはCc、Bccにセットされます。
これで画面下部にある[メッセージに戻る]をクリックしてメール本文を書いた後、[送信]をクリックすれば、セットした宛先にメールが送信されます。

どうでしょう?
XPagesでもネームピッカーの画面が作成できるとなれば、かなりIBM Verseの拡張の敷居は低くなったのではないでしょうか?
また、これを機にXPagesも触ってみようかな?という事になってくれれば、尚良!ですね。

XPages の画面ロードと宛先セットはVerseのお作法に従う必要はありますが、その中身はXPagesで自由に作ることができます。今回、私が作成したサンプルはとてもシンプルでこのままでは業務の利用はとてもできませんが、ちょっとカスタマイズすればかなり使えるようになると思います。


IBM Verse On-Premisesが使えるようになったので、一緒にIBM Verse Extensibilityを使ってみましょう!


ということで、IBM Verseの記事、前後編はこれで終わりとします。


今日はこの辺で・・・







Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2017年11月20日月曜日

IBM Verse On-Premisesを導入してみよう!

皆さん、こんにちばんは。
前回の投稿からほぼ一カ月が過ぎました。ホントに遅筆で申し訳ないです。

言い訳の一つでもすると(毎回だな・・・)、11月は毎年毎年イベントが多いのです。
少しずらしてほしいものです。
ブログの更新も大事な作業の一つ(仕事ではない・・・)なのですが、多くのイベントがあると優先順位が下がってしまうんですよね。


さて、これくらいにして今日の話題に行きましょう。
11月15日に行われたノーツコンソーシアムオープンセミナーで、「ザ・ノーツ研究会」がIBM Verse On-Premisesの構築方法について発表を行いました(発表したのは私なんですけどね・・・)。
資料はこちら→S15_TheNotes_NotesConsortiumOpenSeminar2017_NotesLabo.pdf

そして、11月17日に行われたテクてくLotus技術者夜会ではIBM Verse Extensibilityの話。

もう、これはIBM Verseについてブログの記事を書け!というお告げとしか思えません(思えない・・・)。

ということで、これから2回にわたって、IBM Verseについての記事を書きます。前半の今回は、IBM Verse On-Premisesの導入方法について書いていきます。
実際問題、上記のノーツコンソーシアムオープンセミナーの資料を見ていただければ、構築できるはずなんですが、いきなりIBM Verse Extensibilityの話を書いても、???となりそうだったので、その前段ということです。


では、見ていきましょう。

なお、全体の手順は
IBM Domino メール・サーバーでの Verse オンプレミス の構成とインストール
にばっちり出ていますので、そちらを読んでいただければ、以下の文章は全く必要ありません(笑)

1.前提条件


IBM Verse On-Premisesを導入するには、条件があります。
Windows版 or Linux版のIBM Domino 9.0.1 FP8 IF3以上です。
私が構築した環境は
64bit版Windows Server 2008 R2 Enterprise
IBM Domino 9.0.1 Feature Pack9
IBM Notes 9.0.1 Feature Pack9
IBM Verse On-Premises 1.0.2
でした。

2.OpenSSLの導入

新インフラ研究会では、 「Let's Encrypt for Domino」の利用を推奨していましたが、私はオンプレのテスト環境なので、自己証明書で十分でしたので、OpenSSLを利用しました。
手順は、
Windows 環境で OpenSSL と KYRTool を利用して自己署名証明書を作成する
に出ていますので、この通りに実施してください。
注意点としては、コマンドプロンプトで実行する際、フォルダに空白が含まれる場合、""で囲う必要があることです。
私の場合、Notesクライアントは「D:\Program Files (x86)\IBM\Notes」にインストールされているので、「5.キーリングファイルの作成」では、
D:\Program Files (x86)\IBM\Notes>kyrtool ="D:\Program Files (x86)\IBM\Notes\notes.ini" create -k "D:\Program Files (x86)\IBM\Notes\data\keyring.kyr" -p password
とする必要があります(その他のコマンド実行時も同様です)。
コマンド実行時はフォルダに注意!

3.DominoのHTTPの設定

IBM Verse On-PremisesはWebブラウザで閲覧するメールなので、HTTPタスクを起動する必要があります。
その際、いくつかの設定を追加しておく必要があります。
(1)サーバー文書
[インターネットプロトコル] - [Domino Web Engine] 「出力に UTF-8 を使用」を"はい"にします。
[ポート] - [インターネットポート] 「SSL キーファイル名」に上記で作成したSSL証明書のファイル名(指示通りに作成していれば、"keyring.kyr")を入力します。
[ポート] - [インターネットポート] - [Web] 「SSL ポートステータス」を"有効"にします。
(2)ファイルの配置作成したSSL証明書(keyring.kyr)をIBM DominoサーバーのDataディレクトリにコピーします。
(3)サーバーのnotes.ini
HTTPJVMMaxHeapSize=1024M
HTTPJVMMaxHeapSizeSet=1
を設定します(set config命令で設定できます)。
また、ServerTasks=の行にHTTPを追加します(すでに追加されている場合は不要です)。
(4)HTTPタスクの起動
HTTPタスクを(再)起動します。
起動していない場合は、サーバーコンソールで
load http
起動していた場合は、サーバーコンソールで
tell http restart
とします。

4.IDボールトの設定

IBM VerseではIDボールトの設定も必要です。
設定方法は、当ブログ内のIDボールトの設定方法を見ていただいてもいいですし、IBMのドキュメントであるID ボールトの構築とトラブルシューティングを見てもらっても構いません。
IDボールトを設定した後、ポリシーを定義して、Notesユーザーに割り当てるのを忘れないようにしましょう。

5.Verse On-Premisesのモジュールのインストール

ここでようやくIBM Verseの作業に入ります(今までの作業は準備だったということがここで初めて分かります)。
一度、HTTPタスクを停止します。
サーバーコンソールで
tell http quit
を実行します。
IBM Verse On-PremisesのモジュールはPassport Advantage もしくはSoftware Access Catalogから入手可能(なはず)です。
私がダウンロードしたファイル名は「VERSE_ONPREMISES_V1.0.2_MP_ML.zip」でした。
これを解凍すると、さらに「IBM_Verse_On_Premises.zip」という圧縮ファイルがあります。
これを解凍してできた「eclipse」フォルダをDominoサーバーの\domino\workspace\applications\eclipseにコピーします。
※同名のフォルダがあるので、統合してください。


(オプション)
・IBMから出ているドキュメントでは、リダイレクトDBの設定を進めていますが、これは必須ではありません。私の環境では、使いませんでしたので、説明は省略します。
・また、VOPDesign.nsf内のビューをメールDBにコピーとありますが、FP9の環境では、すでにメールテンプレートに含まれていますので、作業は不要です。

6.HTTPタスクの起動と資格情報ストア・アプリケーションの作成

サーバーコンソールで
load http
を実行します。
HTTPタスクが起動したら、
サーバーコンソールで
keymgmt create nek credstore
keymgmt create credstore credstore
の2つのコマンドを実行します。
これらは暗号キーの生成と格納するNotes DBの作成を行います。


7.メールDBの索引の更新

利用者のメールDBに全文索引を作成します。
その後、サーバーコンソールで
load updall mail
を実行して、メールDBに対して索引の更新を行います。

8.IBM Verseの起動

Webブラウザで
http:///verse
と入力して、Enterを押します・・・
すると、
IBM Verse On-Premisesの画面

見事にIBM Verseの画面になりました!

どうでしょうか?
手順は少し多いですが、Verseの導入と考えるのではなく、DominoのSSL化、とかIDボールトの導入をついでにやっているんだな。とするといいと思います。

さて、これでIBM Verse Extensibilityを利用する準備ができました。
次回はいよいよ11月のテクてくで紹介された内容の実践に移っていきます。
乞うご期待!?


それでは今日はこの辺で・・・





Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2017年10月25日水曜日

スコープ変数の有効期間について

みなさん、こんにちは。10月になり急に冷え込みました。
体調を崩しやすくなっていますので、くれぐれも気を付けてくださいね。


今日はXPagesのスコープ変数についての話題です。
ご存知の通り、スコープ変数には、
  • applicationScope
  • sessionScope
  • viewScope
  • requestScope
の4種類があります。

当ブログでは、セッションスコープ変数はどこで使われているのか?という記事で一度だけ取り扱ったことがあります。
ですが、それもsessionScope変数に限った話であり薄っぺらいものでした。

そこで今回はもう少し詳しく見ていこうと思います。

それぞれのスコープ変数には、有効範囲や有効期間といったものがありますが、主に有効期間について見ていきます。

1.applicationScope

概要

Notes アプリケーションに対して設定されるもので、アプリケーション利用者全員で共有します。
アプリケーション利用者が最初にアクセスした時点で設定されます。

有効期間

有効期間は、最後にアプリケーションにアクセスした後、決められた時間までです。
その時間を経過すると初期化(クリア)されます。
この時間は、デフォルトは30分ですが、Notes アプリケーションの「XSPプロパティ」の中にある「アプリケーションタイムアウト」で変更することができます。

2.sessionScope

概要

ユーザーごとに設定されるもので、各アプリケーション利用者が最初にアクセスした時点で設定されます。

有効期間

有効期間は、最後にアプリケーションにアクセスした後、決められた時間までです。
その時間を経過すると初期化(クリア)されます。
この時間は、デフォルトは30分ですが、Notes アプリケーションの「XSPプロパティ」の中にある「セッションタイムアウト」で変更することができます。


3.viewScope

概要

ユーザーごとでなおかつ同一ページ内で利用されるもので、各アプリケーション利用者が最初にアクセスした時点で設定されます。

有効期間

有効期間は、ページ遷移が発生するタイミングまでです。別のページを開いた瞬間に値がクリアされます。部分更新を続ける限りは値は保持されたままになります。
明確なタイムアウトの時間は設定されていませんが、applicationScopeがクリアされるときには同時にviewScope変数もクリアされます。

制限事項

その他、同一ページ上に存在できる上限数といった制限事項もあります。

4.requestScope

概要

ユーザーごとでなおかつ、単一のHTTPリクエストが処理されている間だけアクセス可能なものです。

有効期間

HTTPリクエストが処理して、返信用のHTMLデータを作成後、返信が完了した時点でクリアされます。




上記を踏まえて、簡単なテスト用のXPagesアプリケーションを作ってみました。
テストアプリケーションの画面

最初はAnonymousユーザー(匿名)の状態になっています。
この状態で各スコープ変数に値をセットした後、ログインすると・・・
なぜかsessionScope変数はクリアされずに残っています。



この様子をビデオに録画してみましたので実際にご確認ください。






同一のブラウザで別ユーザーで利用することはないかと思いますが、スコープ変数を正しく管理することを考慮して、ページのロード時にログインしているユーザー名を考慮しながら、初期化するような処理を追加した方がいいかもしれません。






なお、今回の情報は
XPages アプリケーションにおけるセッション管理
を参考にしています。
詳しく書かれていますので一度熟読することをお勧めします。


それでは今日はこの辺で・・・





Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2017年9月20日水曜日

XPagesで日付フィールドの表現方法を変えてみる

皆さん、こんにちは。
9月も終盤に突入しました。今月が期の終わりで締めの作業に入られている方も多いことでしょう。
忙しいからと無理をしすぎて、体調を崩すことがないようにしましょうね。食中毒なんてもってのほかですよ。


今日はXPagesの話題です。
そして、またまた日付に関する話題です。

フォームの日付/時刻フィールドをXPagesにバインドして表示することができます。
この時、プロパティで表示タイプや表示形式を選択することができます。
データバインドで選択できる表示方法

「表示タイプ」には"文字列"、"マスク"、"ブール値"、"数値"、"日付/時刻"の選択肢がありますが、ここは迷わず"日付/時刻"でしょう。
実際に、フィールドタイプが「日付/時刻」型の場合、バインドさせようとすると、ここは自動的に"日付/時刻"で設定されます。
表示タイプの選択肢


問題は「表示形式」です。
選択肢は"日付のみ"、"時刻のみ"、"日付と時刻"、"カスタム"が用意されています。
表示形式の選択肢

日付と時刻はそれぞれ「スタイル」の設定ができて、その選択肢は、"デフォルト"、"短く"、"中間"、"長く"、"フルモード"になります。
日付/時刻のスタイルの選択肢

画面には、もう一つ。「パターン」という項目がありますが、なぜかグレーアウトしていて選択することができません。

この状態でも色々な表現方法が選べるのはとてもありがたいのですが、やはり他の選択肢がないのは困ります。
本当に「パターン」は設定することができないのでしょうか?


実はできます。
プロパティ画面のうち、「すべてのプロパティ」タブを選択して、その中の「データ」「converter」「pattern」という項目がそれになります。
ここに表示スタイルを記述することで画面に表示するときに指定した形になります。
下図は「yyyyMMdd」と指定してあります(日付は区切り記号なしの年月日で表示されます)。
すべてのプロパティのpattern項目

ここで、patternに式を設定すると、なぜか「データ」タブの「パターン」項目がアクティブになり、設定形式を変更することができるようになります。
なぜか「パターン」が変更可能になる

これはもしかして、バ・・・
いいえ。いいんです。結果的にちゃんと変更できるんですから、何の問題もありません!


では、実際にどのように表示されるのかを確認してみましょう。
下図は、日付/時刻フィールドを設定したNotesの文書です。
Notes文書

これをXPagesにバインドして色々な形で表示するようにしてみました。
表示方法を色々と変えてみた


ちょっとしたことですが、これでアプリケーションの見栄えを簡単に変更することができますので、一度試してみてください。





それでは今日はこの辺で・・・



Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2017年8月28日月曜日

IBM Domino 9.0.1 Feature Pack 9をインストールしてみました

皆さん、おはようございます。
今週で8月も最後です。つまり今年はあと4ヶ月ほどになります。
早い、早すぎる・・・一年ってこんなに短かったっけ?というくらいに早いです。

なので、色々と早くやらないといかん!ということで本日の話題に行きます。

皆さん、ご存知かと思いますが、先日IBM Notes/Domino 9.0.1 FP9がリリースされました!(実は前回の記事を公開したときには、すでにリリースされていたというオチも・・・)

FP8が2017年3月上旬にリリースされて以来、約5カ月ぶりのリリースです。
私の見立てでは、9月末にリリースかなぁなどと勝手に予想していたので、ちょっと慌てています。

ですが、リリースされた以上、検証しないわけにはいかないので、早速?インストールしてみました。


まず、Feature Packの入手方法は、前回(FP8)と同じく、Fix Centralから行えます。
https://www-945.ibm.com/support/fixcentral
からダウンロードできました(要IBM ID)。

今回は先にDominoをインストールしたのでそちらの紹介から。
私の環境はWindowsの64bit版をつかっているので、「DominoServer_901FP9_W64」を選択してダウンロードしました。
ダウンロードした「domino901FP9_w64.exe」を実行するだけなのも前回と変わらずです。
粛々と実行して、インストールしましょう。

今回も テンプレートが更新されていますので、それもダウンロードしておく必要があります。
FP9で提供されているテンプレート

FP8では、ドミノディレクトリとメールだけでしたが、FP9ではそれに「DJX管理ツール」「個人アドレス帳」が追加されています。
細かいところは調査していませんが、「個人アドレス帳」が更新されているので、各クライアントに配布して設計の置換をしてもらうという作業が必要になるでしょう。

さて、インストールが完了してDominoを起動したので、本当にFP9になっているかを確認しましょう。
下図は、Domino Consoleを起動して、「show server」コマンドを実行したものです。
sh servreの結果

赤枠で囲ってあるように、IBM Domino 9.0.1 FP9になっていますね。

この後、テンプレートの置換を行います。ドミノディレクトリも更新されていますので、行いましょう。
ここで朗報です!
FP8までは、「pubnames.ntf」と「djxdd.ntf」のBDタイトルが同じで、区別がつかない!と言っていましたが、
FP9で見事にDBタイトルが修正されました\(^o^)/
これでもう間違えないで済みますね!
テンプレートのタイトルが!!

どうせ、直ってないだろうと思い込んでいた方は、気を付けましょう。見つかりませんよ(笑)




さて、ここで終わってしまっても良いのですが、あまりにもあっさりしすぎているので、新機能についてもいくつか見ていきましょう。

新機能については、フィーチャーパック 9 の新機能に記載されていますので、熟読しましょう!

当ブログでは、これらのうち、「Domino REST API の機能強化」について触れていきます。
まあ、RESTと聞いたら黙ってられませんからね。

まず、「添付ファイルサポートの改善
FP8までは、REST APIでNotes文書の情報を参照した時、文書内に添付ファイルが存在していると、BASE64でエンコードされた状態でデータが表示されていました(下図参照)。
添付ファイルがBase64でエンコードされている
これはこれで便利なのですが、添付ファイルの容量が大きい場合、JSONデータも大きくなってしまいます。その結果、レスポンスが遅くなるという事が懸念されます。

そんな時に文書参照用のREST APIのURLに「?attachmentlinks=true」を追加すると、添付ファイルデータがリンク情報を返すようになります。
添付ファイルはリンク情報として表示されている

これなら、レスポンスデータのサイズも小さくなりますね。
添付ファイルそのものは、JSONデータ内の「contentLocation」アイテムの値にあるURLから取得することができます。
添付ファイル名が日本語の場合、エンコードされたままになってしまうのでそこだけ注意しましょう。


次に、「全文検索スコア」です。
REST APIで検索を行うと、相対検索スコアが表示されるというものです。
おそらく、Notesクライアントで全文検索をしたときの「関連度順」にソートする際に利用されるデータのことではないかと思います。
こちらは実際に試してみましょう。
Notes アプリケーションでDomino Data Serviceが使えるようにしておきます。文書を参照するので、「ビューと文書」にしておきます。
Domino データサービスを有効化しておく

検索用のビューでもDomino Data Serviceを有効化しておく必要があります。
ビューでも有効化しておく

また、Notes アプリケーションに全文索引を作成しておく必要があります。

REST APIでの検索は、次のように行います。
http://[Dominoサーバーホスト名]/[Notesアプリケーションパス]/api/data/collections/unid/[ビューのUNID]?search=[検索条件]

実際に実行した結果は下図の通りです。
検索結果の表示

各文書の項目に「@score」というのがありますね。これが相対検索スコアです。JSONデータを取得したら、この順序でソートすれば、関連度順に並べることが可能になりますね。

ちなみに、FP8で同じ検索を行った時の結果は下図の通りです。
「@score」という項目がないことに注目してください。
@scoreがない


最後に、「管理者による REST リソースのより詳細な制御」です。
こちらは、
DAS_DATA_DB_COLLECTION=0
をDominoサーバのnotes.iniにセットすることでREST APIによるDomino サーバのアプリケーション一覧の表示をできなくするようにするものです。
これをせっていしておけば、DominoサーバにどんなNotes アプリケーションがあるのかを隠すことができますので、設定しておくのは良いと思います。

この設定をしていない場合、
「http://[Dominoサーバーホスト名]/api/data」とすると、下図のようにNotes アプリケーションの一覧が表示されます。
Notesアプリケーションの一覧

しかし、Dominoサーバーコンソールで
set con DAS_DATA_DB_COLLECTION=0
とした後に再度ブラウザで開いてみると・・・
Notesアプリケーションの一覧がエラーになる

このように403エラーになります。
Notes アプリケーションの一覧は表示できませんが、Data Serviceが有効になっているNotes アプリケーションに対してREST APIのコマンドは有効なままになっています。

元に戻すには
set con DAS_DATA_DB_COLLECTION=1
とすればOKです。



もう一つ、新機能の紹介をしておきましょう。
既存メッセージでのメールルールの実行をユーザーに許可する」です。
これは、今までのバージョンでできなくて苦労したという方は多いのではないでしょうか。

今までは、ルールを作成しても、有効化された後に受信したメールしか適用されず、「受信ボックス」の中がごちゃごちゃになっていることがありました。

ですが、この機能を使うと、ルールを作成する前に受信していたメールに対してもルールを適用することができるようになります。

手順は次の通りです。

1.メール設定ポリシー文書を作成/更新する。
ドミノディレクトリをFP9のテンプレートで正しく更新できていることが前提条件です(当たり前ですね)。
ドミノディレクトリを開いて、メール設定ポリシー文書を作成します(すでに作成してある場合はそれを編集モードで開きます)。
新規に作成する場合、[設定][ポリシー][設定]ビューを開いて、[設定の追加...][メール]アクションを実行します。
メール設定ポリシー文書を作成

[基本]タブの「名前」欄に任意の値を入力します(必須項目です)。
[メール][基本]タブを開きます。
「メールビューとフォルダの管理」というセクションに「既存のメールでルールの実行を有効にする」という項目があるので、そこにチェックをつけて保存します。
※他の項目は、自分の環境に合わせて設定してください。
メール設定ポリシー文書の[メール][基本]タブ

作成したメール設定ポリシー文書をポリシー文書に関連付けさせます。
ポリシー文書にメール設定ポリシー文書を関連付けさせた

念のため、Dominoサーバーと対象ユーザーのNotesクライアントを再起動します。


2.メール文書でルールを作成する
DominoサーバーとNotesクライアントの再起動が完了したら、メールDBを開きます。
こちらのメールDBはFP9のメールテンプレートで設計の置換が行われている必要があります(これも当然ですね)。

そうしたら、ルールを適用したい既存文書用のルールを作成します(すでに作成してあるルールが利用できそうであれば、この作業は不要です)。

私はテストのために以下のルールを作成してみました。
新規ルールを作成

3.メールのプリファレンスを修正する
メールのプリファレンス画面を開きます。
すると、[メール][基本]タブに「メールを閉じるときにルールの実行を有効にする([メール]タブを再度開いたときに有効になります)」という項目が追加されていることが分かります。
ここにチェックが付いているはずです。もしチェックが付いていなければ、チェックをつけて[OK]をクリックしてください。
メールのプリファレンス

プリファレンスを変更した場合、一度メールDBを閉じて、開きなおします。


4.ルールを実行する
メールDBを開いたら、[オプション][ルール][ルールの実行]アクションをクリックします。
ルールの実行アクション

「既存のメールでルールを実行」ダイアログが表示されるので、実行したいルールを選択して[選択したルールの実行]アクションをクリックします。
※ルールが1文書しかなくても必ずチェックをつける必要があります
選択したルールの実行

実行するかどうかの確認ダイアログが表示されるので、[OK]をクリックします。
確認ダイアログ

ルールの実行が完了すると、その旨を知らせるメール文書が作成されます。
自動応答文書

実際にルールも適用されました。
送信エラーレポートフォームの文書がエラーフォルダに移動している



どうでしょう。
これだけでもFP9にバージョンアップしたくなりませんか?

他にもいくつか機能が用意されています。
残念ながら私が保有しているテスト環境では、その他の新機能を試すことが出来そうになかったので、皆さん自身の目で確かめてみてください。






それでは今日はこの辺で・・・


Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2017年8月21日月曜日

XPagesでサポートしているRDBMSを試してみよう

皆さん、こんにちは。
気が付いたらお盆が過ぎていました・・・
東京は8月に入って、カラッと晴れた日がないので、夏という気がしないのも一つの要因でしょうか。
涼しいのは良いのですが、やはり夏は暑くないとしっくりと来ないですね。


では今日の話題に行きましょう。
今日も9.0.1 FP8の関連事項です。
もうすぐ9.0.1 FP9がでるはずなので、その前に終わらせておきましょう。ということです。

IBM Domino Designer 9.0.1 フィーチャーパック 8 の新機能
XPage 用のリレーショナルデータベースサポートの改善および JDBC ドライバプラグインウィザードの追加。
という記述があります。

今回はこれについて見ていきます。
上記のリンク文書を読み進めていくと、
XPages を使用したリレーショナルデータベース管理 (RDBMS) のサポートを読むように書かれています。
ここには、新しい機能についての説明がありますが、具体的にどのようにしたら利用できるようになるのかを記事内で紹介されているサンプルDBを元に見ていこうと思います。

1.JDBCドライバの入手

今回はサンプルDBを試すので、Derbyを利用します。
DerbyのJDBCドライバはApache Derbyから入手できます。
ここから、「db-derby-10.13.1.1-bin.zip」(2017年8月時点の最新バージョン)をダウンロードします。
ダウンロードしたzipファイルは任意の場所に展開しておきます。


2.XPages Plug-in用に変換

Domino Designerを起動します。
[Tools][JDBC Driver Plug-in Wizard]メニューをクリックします。
JDBC Driver Plug-in Wizardメニューが追加されている

JDBC Driver Plug-in Wizardのダイアログが表示されるので、以下の項目を入力します。
「Type」は今回はサンプルアプリケーションを使用するので、「Apache Derby」を選択します。
「JAR Files」は、[Add JARs]ボタンをクリックして、1.で入手したApache DerbyのJDBCドライバのJarファイルを選択します。
「Direcroty」はXPages用に変換したJDBCドライバを含んだUpdate Siteをどこのフォルダに出力するのかを選択します。このフォルダは任意の場所で良いですが後で利用するので覚えておきます。
JDBC Driver Plug-in Wizardダイアログ

すべて入力できたら、[終了]をクリックします。
Wizardが実行されて、指定したフォルダにUpdate Site用のファイルが作成されます。
作成されたUpdate Site用フォルダ


3.Dominoサーバへの適用

2.で作成したUpdate Siteは「Eclipse Update Site」DBに登録することでDominoに適用することができます。
「Eclipse Update Site」はテンプレートが用意されていますが、自分で作成する必要があります。
ただし、Dominoサーバーに1つあれば十分ですので、すでに作成してある場合はそれを利用します。

作成していない場合は、[ファイル][アプリケーション][作成]メニューで新規にNotes アプリケーションを作成します。
テンプレートのサーバーは、Dominoサーバーを選択します。
「詳細テンプレートの表示」にチェックを付けると、 「Eclipse Update Site (9)」というテンプレートが表示されるので、それを選択します。
ファイル名は「updatesite.nsf」としておきます。
新規アプリケーションの作成

Notes アプリケーションが作成できたら、それを開きます。
(下図ではすでに文書が作成されていますが、新規作成した場合はありません)
Eclipse Update Siteアプリケーションを開いたところ

[Import Local Update Site]アクションをクリックすると、下図のダイアログが表示されるので、[Browse...]をクリックして、2.で作成したUpdate Siteのフォルダから「site.xml」を選択します。
Import Local Update Siteダイアログ

選択したら[OK]をクリックします。
Update Siteの内容がImportされると、ビューに文書が表示されます。
Update Siteがインポートされて文書が作成された

Eclipse Update Siteに登録された文書の内容を反映するにはDominoサーバーを再起動する必要がありますので、再起動します。


4.サンプルDB(XPages JDBC)で動作確認してみる

XPages JDBCのサンプルアプリケーションは、https://github.com/OpenNTF/XPagesRelationalSampleで入手できます。
入手した「XPagesJDBC.nsf」を署名したらDominoサーバーにアップロードします。

WebブラウザでNotes アプリケーションを開きます。
XPagesJDBCをWebブラウザで開いた

画面右上にある[Setup]をクリックすると、Derbyへの接続テストが行えますので、実行します。
Derbyへの接続テストが成功




正しくセットアップできていると、「Connection Successfull」と表示されます。


あとは画面左側にあるアウトラインからビューをクリックすると、Derbyのデータが表示されるので、確認してください。




このように、ちょっとした手間でJDBCドライバを利用したXPagesアプリケーションが作れるようになっています。
JDBCドライバはDerbyの他、OracleやDB2、SQL Server等に対応しているとのことですので、色々と試してみてください。





それでは今日はこの辺で・・・


Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ