ページ

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

2013年5月15日水曜日

そうだ! IBM Connect Japan 2013 へ行こう!

皆さん、こんにちは。

と言っても、このブログを書いているのは、22時30分にもなろうという時刻です。

IBM Notes/Domino 9.0 SE漬けで楽しいはずのG/Wですが、
インストール&セットアップしただけで終わってしまいました。
何しろ、試したい機能がてんこ盛り過ぎて、どこから手を付けようか悩んでいたら・・・
という次第です。

皆さんはどれだけ触れられたでしょうか?え?まだインストールしてない!?

いやいやいや、ダメでしょう。早くインストールしましょうよ!
きっと楽しいことが起きますよ。


さて、インストールしようかどうしようか迷っている貴方!インストールしたけど、何が変わったのか分からないよ!という貴方、9.0 Social Editionの「Social」って何だよ?という貴方!
そんな人は、是非IBM Connect Japan 2013に申し込みして、行くようにしましょう!
東京は、2013年5月30日(木)開催ですよ!

当然、私は申し込み済みです。
ちなみに、普段は休暇をとって参加しているのですが(え?なぜかって?Notes/Dominoは趣味なので、当日は仕事を忘れて参加したいのです!)、今回は半分くらいは仕事なんです。

というのも、【C-3】IBMチャンピオン達がチームスタジオのセッションをハイジャック!【裏・基調講演】XPages、モバイル化、OpenNTF など重要トピックを本音弾丸トーク にあるように、チームスタジオさんのセッションに飛び入り参加?してしまうのです!

なんと、このセッション、IBM Championが4名も登壇するのです。このように大勢の皆様の前に、複数名のチャンピオンが集まって話をするのは、Lotus Knows Expo 2011以来、約2年ぶりのことなんです。なかなかない機会なのですよ。
さらに言うと、私がこのように人前で話すのは大変珍しいことで、本格的なデビューは昨年のXPagesDayだったりするのです。

前回(Lotus Knows Expo 2011)と同じメンバーは加藤さんただ一人。新規加入の3名相手にどれだけの立ち回りができるかも、見どころの一つではないでしょうか!
そして、私を含めた3名のチャンピオンは、加藤さんやIBM殿を相手に、どれだけのことを言えるのか!?というところも・・・
これ以上は、喋りすぎですね。当日を楽しみにしてください。

そうそう。私は、セッション以外でも会場をぶらついています(なんせ、休暇ですから)ので、見かけたら、声をかけてやってください。
もしかしたら、Notes/Domino に関する質問に答えるかもしれません。


それと、私が参加するセッション以外にも、サンディカーターの基調講演や展示ブース(マップを見ましたが、今回はすっきりとした配置になっているので、見やすいと思いますよ!)など、たくさんの楽しみがありますので、参加するようにしましょうね!

こういった情報は、ネットではなく、自分の耳で直接「聴いて」確かめてください。
文字では感情は伝わりませんからね。

さぁ、当日まであとわずか。ブログの記事更新のためにもセッションのためにも、もうちょっと勉強しないと!
では、今日はこの辺で。

2013年4月29日月曜日

Domino Adminが起動しない!

皆さん、こんにちは。本日は「昭和の日」ということで、お休みですね。中には、4/27~5/6まで連休だよ!という方もいらっしゃるのではないでしょうか?
私は、それなりにお休みをいただくことができて、久しぶりに自宅でNotes/Domino三昧です(^^)

