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

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

2017年12月24日日曜日

IBM Verse ExtensibilityとOnTimeを連携させてみよう!

こんにちは、今日はクリスマスイブだそうです。
私には1mmも関係ありませんが(笑)

今日は、先日一足早いクリスマスプレゼント?をいただいたので、それの紹介をします。
クリスマスプレゼントとは「IBM Verse Extensibilityに関する」ものでした。

IBM Verse Extensibilityについては前回の記事でname pickerについて実装方法を紹介しましたが、今日は「com.ibm.appreg.ext.templatedLink」を使ったOnTimeとの連携方法についてです。

IBM Verseのビジネスカードから、対象ユーザーのOnTimeのカレンダーを開くというものです。

私は前回同様、IBM Verse On-Premises版での実装方法の紹介です。
それでは見ていきましょう。

1.参考URL
なお、同じ内容のIBM Verseのクラウド版での実装は、IBM Championの吉田さんが紹介してくれていますのでそちらも是非ご覧ください!
IBM Verse 機能拡張を使って、ビジネスカードからユーザーの OnTime カレンダーを開く



2.前提条件
・IBM Verse On-Premises 1.0.3が必要になります。
こちらは2017年12月20日にダウンロードできるようになりました。
パスポートアドバンテージもしくはソフトウェアアクセスオンラインからダウンロードしてください(ライセンスが必要になります)。
・OnTime Group Calendarが必要になります。
こちらは別途製品のご購入をお願いします。

IBM Verse On-Premises 1.0.3の資料は
IBM Verse On-Premises 1.0.3 の資料
で確認できますので、しっかりと読んでおきましょう。

OnTimeの資料は
OnTimeご紹介資料
で確認できますので、しっかりと読んでおきましょう。

3.OnTimeのカレンダーを開く方法
まず、どうやってOnTimeのユーザーのカレンダーを開くのかですが、
こちらのURLに方法が紹介されています。
ブラウザクライアント起動時のパラメータ指定
このページの中の
「■特定のユーザーやグループを指定して開く。」というセクションにあります。
それによると、
http://HOSTNAME/FOLDER/OnTimeGCClient.nsf/web?open&user="user1@example.com"
となっています。
このうち、"user1@example.com"がカレンダーを開きたいユーザーのメールアドレスを指定するとのことです。

つまり、IBM Verseでユーザーのメールアドレスが取得できれば、後は上記のURLを開けばいいという事になります。

4.IBM Verse Extensibility用のURLページを生成する
IBM Verse Extensibilityの設定方法は前回の記事で書いています。
application.jsonにJSON形式でパラメータを設定して、その中にURLを記述すればいいのです。
が、しかし・・・
IBM Verse ExtensibilityはURLを開く際に、正しくページを開けるようにURLエンコードしてくれます。
その結果、「@」という文字列がエンコードされてしまい、「%40」になってしまうのです。
そこで、吉田さんのブログ記事ではredirect.htmlを用意して、その中で再度「%40」を「@」に変換するという事を行っています。
IBM Verse On-Premisesでも同じように変換すればいいのですが、そこはhtmlファイルを設置するのではなく、XPagesでやってしまいましょう。

利用するXPagesは前回の記事で利用したネームピッカー用のものにします。
XPageの名前は何でも良いですが分かり易くするために「openOnTime.xsp」にしました。
このXPageの「onClientLoad」イベントに
クライアントサイドJavaScriptとして
var sHref = location.href;
var sPath = location.pathname;
var sUrl  = sHref.replace( sPath, "/OnTimeGC/ontimegcclient.nsf/web" ).replace( '%40', '@' );
location.href = sUrl;

というコードを記述します。
※「/OnTimeGC/ontimegcclient.nsf」については自社のOnTimeのクライアントDBのパスを入力してください。

5. IBM Verse Extensibilityの設定
IBM VerseからOnTimeを開くプログラムができたので、IBM Verse Extensibilityの設定であるapplication.Jsonの設定を行います。
基本的な記述方法については前回の記事を参照していただくとして、今回はすでにIBM Verse Extensibilityを使っている場合の追記方法という形で紹介します。
application.Jsonの内容

application.Jsonの中に"extensions"という記述があります。ここに開発した拡張機能の内容を記述するのですが、配列になっているので、"{}"を","で囲って記述すればいいのです。
追記する内容は上の画像の赤枠の部分になります。
typeには機能である"com.ibm.appreg.ext.templatedLink"を、
objectには拡張機能の対象となるビジネスカードを表す"com.ibm.appreg.object.person"を、
payloadのtextにはプログラムの機能名を記述します(日本語も可能ですが、unicodeエンコードする必要があります)
payloadのhrefには、先ほど作成したXPagesのURLに
"/web?open&user=\"${profile.primaryEmail}\""
を追加した内容を記述します。


6.動作確認
これで後は、IBM Verseを起動して、動作確認をします。
ビジネスカードからOnTimeのユーザーのカレンダーが開けば成功です。
実際に動かした動画を見てください。



さぁ、どうでしょうか?
IBM Verse On-PremisesとIBM Verse Extensibilityの組み合わせにより、色々なことができそうだというのが分かっていただけましたでしょうか?
今回はわかりやすいOnTimeとの連携を紹介しました。
ここから先は皆さん自身がアイディアと工夫で実践してみてください。


他のアプリケーションではできない(できても難しい、費用が高い・・・)といったことも 、IBM Notes/Dominoならきっとできるでしょう!
使い方次第で、もっともっと便利になりますよ。
IBM Notes/Dominoはそういったものですからね。



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


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

0 件のコメント: