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

Translate

2014年11月19日水曜日

XPagesDayはどうでしたか?

こんばんは。2日間にわたって開催されたXPagesDay 2014。いかがでしたか?
基本情報から上級テクニック、そして今後のリリースについてまでいろいろな情報が飛び出しました。
すでにXPagesを始めている方も、これから始めようという方にもご満足いただけたのではないでしょうか。

私のセッションでは昨年に引き続きDominoデータアクセスサービス及びRESTについて話をさせていただきました。

セッション資料をslideshareに公開しましたので、参照していただければ幸いです。
ちなみに、こちらですね。



また、昨年の資料はこちらの記事に書いてありますので、併せてご参照ください。
XPagesDay2013開催中!



IBMの佐藤様のセッションでも言われていましたが、XPagesはまだまだ進化します。
私もその進化についていけるように、常に学習していきます。
皆さんも、どんどん学習してXPagesを楽しみましょう!


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

2014年11月17日月曜日

XPagesDay2014!!!

こんにちは。久しぶりの投稿です。なんと1ヶ月以上、空きました。
わっはっは。サボっていたわけではありませんよ。

なぜか!?

それは、あの一大コミュニティイベントであるXPagesDayが今年もやってくるからです!!!
3年連続となる今年もWebセッションとなります。


僭越ながら、私もまたまたセッションを担当させていただくことになりました。
そのため、ブログへの投稿ができない状態でした・・・

ちなみにセッションの申し込みはこちらからできますので、まだという方は是非お申し込みください。

日付はなんと、今週の2014年11月18日、19日。あれ?もう明日じゃないですか!?
忘れてた!という方は急ごう!!


なお、私は11月19日の
【B-3】XPagesでRESTを使ってみたらこんなんだった PartII
を 担当します。
資料のタイトルページ


なお、告知がこんな日になったのは、資料が出来上がらなくて、本番当日、ヤバいどうしよう・・・という状態だったということに他なりません・・・



では、当日Web上でお会いしましょう!

2014年10月7日火曜日

アーカイブの設定内容を取得する

皆さん、こんにちは。10月に入りましたが大型台風が続々やってきています。
注意してくださいね。台風のときはなるべく出歩かないように。できることなら在宅勤務にしましょう(私の願いでもあったりします・・・)。


さて、今日も張り切っていきましょう。
とその前に・・・にほんブログ村 IT技術ブログへをクリックしてくださいね。



ではでは。
今日は久しぶりのLotusScriptです。
そして、いまだにアクセスが多い「アーカイブ」についてです。



メールのアーカイブをするのがほとんどだと思いますが、どんな設定になっているかを確認する方法が分かりにくいですよね。
通常、ノーツDBのプロパティから「アーカイブの設定」というボタンをクリックして(下図)、専用の画面上で確認します。
ノーツDBのプロパティ
アーカイブの設定画面

特殊な画面なので、他の方法では取得できないかな?と思っていたのですが、調べてみたらプロフィール文書の集合体でできていたことがわかりました。
であれば、LotusScriptで取得することができるのではないか?という事でサンプルを作ってみました。

   
Sub Click(Source As Button)
    Dim session   As New NotesSession
    Dim db        As     NotesDatabase
    Dim pdoc      As     NotesDocument
    Dim proDoc    As     NotesDocument
    Dim i         As     Integer
    Dim proNum    As     Integer
    Dim proName   As     Variant
   
    Set db   = session.GetDatabase( "Dominoサーバー名", "メールファイル名" )
    Set pdoc = db.GetProfileDocument( "archive profile" )
   
    proNum   = Ubound( pdoc.GetItemValue( "ArchivePrivatePolicyList" ) )
    proName  = pdoc.GetItemValue( "ArchivePrivatePolicyList" )
   
    For i = 0 To proNum
        Set proDoc = db.GetProfileDocument( proName(i) )
        Msgbox _
        "アーカイブ名:" & proDoc.GetItemValue( "FullName" )(0) & Chr$(10) & _
        "ファイル名:"   & proDoc.GetItemValue( "ArchivePath" )(0), _
        0 + 64, "アーカイブDBファイル名"
    Next
End Sub

こちらのサンプルは、指定したメールDBのアーカイブDBファイル名を表示するものです。
アーカイブの条件は複数設定できるため、それぞれの条件でどのアーカイブDBが設定されているのかを取得して、メッセージボックスで条件の名前とともに表示しています。


これを応用すれば、アーカイブを設定しているユーザがどういうファイル名でアーカイブを取得しているのかがわかり、一括で管理できるようになるのではないでしょうか。

気になったら試してみてください。
では、今日はこの辺で・・・



※今回の記事は、私の調査に基づくものであり、公式見解ではありません。サンプルプログラムの利用にあたっては自己責任の上でご利用ください。





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