さて、IBM Notes/Domino 9.0 Social Edition 日本語版のダウンロードも可能になりましたね。
詳しくはこちら(IBM Notes/Domino 9.0.x Social Edition のダウンロードについて

もう、すでに多数の方がダウンロード&インストールされているようですが、皆さん、うまく動いているのでしょうか?

実は、私はすんなりと動いてくれなくて、ずっと困っていました。 やっと解決?できたようなので、今日はそのあたりの話を書いてみます。


本題に入る前に、「ブログ開設5周年記念、6年目に突入だよ!」ということで、
にほんブログ村 IT技術ブログへ
をクリックしましょう!


では、まいりましょう。

1.Notes/Domino環境
 まず、私が利用しているNotes/Domino環境を説明した方が良いでしょう。
  業務上、1台のPCに複数バージョンのNotes/Dominoをインストールしています。
 しかし、一OS上には一つのNotes/Dominoしかインストールしていません。
 昔(R4とか5.xの頃)は、複数バージョンのNotes/Dominoを同時にインストールしていましたが、
 今はレジストリの関係などで、面倒なので、VM上の別OSにインストールしています。
 各Dominoは基本的に全部別ドメイン/別認証で構成しています。バージョンがバラバラなので、複製して環境がごちゃごちゃになってほしくないからです。
 そのため、ノーツクライアントは各Dominoに接続できるように、多数のロケーション文書を作成しています。
 ちなみに、メインマシンのOSはWindows 8 Professional版です。
 このOSにインストールしたのは、Lotus Notes 8.5.3でしたが、IBM Notes 9.0 Social Edition English版を経て、IBM Notes 9.0 Social Edition 日本語版になっています。

2.トラブル内容
 では、どのようなトラブルに見舞われたかといいますと・・・
 Domino Admin(ドミノ管理クライアント)が起動しなくなるのです。
 インストール直後は起動したのですが、色々と設定を追加・変更(前述したように、各種ロケーションを編集しました)してから、Domino Adminを起動すると、「nlnotes.exe」が応答なしになってしまうのです。
 そのまま放置しておけば、何か起きるかな?と待ったのですが、待てども待てども何も起きないので、仕方ないから「IBM Notes の診断データを収集して IBM Notes を終了する」を実行して、強制終了をかけました。


3.トラブルシューティング
 まず、何が起きているのかをはっきりさせるために、NSDログの内容を確認しました。
すると、nlnotes.exeの他にnevent.exeが動いていることが分かりました。
確かに、Domino Adminを実行すると、events4.nsfがクライアントにも作成されます。
こいつが壊れているのか?と思い、ノーツクライアントでビューや文書の状態、ACLの設定内容、DBのプロパティ等を確認しました。
すると、events4.nsfがローカルで暗号化されていました。
そうですね。すっかり忘れていました。8.0以降はデフォルトでは暗号化されてしまうんですね(ローカルDBを暗号化しないようにするには・・・)。
早速、DBの暗号化を解除して、セキュリティ設定もデフォルトは「暗号化しない」に変更しました。
これで、再度Domino Adminを実行しましたが・・・何も変わりません。相変わらず「応答なし」になってしまいます。
その後、色々と試行錯誤しました。googleで検索してみたり、コマンドプロンプトから、「nevent.exe」を実行してみたりしました。それでもなかなか有力な手掛かりは見つかりません。
google先生が役に立たないのであれば、自力で何とかするしかありません。
そこで少々見方を変えて、Domino Adminだけを起動してみました。やはり、「応答なし」になります。
ここで、「IBM Notes の診断データを収集して IBM Notes を終了する」を実行して、強制終了をかけました。
この状態で、ノーツクライアントのDataディレクトリの内容を確認してみました。
注目したのは「ファイルの更新日時」です。アクセスしたファイルの更新日時は変わるだろうと予想したら、いくつかのファイル、それもノーツDBがヒットしました。
bookmark.nsf
desktop8.ndk
domadmin.nsf
dommon.nsf
events4.nsf
log.nsf
names.nsf
の7つです。
この中に犯人がいると狙いをつけて、全部をDataディレクトリから削除しました(と言っても、実際には、別のフォルダに移動しました)。
この状態で、Domino Adminを起動すると・・・
見事に起動してくれました!!
Domino Admin

ということで、ほぼ原因は確定できました。
ここまできたら、あとは犯人のあぶり出しだけです。
一つずつファイルをDataディレクトリに戻していって、Domino Adminの再起動を繰り返すだけです。
・・・ですが、実は絞り込みができていません。
domadmin.nsf
dommon.nsf
events4.nsf
のうち、いずれかであることは分かっているのですが、そこから先の絞り込みができていないのです。
絞り込みをする前に、もう一つの可能性である要因をつぶしていたからです。
それは、システム管理のプリファレンス設定です。
[ファイル][プリファレンス][システム管理]メニュー
このメニューを実行して、「IBM Domino Administrator 起動設定」を「最後に使用したサーバーに接続」から「サーバーに接続しない」に変更していたのです。
システム管理プリファレンスの「IBM Domino Administrator 起動設定」
結果としては、この設定に問題があったのでしょう。私は自身の環境の中で、VM上のOSのIPアドレスも変更していたので、Domino Adminが正しくDomino サーバに接続できなかったのかもしれません。そもそも常にDominoが起動しているかも不明なので、ここを「サーバーに接続しない」に変更していたのでした。

この設定を変更した後、容疑者のノーツDBをすべて元に戻しましたが、正常にDomino Adminは起動しています。ということでやはり、システム管理プリファレンスの設定が問題だったのでしょう。



4.総論
 実は、このトラブルはWindows 8にLotus Notes 8.5.3をインストールしたころから発生していました。しかし、Windows 8ではLotus Notes 8.5.3 がサポートされていない為、「うーん、サポートしてないからなぁ。ダメでもともとだよなぁ」と弱気なことを考えていました。
また、Domino Adminでやっていたことは、アプリケーションへの署名がメインだったので、Domino Designerで実行することで回避することにして、解決は後回しにしていました。
 ところが、IBM Notes 9.0 Social Edition 日本語版でも同様の不具合に遭遇したため、「これは何としても解決しないと先に進めない!」ということで、本腰をあげたのでした。
 結局、設定の不備によるもの?と思われますが、実は納得いっていません。
というのも、Lotus Notes7.xまでは、システム管理プリファレンスはノーツクライアントからでも変更ができたのです(下図はLotus Notes 6.5.6 クライアント)。
ノーツクライアントでの[ファイル][プリファレンス][システム管理]メニュー

これがNotes 8.0(8.5?)になって、ノーツクライアントからはこのメニューがなくなりました。
そのため、Domino Adminが実行できないとどうしようもないのです。
(nlnotes.exeを直接実行すれば、basicモードで起動できて、そこからならシステム管理プリファレンスが変更できる!というのは、この記事を書いている途中に気が付いた・・・)

Eclipseベースになったことを考えると、多少は仕方ないのかな?とも思いますが、もう少し、私のような使い方をしている人にも優しい設計にしてほしいです。


ということで、前半の黄金週間はこのトラブルシューティングに丸々費やしてしまいました。
XPages Extension Library Japan Project のメンバーの皆様、すみませんでした。
黄金週間の後半に、頑張ります!

そもそも、4月の記事の更新がこれで最初で最後というのもどうかと思いますよね・・・
と猛省の最中、終わりにします。


では、また。



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2013年3月20日水曜日

XPages Extension Library Japan ベータ3をリリースしました!

皆さん、こんにちは。今日(2013年3月20日)は春分の日です。花粉症なのに、マスクをしないで出かけてしまって、帰ってきてからぐずぐずになってます。困ったものですね。

もうすぐ、IBM Notes/Domino 9.0 Social Editionが出荷されますが、その前にまたまた告知があります。
もう皆さんご存知ですよね。XPages Extension Library Japan プロジェクト。先月も当ブログで告知したあのプロジェクト(XPages Extension Library Japan プロジェクトをご存知ですか? )ですね。

XPages Extension Library には3つのサンプルデータベースがあり、それら一つ一つを日本語翻訳しているということはご存知ですよね。
ということで、今回は3つ目のノーツアプリケーション(XPagesSBT.nsf)を翻訳しました。
このノーツアプリケーションは、「XPages からクラウドサービスやソーシャルネットワークサービスにアクセスします。」というもので、
  • IBM Sametime と IBM Connections (Lotus Greenhouse)
  • LotusLive (IBM SmarterCloud) ・・・ 利用にあたり組織管理者の権限が必要
  • Dropbox
  • Twitter
  • Generic Services (Stackoverflow と Redmine)
  • Utilities (User Bean, @Functions, JSON DataNavigator)
へのアクセステストができます。
※上記のテストを行う場合、それぞれのソーシャルサービスへアクセスするためのアカウントが必要になります。(2013/03/21 追記)
IBM Notes/Domino 9.0 Social Editionを使わなくても、これだけのことができる!というのはすごいですね。こうなると、Notes/Domino 9.0 SEは、どこまで何ができるのだろうか?がとても気になります。


なお、ダウンロードのURLはこちらです!
XPages Extension Library Japan
ベータ2をダウンロードした人は是非、続けてベータ3をダウンロードしてください。
そして、まだ一度もダウンロードしたことがない。という方は、Notes/Domino 9.0 SEを入手する前に是非、ダウンロードして使ってみてください。
Notes/Domino 9.0 SEがより一層楽しめるようになりますよ!


今後のプロジェクトの展望は、前回話したように、XPages の初心者向けに「Demonstration Application for XPages」の日本語翻訳化を進めていきます。こちらは、Notes/Domino 9.0 SEのみでの動作を予定していますので、Notes/Domino 9.0 SEでのXPagesの学習にも利用できるようになるかと思います。

皆さんが応援していただければ、その分、メンバーのやる気も出て、それだけ早いリリースにつながりますので、是非、応援&ご協力をお願いします。


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

2013年3月17日日曜日

NotesCalendarクラスを使ってカレンダーエントリを登録してみよう

皆さん、こんにちは。恒例の日曜ブログです。

3/15(金)のテクてくで無茶ブリがありましたが、さらっと流します。
というのも、ちょっと調べてみたところ、実装そのものはかなり簡単でしたが、何を設定してよいのか見当がつかなかったのでした。
それに、他に書きかけになっている記事もあったので、そちらを優先させた次第です。


ということで、にほんブログ村 IT技術ブログへをクリックして本題に進みましょう。


今回は、前々回に書いたNotesCalendarクラスの記事の続報です。
その時は、カレンダーエントリを取得してくるということをしましたが、今回は画面に入力した内容をカレンダーエントリとして自分のカレンダーに登録してみます。

ノーツアプリケーションは、この間のものをそのまま使用します。
次に、書き込み用のページとして、writeというXPageを作成します。
このページに、以下のコントロールを追加します。
StartDate「Date Time Picker」 Display Formatは「Date Only」 requestScope.StartDateにバインドする
StartTime「Date Time Picker」 Display Formatは「Time Only」 requestScope.StartTimeにバインドする
EndDate「Date Time Picker」 Display Formatは「Date Only」 requestScope.EndDateにバインドする
EndTime「Date Time Picker」 Display Formatは「Time Only」 requestScope.EndTimeにバインドする
Subject「Input Box」 requestScope.Subjectにバインドする
Categories「Input Box」 requestScope.Categoriesにバインドする
Location「Input Box」 requestScope.Locationにバインドする
Public/Private「Radio Button Group」 Vaueは「PUBLIC/PRIVATE」の2つ requestScope.Privateにバインドする


次に、カレンダーエントリをセットするためのボタンを配置します。
下図が、各コントロールを配置した画面です。

入力用画面の作成

ここまで来たら、あとはボタンにクリックイベントを仕掛けるだけです。
01// ログインユーザのメールDB取得
02var dbdir:NotesDbDirectory = session.getDbDirectory("");
03var maildb:NotesDatabase   = dbdir.openMailDatabase();
04var cal:NotesCalendar      = session.getCalendar(maildb);
05
06// 日付のフォーマット決定
07var formatymd = new java.text.SimpleDateFormat( "yyyyMMdd" );
08var formathms = new java.text.SimpleDateFormat( "HHmmss", Locale.JAPAN );
09
10// カレンダーエントリの日時の取得
11var tdy:java.util.Date = formatymd.format( new java.util.Date() );
12var dt1:java.util.Date = formatymd.format( requestScope.StartDate );
13var dt2:java.util.Date = formatymd.format( requestScope.EndDate );
14var tm1:java.util.Date = formathms.format( requestScope.StartTime );
15var tm2:java.util.Date = formathms.format( requestScope.EndTime );
16
17// 画面の入力情報の取得
18var sbj:String = requestScope.Subject;
19var cat:String = requestScope.Categories;
20var loc:String = requestScope.Location;
21var prv:String = requestScope.Private;
22
23// iCalendar Formatのデータを作成
24var icale:String =
25    "BEGIN:VCALENDAR\n" +
26        "BEGIN:VTIMEZONE\n" +
27            "TZID:Japan\n" +
28            "BEGIN:STANDARD\n" +
29                "DTSTART:19390101T000000\n" +
30                "TZOFFSETFROM:+0900\n" +
31                "TZOFFSETTO:+0900\n" +
32                "TZNAME:JST\n" +
33            "END:STANDARD\n" +
34        "END:VTIMEZONE\n" +
35        "BEGIN:VEVENT\n" +
36            "DTSTART;TZID=Japan:" + dt1 + "T" + tm1 + "00\n" +
37            "DTEND;TZID=Japan:" + dt2 + "T" + tm2 + "00\n" +
38            "TRANSP:OPAQUE\n" +
39            "CATEGORIES:" + cat + "\n" +
40            "CLASS:" + prv + "\n" +
41            "SUMMARY:" + sbj + "\n" +
42            "LOCATION:" + loc + "\n" +
43        "END:VEVENT\n" +
44    "END:VCALENDAR\n";
45
46var cale:NotesCalendarEntry = cal.createEntry( icale );

1~4行目で、ログインユーザのカレンダーを取得しています。
6~8行目は、iCalendar フォーマットで日付データを登録する際の手間を省くためのものです。
10~15行目では、画面の入力された開始/終了日時のデータを取得しています。サンプルなので、エラーチェックなどは一切していません。
17~21行目では、件名やカテゴリなどのカレンダーエントリの入力情報を取得しています。
すべてrequestScope変数経由で取得しています。
23~44行目がiCalendarフォーマットのデータを作成している個所です。
26~34行目は入力データが日本時間であることを示すためのものです。この設定を行わないと、グリニッジ標準時でデータが作成されてしまうようなので気を付けましょう。
35~44行目が実際のデータを登録しているところです。
46行目で、カレンダーエントリとして作成している個所です。

ボタンのイベントオプションで「全部更新」等にしておけば、カレンダーエントリを保存する等の処理を記述する必要はありません。

これを実行すると、画面に入力した内容でカレンダーエントリが作成されます。
ちゃんと、空き時間の設定もしてくれるので、このサンプルを使ってエントリを登録した後、ノーツから、会議招集をしても、予定済みになってくれます
(iCalendar の説明によれば、38行目の設定がしてあるからだと思われます)。

これで、XPages からカレンダーにエントリを作成するのが簡単になりますね。
面白いので、是非チャレンジしてみましょう。


今日はこれくらいで。

あ、無茶ブリの、Embedded Experienceはもうちょっとしてからやります。
でも、すでに試したよ!とか、これから試すぞ!という方は、是非やってください。
ついでに、その成果を発表してください!


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2013年3月10日日曜日

Lotus DominoをWindows Server 2008で起動する際の注意事項

今日は自分のための備忘録記事です。

私は、業務上、何度もLotus Dominoのテスト環境を作成します。
バックアップを作成して戻せばよいという話もあるのですが、必要なバージョンが微妙に異なっていたりするので(Fixpackの有無等)、面倒でもその都度、インストールしなおしています。

そんな中でも、Windows Server 2008 にLotus Domino 8.5.x をインストールする際に、いつも忘れてしまうことがあります。

Windows Server 2008上でLotus Domino をサービスとして起動する場合、追加の設定が必要なんですね。
IBMのサポートサイトにもWindows Server 2008 で Lotus Domino をサービスとして起動できないという記事で乗っているので、すぐにわかるのですが、やはりきちんと覚えよう!ということで、記事として残しておきます。


そもそも、Windows Server 2008 上でLotus Domino 8.5を通常のプログラムとして起動する場合には、このエラーは発生しません。
サービスとして起動する場合にのみ発生する可能性があります。

サービスとして起動すると、サーバーコンソール画面が表示されないので、正常に起動できているかどうかも分かりにくいんですね。ただ、クライアントから接続できないので、あれ?と思って確認すると、サービスが終了しているという・・・

このような状況に陥ったら、次の手順で確認・修正しましょう。

1.サーバのnotes.iniを確認・修正する
 (Lotus Dominoのプログラムフォルダにある)Lotus Dominoのnotes.iniを開いて、
 TCPIP_ControllerTcpIpAddress=で始まる行があるかどうかを探す。
 ない場合は、
 TCPIP_ControllerTcpIpAddress=「Lotus DominoがインストールしてあるPC」のIPアドレス:2050
 と入力する。
 例)TCPIP_ControllerTcpIpAddress=192.168.1.100:2050

