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

テクてく 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 カスタマイズとセキュリティ強化 - 株式会社エフ