2014年9月24日水曜日

XPagesで複数DBの内容を一つのビューとして表示させてみる

秋分の日を迎え、日が短くなり、いよいよ秋本番となってきました。
秋と言えば、スポーツの秋、食欲の秋、読書の秋、等々いろいろありますが、やっぱり「Notes/Dominoの秋」でしょう(笑)。

ということで今日もブログ記事を更新です。
早速本題に・・・と行きたいのですが、恒例のボタンクリックをしてくださいね。
にほんブログ村 IT技術ブログへ


では本題に入りましょう。今日もXPagesについてです。


XPages化にあたっての問題点?
先週の9月16日にノーツコンソーシアムのXPages研究会がありました。
その中で既存のノーツDBをXPages化するにあたって、質問がありました。
「複数のノーツDBに情報がわかれて登録されている。そのため、毎回毎回それぞれのDBを閲覧しないといけない。XPages化するにあたって一つのビューから複数のノーツDBの情報を参照することができないだろうか?」
というものです。

参加者たちは、複数のデータソースが定義できるんだから実現できるんじゃないかな?
と怪しげです。

これが解決すれば、XPagesの導入の手助けになるのであれば、是非解決したいところです。
さらには、こちらのスキルのレベルアップにもなります。
という事で私が独自に調べてみました。


考えてみよう
まず、複数のノーツDBの情報を表示するということなので、新規にノーツDBを作成してその中で表示させることにしました。


次にノーツDBの情報を表示するとなっていますが、ここではビューの情報が表示されれば良いでしょう。
ということで、ビューコントロール(9.0.xだと「表示」コントロールという名称です)が使えるかな?と思いましたが、以下の理由でやめました。
  • 複数のノーツDBの定義方法が不明(そもそもできるのかどうかも不明)
  • 複数のノーツDBが同じビュー名、さらに同じ構造(列情報)になっているか不明

アプリケーションを作成するのに、決まった方法はないので、ビューコントロールに固執する必要はないだろうということで、別の方法で解決することにしました。

とりあえず、表示させたいノーツDBのビューをデータソースとして定義してみることにしました。
データソースは「Dominoビュー」とすれば良いはずです。

そして、複数のデータソースを連結するのと、ビューの内容を表示するということで、「繰り返しコントロール」を使うことにしました。
先に定義したデータソースはここでJavaScriptを使って連結すればできるかな?と。

これがうまくいけば、後は繰り返しコントロールの中にフィールドを配置すれば、できる!(はず・・・)


実装してみよう
なんとなく、実装の方法が見えてきたので、実際に実装してみましょう。
※テストプログラムなので、こんな見切り発車的なやり方してますが、実際の開発ではちゃんと設計してからやりますよ(多分・・・)。
まず、新規にノーツDBを作成します。ここでは、「multiview.nsf」という名前で作成しました。
新規ノーツDBを作成

次に、XPageを作成します。名称は任意ですが、ここでは「main」としました。
「main」という名前でXPageを作成

「main」XPageを開いたら、データソースを定義します。
ここでは、「TagCloudBBS.nsf」(タグクラウド掲示板)と「wfboardxpg.nsf」(全社掲示板)という2つのノーツDBのビューをデータソースとして定義します。それぞれ「($All)」ビューを定義してあるのでそれを定義します。
画面だと見づらいので、ソースコードを書き出します。   
    <xp:this.data>
        <xp:dominoView var="view1"
            databaseName="miyo\XPages\MultiDataSource\TagCloudBBS.nsf" viewName="($All)">
        </xp:dominoView>
        <xp:dominoView var="view2"
            databaseName="miyo\XPages\MultiDataSource\wfboardxpg.nsf" viewName="($All)">
        </xp:dominoView>
    </xp:this.data>


各ノーツDBの($All)ビューはこんな感じに作ってあります(手元にあったテスト用のノーツDBを使っています)。

タグクラウド掲示板の($All)ビュー

全社掲示板の($All)ビュー


別々の設計要素になっていることがわかってもらえましたでしょうか?
ただし、まるっきり別々になっていると統合したビューとして表示させるときに問題になるので、
「タイトル」「最終更新日」「文書UNID」の列だけは作成するようにしました。


そして今度は、「繰り返しコントロール」を配置します。名前はデフォルトのままで構いません。
繰り返し限度もデフォルトのままで良いでしょう。
コレクション名には任意の名前を入力します。ここでは「rowData」としました。
使用するバインドデータは、JavaScriptにして次のような式を入力しました。   
 var db1ID = view1.getParent().getReplicaID();
 var db2ID = view2.getParent().getReplicaID();
 var array1 = view1.getColumnValues(4) + ";" + view1.getColumnValues(1) + ";" + db1ID + ";" + view1.getColumnValues(6);
 var array2 = view2.getColumnValues(2) + ";" + view2.getColumnValues(0) + ";" + db2ID + ";" + view2.getColumnValues(3);
 var retArray = array1.concat(array2);
 retArray.sort( function( a, b ) {
    if ( a < b ) return 1;
    if ( a > b ) return -1;
    return 0;
 });
 retArray;   