2.サーバのdconsole.iniを確認・修正する
 (Lotus Dominoのデータフォルダにある)Lotus Dominoのdconsole.iniを開いて、
 [DominoConsole]
 セクションに
 LocalHost=
 で始まる行があるかどうかを探す。
 ない場合は、
 LocalHost=「Lotus DominoがインストールしてあるPCのコンピュータ名」:2050
 と入力する。
 例)LocalHost=DominoServer01:2050

これでOKです。
なお、dconsole.iniは、一度でも「Lotus Domino Console」を実行しないと作成されません。

Lotus Domino Consoleをクライアントで実行する場合は、「2.サーバのdconsole.iniを確認・修正する」の操作は不要です。
クライアントPCで、Lotus Domino Consoleを実行して、 
[ファイル][サーバーを開く...]メニューを実行します。
すると、「サーバーを開く」ダイアログが表示されるので、接続するサーバー名、管理者として設定されているノーツユーザ名とパスワード(HTTPパスワード)を入力して、[OK]をクリックします。
Lotus Domino Consoleのサーバーを開くダイアログ

これで、Lotus Dominoサーバに接続できるようになります。
これで終了すると、今入力した情報がdconsole.iniに記録され(パスワードを除く)、次回からは選択できるようになります。


うん。これでもう忘れないし、忘れても大丈夫!
たまにはこんな記事もいいでしょ?