array1というのは「TagCloudBBS.nsf」(タグクラウド掲示板)のデータソースをカスタマイズした配列です。
array2というのは「wfboardxpg.nsf」(全社掲示板)のデータソースをカスタマイズした配列です。
それぞれ、「最終更新日」、「タイトル」、「ノーツDBのレプリカID」、「文書UNID」を";"で結合しています。
そして、array1.concat(array2)で配列同士を結合してretArrayに代入しています。
このままだと、array1の後ろにarray2が配置されるだけなので、sort関数で最終更新日の降順に配列を並び替えています。
そして並び変わった配列を戻しています。
※JavaScriptの関数についてはgoogle検索等で調べてください。たくさん出てます。


データソースはできたので・・・
これで、データソースの定義はできました。
次に実際に値を表示させるための設定を行います。
まずは、繰り返しコントロールの配下に「1行4列」の表を作成します。
幅は100%にしておきます。

一番左のセルに「計算結果フィールド」コントロールを配置します。

ここで本当にデータが生成されているのかを確認するために
値の式を
rowData
と入力してみましょう(単純データバインディングではなく、JavaScriptに変えてから入力します)。
できたら、Webブラウザでプレビューしてみてください。
繰り返しコントロールのデータを表示してみた

なんとかデータは表示されているようです。ですが、これではただ単に表示されているだけでほとんど役に立ちません。
そこで、式を次のように修正します。
 var xx = @Explode( rowData, ";" );
 xx[0]
これは、繰り返しコントロールのデータを";"で区切った配列として扱い、そのうち1番目のデータを返すというものです。1番目のデータは「最終更新日」として作成してあるので、つまりは最終更新日だけをひょうじするというものになっています。


二番目のセルには「リンク」コントロールを配置します。
ラベルには以下の式を入力します。
 var xx = @Explode( rowData, ";" );
 xx[1]
先ほどの式との違いは、配列の2番目のデータを使用するというところです。2番目はタイトルを配置しているので、タイトルが返ってきます。


また、タイトルをクリックしたら該当文書が開くようにしたいので、リンクタイプに以下の式を入力します(横の◇をクリックして、「値の計算...」を選択します)。
 var xx = @Explode( rowData, ";" );
 var url = context.getUrl();
 var sPath = url.getScheme() + "://" + url.getHost() + ":" + url.getPort() + "/";
 sPath + xx[2] + "/%24%24OpenDominoDocument.xsp?documentId=" + xx[3] + "&action=openDocument";

sPathというのは現在のサーバのURLパスを示しています。
"/%24%24OpenDominoDocument.xsp?documentId="というのは、指定した文書UNIDをXPageで表示するというURLパラメータです。
*1 ここではテストプログラミングなので、それぞれのノーツDBにあらかじめ文書表示用のXPageを作成してあります。
*2 表示用のDB(新規作成)と既存のノーツDBが同じサーバ内にあるという前提で作成してあります。

3番目のセルにも「計算結果フィールド」コントロールを配置して、以下の式を値として入力します。
 var xx = @Explode( rowData, ";" );
 xx[2]
これはレプリカIDを返す式です。

同じように4番目のセルにも「計算結果フィールド」コントロールを配置して、以下の式を値として入力します。
 var xx = @Explode( rowData, ";" );
 xx[3]
これは文書UNIDを返す式です。


保存して、Webブラウザでプレビューしてみたのが次の図です。
プレビューしてみた

まだちょっと情けないですが、出来ています。
この後、列タイトルの表を追加したり、列幅を調整したりした結果がこちらです。
完成版


いかがでしょうか?
これで既存のノーツDBが複数に分かれていても、一つのDBを経由することで簡単に?参照することができるようになります。

文書を表示するためのXPageは今回は作成していませんが、これも新規作成したDBの中に組み込むことができますので、うまく作れば既存のDBにほとんど手を入れずにXPages化することも夢ではありません。

是非是非、試してみてください。
それでは今日はこの辺で・・・


Web化するならXPages!



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






2014年9月17日水曜日

XPagesで添付したイメージを画面に表示させる

最近、ブログの投稿がされてない!と怒られました。はっはっは・・・
でもね・・・記事を書かせたい(私のモチベーションを上げる)と思うのであれば、コメントくださいね。
役に立ったのか立ってないかだけで構いませんので、 書いてください。匿名でいいんです。
このブログはNotes/Dominoを使っていただいている皆様のために書いています。

ですが、有益な情報なのか、そうでないのかを決めるのは読んでいただいている皆様です。
ぜひ、他の利用者へのフィードバックとしてコメントをください。


想いを吐露したので、少しすっきりしました。ということで?今日もブログを更新しましょう。





XPagesについて質問があったので、それを解決する方法について書いてみます。
NotesアプリケーションをWeb化したことがある人からすると、「なんだよ、こんなの知ってるよ」という内容かもしれませんがお付き合いください。


質問内容は・・・
XPagesアプリケーションで文書に画像ファイルを添付した。
文書を開いた時にその画像ファイルをイメージとして表示させるにはどうすれば良いか?
このイメージは文書のタイトルと同等の扱いとしたい。なので、画像は文書内の目立つ場所に独立して表示させたい。
というものでした。
ノーツクライアントのアプリケーションの場合、クリップボード経由で画像ファイルを貼り付けられたので簡単に実現できますが、XPagesやWebアプリの場合はどうなんでしょう?(下図はノーツクライアントで画像ファイルを貼り付けてみたところ)
ノーツクライアントなら画像を貼り付けられる

考えてみた
Webアプリケーションの場合も考えると大変なので(めんどくさい・・・)、XPagesで実現する方法を考えてみました。
リッチテキストがあるならば、XPagesからもイメージの貼り付けはできますが、これだとその場所にしか表示できません。となると「目立つ場所に独立して表示させたい。」という要件を満たしません。
となると、やはり添付ファイルで実現するのが良いでしょう。


やってみよう
まずは添付ファイルをアップロードできるようにします。
こちらについてはXPagesで添付ファイルの処理をする(アップロード) に記事を書いていますので、そちらを参照願います。
それでは、実際に表示する方法についてみていきましょう。
画像ファイルをイメージとして表示するので、「イメージコントロール」を利用します。
イメージコントロールをドラッグ&ドロップする時に、イメージのリソースをどうするのか選択する画面になりますが、「イメージプレースホルダーの使用」を選択して[OK]をクリックしてください。
「イメージプレースホルダーの使用」を選択

プロパティの中に「イメージソース」という項目があるので、そこの◇をクリックしてスクリプトエディタを開きます。
ここに
document1.getDocument().getUniversalID() + "/$FILE/" + @AttachmentNames()
という式を記述します。
この式でWebアプリケーション上で添付ファイルを指し示すURLを生成しているのです。
「document1」はデータソースの名前なので、ご自身の環境に合わせてください。
document1.getDocument().getUniversalID()は、開いている文書の文書UNIDを指します。
添付ファイルは「$FILE」に格納されているので、 それを定義しています。
@AttachmentNames()は文書内にある添付ファイルの名前を取得してくる関数ですね。

これだけで終わりなのですが、添付する画像ファイルの縦横の長さがまちまちだとそのままのサイズで表示されるので文書ごとに統一感がなくなります。
そこで「高さ」と「幅」に固定値を設定しておきます。ここでは両方とも150ピクセルとしました。
イメージコントロールのプロパティ

実行してみた
実際にXPagesからファイルを添付して開きなおした状態がこちらです。
XPagesで添付ファイルを表示してみた

これの優れているところは、添付されているファイルが画像ファイルであればノーツクライアントから添付しても正しく表示されるという事です(画像を直接貼り付けている場合は不可です)。



注意事項
ここで実現している方法は、文書中に添付ファイルが一つしかないこと、添付ファイルは画像ファイルである事ということが注意点としてあります。
添付するファイルの数を限定する方法については、XPagesで文書保存時に添付ファイルの数を限定させるには で書いていますので、そちらを参照願います。



このようにちょっとした工夫でできますので、色々と試してみてください。
では今日はこの辺で・・・

2014年8月21日木曜日

XPagesでワークスペースを表現してみよう

みなさん、こんにちは。
秋の気配がしたかと思ったのですが、まだまだ暑いですね。気温の上下に影響されて体の調子を悪くしないように気を付けましょう。

さて、今日も始める前にボタンをクリックしてくださいね。
にほんブログ村 IT技術ブログへ


今日の話題はXPagesでワークスペースを表現してみよう!です。

1.ワークスペースのおさらい
Notesクライアントの機能の一つに「ワークスペース」というものがあります。
Notesアプリケーションをアイコン形式で表示するあれですね。
Notesクライアントのワークスペース
そんなワークスペースですが、Notesクライアントでしか使えないという弱点があります。
最近では、Notes Browser Plug-inがありますが、あれはWebブラウザ上でNotesクライアントのBasic版を動かしているようなものなので、Notesクライアントで動いていると判断して良いでしょう。