2013年3月3日日曜日

NotesCalendar クラスについて

皆さん、こんにちは!恒例の日曜ブログの時間です。(でも、きっと読むのは、月曜日だよなぁ)
諸事情により、私は現在、平日の日中にブログを執筆できないので、このように週末に書いているのです。
もっとも、普通に仕事をしていれば、日中にブログ記事を書いている余裕はないはずなので、あまり気にはしていません。

ということで、本題に入りますが、
にほんブログ村 IT技術ブログへ
をクリックしてからにしましょう。少しはクリックしてくれる方が増えましたが、まだまだ足りません。
Notes/Dominoの記事を探して迷い込んだ貴方!ちゃんとクリックしてから出て行ってくださいね。



では、本題です。
今日は、IBM Notes/Domino 9.0に関することです。
新しいクラスとしてNotesCalendarができましたよ!という話をどこかで聞いたことがあるかと思います。
でも、それが一体、どのようなものなのか?何ができるのか、どうやって使うのか?などの情報がほとんど見当たりません。
なので、当ブログで少しずつ見ていきます。
もちろん、まだベータ版しか手元にありませんので、リリースされた時には「ガラッと」変わっている可能性もありますので、ご容赦ください(リリースされたら、ちゃんと検証しなおしますって)。

まず・・・NotesCalendar クラスとは?
少なくとも、XPages に搭載されている JavaScript クラスの一つであることは間違いありません。
下図は、Domino Designer のヘルプ画面です。「IBM Domino Designer XPages Reference」というカテゴリの中にNotesCalendar があるのが分かるでしょうか?
IBM Domino Designer のヘルプ