このワークスペースがWebブラウザ上でも使えたら嬉しいですよね。
ということで・・・またまたOpenNTF.orgから探してきました。あるもんなんですね。こちらのXPages HomePageがそうです。

こちらのアプリケーションは2012年12月が最後の更新となっていますが、Notes/Domino 9.0でも動作しました。
また、純粋なXPagesアプリケーションとして作られているので、余計なものをインストールしたりする必要がないのも特徴です。


2.ダウンロードしよう
では、さっそくダウンロードしてみましょう。
プロジェクトページにある「Downloads/Releases」のタブを開いて、「Release 3.0」をクリックします。すると、「XPages Applications Homepage.zip」というファイルがあるので、それをクリックします。
ダウンロードできたら、適当なフォルダに解凍します。下図がzipを解凍した状態です。
この中にはNotesテンプレート、利用手引書等が入っています。
※この辺りは、OpenNTF.orgのプロジェクトはどれも同じですのでわかりやすいですね。
zipファイルの内容


3.使ってみよう
使い方は簡単です。
zipファイルの中にある「Workspace.ntf」をDominoサーバにコピー&署名して、このテンプレートを元にDominoサーバ上にNotesアプリケーション(~.nsf)を作成するだけです。
作成したら、Dominoサーバの管理者ユーザに[Admin]ロールを付けて、「管理者」のアクセス権を付与します。
※ローカルクライアント上でも動作するのですが、ワークスペースにNotesアプリケーションを登録するにはログインする必要があるので、Dominoサーバ上でのテストをお勧めします。

下図はWebブラウザで、管理者ユーザでログインして開いた時の画面です。
Notesアプリケーションをブラウザで開いてみた

このアプリケーションは以下の機能を持ち合わせています。
  1. アプリケーションのロゴとタイトルの変更
  2. DominoサーバのカタログDB(catalog.nsf)との連携
  3. 共通ワークスペースへのアプリケーション登録と名称の変更
  4. 個人ワークスペースの作成とアプリケーション登録

それでは、一つずつ簡単に紹介していきます。
  1. アプリケーションのロゴとタイトルの変更
[Admin]ロールを持ったユーザでログインしたときだけ行うことができます。
画面の右上にある「Profile」というリンクをクリックします。
Profileの編集画面に切り替わるので、「Application Title」や「Application Logo」「Servers」を編集します。
Profileの編集画面
「Application Title」と「Application Logo」の編集は任意ですが、「Servers」は必ず指定する必要があります。
サーバのアイコンをクリックすると、Dominoサーバの一覧が表示されるので、ワークスペースに登録したいNotesアプリケーションがあるサーバを選択します。
設定したら、[Save]ボタンをクリックします。

  1. DominoサーバのカタログDB(catalog.nsf)との連携
本アプリケーションにNotesアプリケーションを登録します。これにより、ワークスペースへアプリケーションアイコンを表示する準備ができます。
こちらも[Admin]ロールを持ったユーザでログインしたときだけ行うことができます。
画面右上にある「Admin Config」をクリックします。
画面が切り替わるので、「Sync with server」というリンクをクリックします。
catalog.nsfとの同期を実行
注)
この機能は日本語版のDominoで実行するとエラーになります。
正常動作させるようにするには、本アプリケーションの「GenWS」というエージェントの「Initialize」の51行目を以下のように修正してください。
×  Set serView = catalogDb.getView("Applications\by Server")
○  Set serView = catalogDb.getView("ByServer")   

カタログDBとの同期が終わると、Notesアプリケーションの一覧が表示されます。
「Sync with server」のリンクの横には取り込んだNotesアプリケーションの数が表示されます。
カタログDBから取り込んだ内容の一覧

  1. 共通ワークスペースへのアプリケーション登録と名称の変更
共通ワークスペースは「Business」「Collaboration」「Administration」「Notes Apps」という名称で用意されています。これらの名称は変更が可能です(後述)。このうち、「Notes Apps」という名称のタブは登録したアプリケーションがNotesクライアント上で開くようになります。
この共通ワークスペースへのNotesアプリケーションの登録は[Admin]ロールを持ったユーザだけが行えます。
共通ワークスペースへ登録する場合、「Admin Config」の画面で行います。
まず、登録したいタブを選択します。
タブの選択

次に画面に表示されているアプリケーションの一覧からタブに登録したいものを選択して、一番左にある□にチェックを入れます。
タブに追加するアプリケーションを選択

最後に画面上部にある[Add]ボタンをクリックします。
成功すると、Titleの前にが表示されて、Visibility列には登録したワークスペースタブの名前が表示されます。
タブに追加された状態

では、本当にワークスペースタブに登録されたのかを確認してみましょう。
画面右上の「Workspace」というリンクをクリックします。
ワークスペースを開いたけど・・・

あれ?表示されていませんね?
実は、先ほどは「Collaboration」という名称のタブに登録したので、現在、選択されている「Business」タブには表示されていないんですね。
でも、よく見ると、「Collaboration」タブのところに(3)という表示されています。
では、「Collaboration」タブをクリックしてみましょう。
先ほど登録したアプリケーションのアイコンが表示されているのがわかります。
Collaborationタブにアイコンが!

ちなみに、ワークスペースタブの名前を変更するには、この画面の何もないところでマウスを右クリックします。すると、メニューが表示されるので、「Rename Workspace Page」を選択します。
右クリックメニュー

すると、名称変更のダイアログが表示されるので、変更後の名称を入力して[Rename]ボタンをクリックします。
ワークスペースタブの名称変更ダイアログ

変更内容は即時に反映されます。
名称が変更された結果


  1. 個人ワークスペースの作成とアプリケーション登録
個人用のワークスペースは3つまで作成できます。共通ワークスペースと合わせて7つのタブを表示することができます。
作成するにはWorkspaceの画面でマウスを右クリックして「Create Workspace Page」メニューを実行します。
新規ワークスペース作成ダイアログ

「New Workspace Page」というダイアログが表示されるので、タブの名称を入力して[Create]ボタンをクリックします。(ここでは、「MyPage1」と入力してみました)
Workspace 画面に戻ると、タブが一つ追加されているのがわかります。
個人用のワークスペースタブを追加してみた

では、今しがた作成した個人用のワークスペースにNotesアプリケーションを登録する方法についてです。
画面右上にある「Configuration」というリンクをクリックします。
すると、「Admin Config」によく似た画面になります。
Configuration画面

違うのはカタログDBとの同期ができない事、追加できるワークスペースが自分で作成したものだけになっていることです。
ちなみに共通ワークスペースに登録してあるNotesアプリケーションはこの一覧には表示されません。
ここから先の操作方法は共通ワークスペースへの登録方法と同じなので割愛いたします。


4.注意事項
このアプリケーションですが、いくつか注意事項があります。不具合とも仕様とも言い難いところなので、深い言及は避けます。
  1. 本アプリケーションの利用者は「編集者」以上のアクセス権が必要です(「作成者」だと個人用のワークスペースが作成できません)。
  2. Notesアプリケーションを検索するためには、本アプリケーションに対して全文索引を作成しておく必要があります。
  3. ワークスペースにアイコンを追加する際、そのNotesアプリケーションのACLにユーザとしてエントリが追加されている必要があります。
  4. ワークスペースにアイコンを追加する際、そのNotesアプリケーションのアクセス権が「編集者」以上である必要があります。

このうち、「3.」「4.」については以下の方法で対処することが可能です。
  • AccessLevel」というスクリプトライブラリを開きます。
  • getAccess」という関数の20行目から38行目までをコメントアウトします。
entry=acl.getEntry(@UserName());
if(entry!=null)
{
    level=entry.getLevel()
    if(level>=4)
    {
        access="Yes"
    }
    else
    {
        access="No";
    }
}
else
{
    //To find the access level for group
    access=checkGroup(server,dbPath);
}
  • getAccess」という関数の19行目の下に以下のコードを挿入します。