ここで、LotusScript クラスのカテゴリを見ましたが、そこにはNotesCalendarという文字は見当たりませんでした。
では、LotusScriptでは、NotesCalendarクラスは使えないのでしょうか?
いいえ。実はLotusScript でも使えるのです。まぁ、いつものことですね。そう、マニュアルが間に合ってないだけのことです。
ただし、マニュアルを作らず、そのまま隠しのクラスとしてしまう可能性もありますので、ここは実際のリリースをお待ちください。

それで、NotesCalendar クラスとは何なのか?
ノーツカレンダーのエントリに対してRead/Write することができます。
Readする場合、iCalendar 形式で結果が取得されます。
Notes/Domino独自のフォーマットではなく、スケジュール標準フォーマットなので、いろいろなプログラムとの相互アクセスができる!と考えれば、何の問題もないでしょう。


では、どうやって使うのか?
今回は、ヘルプにあったサンプルを元に、ノーツカレンダーのエントリを取得するというものを作成してみました。
Dominoサーバ上にノーツDBを作成します。
home.xspというXPageを作成します。
「Button」と「Multiline Edit Box」コントロールを一つずつ配置します。
「Multiline Edit Box」 は、RequestScopeのstatusという変数にバインドしておいてください(下図)。
Multiline Edit Boxのバインド先

「Button」のイベントに次のコードを記述します。
   
01var dbdir:NotesDbDirectory = session.getDbDirectory("");
02var maildb:NotesDatabase = dbdir.openMailDatabase();
03var cal:NotesCalendar = session.getCalendar(maildb);
04var dt1:NotesDateTime = session.createDateTime( "2013/03/02 00:00:00" );
05var dt2:NotesDateTime = session.createDateTime( "2013/03/02 23:59:59" );
06
07var entries:java.util.Vector = cal.getEntries(dt1, dt2);
08for (i = 0; i < entries.size(); i++) {
09    var cale:NotesCalendarEntry = entries.elementAt(i);
10    requestScope.status = requestScope.status + cale.read() + "\n";
11    cale.recycle();
12}

03行目で、ログインユーザのメールDBからカレンダー情報を取得しています。
07行目では、04、05行目で指定した日付の間のカレンダーエントリを取得しています。エントリが複数作成されている可能性があるため、java.util.Vectorというデータ型が返されるようになっています。
08~12行目では、一つ一つのカレンダーエントリの処理を行っています。
09行目で、カレンダーエントリを取り出して、10行目でその内容を読んで(cale.read())、requestScope.statusに追加しています。
こうすることで、ボタンをクリックすると、カレンダーエントリの内容をMultiline Edit Boxに表示します。