//To find the access level for current user    ←これが19行目
level = db.getCurrentAccessLevel();
if ( level>=2 ) {
    access = "Yes";
} else {
    access = "No";
  • スクリプトライブラリを保存します。
これでNotesアプリケーションに「読者」以上のアクセス権があれば、ワークスペースに追加できるようになります。


5.まとめ
これで、後は必要なアプリケーションを自分の好きなワークスペースに追加しておけばOKです。
本アプリケーションはWebブラウザでブックマークしておけばいつでも開けます。
NotesアプリケーションをWeb化(XPages化含む)したのは良いけど、ポータルまでは余裕がないなぁとか言う場合に使えるアプリケーションになっています。
利用方法は簡単なのでぜひぜひ使ってみてください。


6.実は作ってみました
このアプリケーション、ワークスペースを再現しているだけあってNotesアプリケーションしか登録ができないんですね。せっかくWebブラウザで開いているので、普通のWebサイトの登録もできたら、簡易ポータル的に使えるのになぁと思い・・・
上記のアプリの動きを参考にしながら、自分で作ってみました。
リスペクト版ワークスペース(笑)

こちらの機能は
  • ログインしていなくても(Anonymous許可)、共通ワークスペースを使える
  • 共通ワークスペースは管理者ユーザが作成
  • ログインすることで、自分用のワークスペースを作成できる(タブは5つまで)
  • Notesアプリケーションだけでなく、Webサイトの登録も可能
等です。

こちらのアプリのデモをご希望の方は、私にご連絡いただくか、弊社宛てにメールをお送りください。折り返し、ご連絡いたします。




ということで今日はこの辺で・・・




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

2014年8月18日月曜日

Sametime 9.0のテスト環境を構築してみました

みなさん、こんばんは。もう8月も後半を迎えました。
早いですね。もう夜も7:00を過ぎると、外は真っ暗です。秋の足音が聞こえてきてるのではないでしょうか?

さて、温めていた記事がやっと公開できるようになりました。今回は、すでにある資料に対しての記事ということで、日本IBMの方(お名前を出していいかど うかわからないので伏せておきます・・・)に内容をチェックしていただきました。この場をお借りして御礼申し上げます。ありがとうございました。

ということで、今日の話題です。


0.前置き
テクてくLotus技術者夜会では、今年(2014年)の5月と7月の2回にわたって、Sametimeのアプリケーションの開発をテーマとして開催されました。IBM Greenhouseの環境を利用することでSametimeアプリケーションのサンプルは作れるのですが、ここはやはり自分でSametimeの環境を構築した方が理解も深まるだろう!(ホントか?)ということで、テスト用環境を構築することにしました。

環境構築のための資料は、日本IBMのdeveloperWorksにアップロードされているので、それを利用して行いました。
基本的にはこの資料を見ながら作業すれば、問題なく構築できる(はず)なのですが、なぜかどっぷりとトラブルにはまってしまいました。
そこで、私なりに「ここは要注意だな!」と思ったところを挙げながら説明していきます。


1.資料のダウンロード
資料は、こちらからダウンロードできます。
IBM iNotes 9.0 - IBM Sametime 9.0 限定利用版 連携 導入ガイド (Windows 版)
PDF形式になっているので、閲覧するのにAdobe Readerが必要です。


2.構築予定の環境構成
ダウンロードした資料にも記載されていますが、今回のテスト環境はWindows版で構築するものとしました。
資料では4台の Windows Serverを使って構成していますが、そんな潤沢なH/W環境は持ち合わせていないので、Sametime System ConsoleとSametime Proxyを1台のサーバーにまとめることで3台の構成にしてみました(あまり変わらないかな・・・)
今回のサーバー構成図
役割別に表すとこんな感じでしょうか?
各サーバの役割


3. Sametime System Consoleの導入
インストールの手順は資料にあるのでそちらを参照願います。とても分かり易いですよ!
さて、そんな資料でも、やはりすべてが網羅されているわけではありません。
予想だにしなかったトラブルは発生するものです。
まず、Sametime System Consoleの導入までは、全く問題なくできました。
しかし!!!ここで事件(笑)が発生しました!
LDAPの登録(資料のP.8「3.6. SSC の開始と管理コンソールへのログインとLDAP の設定」)をしようとしたときにエラーが発生したのです。LDAPの登録に失敗したんですね。
原因は・・・ドミノサーバの管理者フィールドを空白にしていたことです(汗)。
テスト環境なので、「管理者(フルアクセス)」に管理者ユーザ名を入力していて、「管理者」は空白にしていたら、見事にエラーになりました。Sametime Communityの方も同様と思われますので、この欄の内容には十分注意しましょう!
管理者フィールドは必須!
ここは、素直に「管理者」に値を入力して、Dominoを再起動した後、LDAPの再登録作業を行うことで、無事に成功しました。


4.Sametime Communityの導入
Sametime Communityの導入でも、たくさん躓きました。
インストールそのものは、何の問題もなくできたのですが、ここではSametime System Consoleへの登録(資料のP.10「4.3. SSC への登録」)では、何回やっても失敗して、投げ出そうかと思ったくらいです。
ここでの注意点はポートの透過設定です。ファイアウォールでポートの許可をしておかないといけないのです(まぁ、当たり前ですよね・・・)。テスト環境だからファイアウォールなんか無効にしても良かったのですが、しっかりと覚えておかないと本番で大変な目に遭いますからしっかりと覚えましょう。
ここでは80番と9443番ポートが空いていればよいのですが、後で他のポートも空けないといけません。
なので、先に関連するポートは開けておくと良いでしょう。
Sametime Community Server によって使用されるポートに詳しく出ています。こちらのページは、Sametime 8.5バージョンになっていますが、使用するポートは変わっていませんので、問題ないでしょう。
※なお、構築しようとしている環境によってはポート番号が別のものに設定される場合もあります。その場合、各コンポーネントのプ​ロファイル格納ディレクトリのl​ogs\ 配下にある AboutThisProfil​e.txt というテキストファイルに実際の値が書いてありますので、必ず確認するようにしましょう。
私のSametime System Consoleサーバーの場合、「C:\IBM\WebSphere\AppServer\profiles\STSCAppProfile\logs」というフォルダにあり、内容は以下のようになっていました。

AboutThisProfile.txtの内容
また、資料にもある通り、「console.properties」と「productConfig.properties」の内容は変更するのを忘れないようにしましょう。これを忘れて「registerSTServerNode.bat」の実行に失敗した後で修正しても、ダメなようです。再インストールを覚悟した方がよいかもしれません。というくらい大事なところです!!(実際、私は再インストールしました・・・orz)

それと資料のP.13「4.4.3. 接続許可クライアントの設定」ですが、この設定を行うとiNotesクライアントからしか接続できなくなってしまいます。他のクライアントを利用する場合はこの設定に注意してください。
接続するクライアントのIDは資料にも記載されていますが、Table of Client types that are connecting to a Sametime serverを参照してください。


5.Sametime Proxyの導入
こちらもインストールは簡単でした。
ただし、私の場合、Sametime System Consoleサーバーと同居させていたので、Installation Manager及びWASの導入は行いませんでした。この辺りはどのような環境構築をするのかをしっかりと確認した上で行う必要があります。

さて、ここでのトラブルは・・・パスワードでした(汗)。
資料のP.14「5.5. SSC でのDB 接続とデプロイメント計画作成」のSametime ProxyサーバーのWASの管理者とパスワードを入力するところでエラーが発生しました。
なぜか
AIDSC0106E: パスワード に無効な文字が含まれています。次の文字はいずれも使用できません。
; * ! ? " / < > | + & ' ` [ ] % ^ : = -

というエラーが発生したのです。
念のため、WASの管理画面にログインすることができるのを確認して、パスワードが誤っていないことを確認しました。
それでも前述したエラーは変わりません。なぜだろうか???
ふと気が付いたのですが、私はパスワードを複雑化するために、パスワードに"."(ピリオド)を含めていました。リストには含まれていないのですが、嫌な予感がしたので、WAS管理者のパスワードから"."を除外してみました。
すると・・・
はい、成功しました(笑)。って、笑い事じゃないと思いますが・・・いつかきっと修正されることを願いましょう。
とにかく、WAS管理者のパスワードには”.”を含めないようにしましょう。なお、ここで注意事項として書きましたが、WAS管理者のパスワードの変更は他でも影響がありますので、最初から"."なしで作成しておくようにしましょう。


6.ついに動作しました!
ここまでくれば、後はもう問題ありません。実際にはSametimeクライアントを動かす段階でもトラブルはあったのですが、前述したチェックポイントをクリアしていれば、まず動きます。
それでもトラブルが発生した場合は以下のリンクを参照してみてください。きっとヒントがあります。
IBM Sametime9: トラブルシューティングとアンインストール
Sametimeログイン権限エラーの解析方法
8.5x Community server install fails to integrate with the Sametime System Console


7.おまけ
Sametimeインストールの資料にはSametime System Console及びSametime Proxyサーバーの起動用コマンドのサンプルファイルが添付されています。これ、便利なんですが、一か所だけ気を付けるところがあります。
自分で構築した環境で利用できるように、batファイルでは変数を使用しています。
この時、PROXY_HOST_NAMEはSametime Proxyのホスト名を入力するのですが先頭8文字までしか有効になりません。というより、自動生成される際に8文字で切られるようです。Proxyのホスト名が8文字より多い場合は注意が必要ということです。
set WAS_HOME=c:\IBM\WebSphere\AppServer
set HOST_NAME=ssc
set PROXY_HOST_NAME=proxy
set WASADM_ID=wasadmin
set WASADM_PW=password
ちなみに、こちらのPROXY_HOST_NAMEの値はノード名と言い、WebSphereの管理者コンソールから確認することができます(下図参照)。
Sametime Proxy サーバーのノード名
Sametimeサーバーが起動できないな?というときは、この辺を確認しましょう。




と、テスト環境として構築するのであれば、普通は引っかからない場所に引っかかってしまったのですが、本番でトラブルに見舞われることを考えれば、テスト環境で良かったなぁというところです。
また、機能限定版では使えませんが、正式にライセンスを購入すると、Sametime用のSDKが利用できます。それを利用するとXPagesアプリケーションからも在席確認やチャット機能が利用できるようになります。
是非、Sametimeを導入してそういったアプリケーションを作ってみてください。Sametimeが便利に使えるだけでなく、XPagesアプリケーションがレベルアップしますよ!


SametimeのSDKを利用したアプリ開発についてはテクてくの資料をダウンロードしてみてください。
こちらからダウンロードできます。
テクてくLotus オンラインコミュニティ
当ブログでも、サンプルができたら改めて紹介しようと思います。



では今日はこの辺で。



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