下図は実際に実行した結果です。
NotesCalendar クラスのサンプルの実行結果

何やら、見慣れない形で出力されています。
今回、該当するカレンダーエントリは1件だけにしておいたので、1件分のデータが出力されているのですが、これがiCalendar形式のデータということになります。

メモ帳などにこのデータを貼り付けて、拡張子を「ics」として保存すれば、iCalendar形式のファイルになります。
ノーツクライアントで開けば、カレンダーにインポートすることもできます。
(ただし、そのまま実行しても、すでに同じエントリがカレンダーにあるので、確認はできません。予め、ノーツのカレンダーエントリを削除してから実行するとわかりますよ)


といったところで、今回は終わりです。
他のメソッドやプロパティは次回以降に・・・






【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2013年2月24日日曜日

XPages Extension Library Japan プロジェクトをご存知ですか?

皆さん、こんにちは。
もうすぐ、Connect 2013から1か月が過ぎようとしています。時間はきがつくと、あっという間に過ぎていきます。取り返しのつかないものなので、瞬間瞬間を大事にしていきたいです。

さて、今日はConnect 2013ネタではありません。・・・が、とても大事なことなので、もう一度お伝えします。

とは言っても、深刻な話ではないので、まずはこちらのボタンを軽くクリックしてから先へ進んでください。
にほんブログ村 IT技術ブログへ




さて、それでは。

タイトルにもありますが、皆さんは「XPages Extension Library Japan プロジェクト」ってご存知でしょうか?
以前にもこのブログ内でちょこっとだけ宣伝したことがありますが、関連記事の中に書いたものなので分かりにくいかな?と思い、今回はこの話をメインにします。


まず、「XPages Extension Library Japan プロジェクト」とは何ものか?
OpenNTF.org の XPages Extension Library を日本に展開するためのプロジェクトです。
XPagesは多くの機能を兼ね備えていますが、それでも機能が不足していることは否めません。
そこでそれを拡張したのがXPages Extension Libraryです。
これは、 OpenNTFというNotes/Dominoの便利ツール(サンプルテンプレートやプラグイン等)をプロジェクト単位で登録してあるサイトです。

皆さんも一度くらいは訪れたことがあるのではないでしょうか?
ただ、残念なことに英語で記述されているのがほとんどなんですね(サイト自体も英語版で構築されていますし)。
となると、私のように「英語を読むのがちょっと・・・」ということで敬遠されている方が多いのではないでしょうか?

しかし、たったそれだけの理由で使うのをやめてしまうのはもったいない!分かれば、もっと便利に使えるのに!XPagesの良さを分かってもらえるのに!
ということで、サンプルアプリケーションを日本語翻訳してみよう!と、立ち上がったプロジェクトなのでした。

実はすでに、2回のベータリリースを行っています。(知ってましたか?)
XPages Extension Library Japanにあります。是非、一度ダウンロードして使ってみてください。

ただし、使っていただくには事前準備が必要になります。

  • Lotus Notes/Domino 8.5.3 + XPages Extension Library
  • Lotus Notes/Domino 8.5.3 + Upgrade Pack 1
  • IBM Notes/Domino 9.0 Social Edition
のいずれかの環境が必要です。
特に、XPages Extension Libraryは、インストール方法が特殊なので注意が必要です。
でも、大丈夫!OpenNTF XPages Extension Library のインストール方法にIBM Championの加藤さんが懇切丁寧に記述してくれています。
こちらの加藤さんは、私と同じようにXPages Extension Library Japan プロジェクトのコアメンバーの一人です。

他にも同じく、IBM Championの吉田さんやネオアクシスの佐藤さん、阿部さんなど、テクてくでおなじみのメンバーも参画しています。
そして、日本IBMからも、佐藤さん、小峯さん、小野さん、祖父江さんと、錚々たるメンバーがそろっています。

このように、従来では考えられなかったような会社という組織を超えた中で、このプロジェクトは進行しているのです。


さて、さきほどこのプロジェクトはXPages Extension Libraryのサンプルデータベースを日本語翻訳してみよう!ということで立ち上がったといいましたが、実際の目的はもっと先にあります。

XPagesは(当たり前ですが)全世界で使われているので、日本では「ちょっと使いづらいよなぁ」というものもあったりします。
そういったニッチな要件を満たすような機能は、なかなか製品に組み込まれることはありません。
そこで、それを実装してみようではないか!というのが本当の目的です。

ただ、いきなりそれをやっても、皆さんがXPagesに対して興味を持っていないのであれば無意味です。
そこで、まずはXPagesのサンプルデータベースの日本語翻訳化から始めよう!ということになったのです。

もっとも、そもそもXPagesの標準機能だって使いこなせていないのに何がExtension Libraryだよ!という方もいらっしゃるでしょう。そんな方に、お勧めのデータベースがあります。Demonstration Application for XPagesです。
こちらは、XPagesの標準機能の実装紹介のような形のデータベースです。
まだ、英語版だけなのですが、

現在、作業中のXPages Extension Library内にある残りのサンプルデータベースの翻訳が完了すれば、こちらのデータベースの翻訳もやってみようということで検討中です。


ソーシャルビジネスということで、こういった活動を今後も続けていきますが、皆さんのご協力がなければ、意味がありません。
是非、ご協力をお願いします。




なお、今回のお話はスライドとしてまとめられていますので、そちらを読んでいただくとより一層わかると思います、




◆クリックして応援よろしく!◆
にほんブログ村 IT技術ブログへ ブログランキング【くつろぐ】
人気ブログランキングへ blogram投票ボタン