ページビューの合計

2018年7月30日月曜日

#Notes #Form を個人ごとに切り替えたい

This time I try to change the Form to be displayed for each user by using Subform and notes.ini.

みなさま、こんにちは!!
神戸は日曜早朝に逆走台風が真上を通過して行きました。
幸いにも治水対策がそれなりに施されているため、先日以上に大きな影響はありませんでしたが、被害を受けられた皆様の1日も早く日常生活に戻ることができますようお祈り申し上げます。

さて今回はWEBではよくある画面表示を個人ごとに切り替えるという機能をNotesのFormでできるか試してみましたので、報告致します。
あらかじめお断りなのですが、もっと簡単に組み込むことができるような気がするのですが、まずは私なりのやり方としてご承知ください。

そもそもWEBではCSSを利用することでテーマカラーの変更は簡単に行うことが可能です。
残念ながらNotes Formにはそのような機能が実装されておりません。
・・・もちろんXPagesなら適用できるのですが・・・

ということで、今回はサブフォームと環境設定文書の組み合わせで挑戦しようと思います。

それでは早速、サブフォームAを作成します。
今回は以下のような表を作成してみました。


続いてサブフォームBです。
わかりやすいように、表のセルの色を変更してあります。


続いてフォームを作成します。

フォームにサブフォームを埋め込むのですが、その際に「式の定義によりサブフォームを挿入」にチェックし、[OK]します。


※このオプションを選択すると、サブフォームそのものは選べなくなります。

以下のように、<サブフォームの計算結果>がフォームに貼り付きました。


それではサブフォームを表示させる式を記述します。
今回はnotes.iniにフォームの設定を行いますが、初期時にはnotes.iniにパラメーターがありませんので、その場合はサブフォームAを呼び出すように設定します。

以下の式を設定してみました。

SUBF:=@Environment("TEST_SUB");  
@If(SUBF="";"subA";SUBF)                

notes.iniに「TEST_SUB」という環境変数がない場合は、サブフォームAを。それ以外は環境変数の値で設定されたサブフォームを呼び出すというものです。


続いてビューに環境変数を切り替えるアクションボタンを作ります。
今回はアクションボタンとして「テーマカラー変更」とし、サブアクションとして「青」「赤」を選べるように設定します。


式ですが、"青"・・・サブフォームBを設定

@SetEnvironment("TEST_SUB"; "subB")  

"赤"・・・サブフォームAを設定

@SetEnvironment("TEST_SUB"; "subA")  


まずはnotes.iniに正しく書かれるか、試してみます。

初期時はもちろんnotes.iniには [TEST_SUB]は存在していません。

まずはその状態で新規作成を開いてみます。
最初に設定したように、notes.iniに[TEST_SUB]が存在しない場合は、サブフォームAを表示させておりますので、以下のようにサブフォームAが表示されました。


それではビューに戻り、「青」(サブフォームB)をクリックしてみます。
まずはnotes.iniを確認してみますと、最下行に以下設定が登録されておりました。


正しく"subB"が設定されたことが確認できました。

この状態でフォームを新規作成で開くと、以下の画面が表示されました。


正しくサブフォームBが呼び出されました。

念のためビューに戻り、「赤」(サブフォームA)に戻し、notes.iniを確認してみます。


notes.iniは正しく"subA"に変更されました。

フォームを開くと、当然サブフォームAが呼び出されます。


以上、甚だ簡単ではありますが、例えばこの機能を用いることで、多言語対応のアプリケーションに発展させることができます。

例)
 サブフォームA・・・英語
 サブフォームB・・・日本語
 サブフォームC・・・フランス語
  ・・・

初期ビューに[Language]というアクションボタンを配置し、サブアクションで各言語を並べることで、利用者のnotes.iniに言語設定が行われることになります。
次回以降、利用者は常に自分の言語でフォームが利用できるというものです。

これだけの機能が@関数だけで実現できるというNotesの素晴らしさ。
今後、Domino10や11でNotesフォームやビューがCSS対応されることに期待です!!

2018年7月17日火曜日

#XPages のソースについて

This time, I describe a little about XPages source.

みなさま、こんにちは!!
まずは先般の西日本豪雨で被災されました皆様に、心よりお見舞い申し上げます。
神戸もかなりの雨量で、未だ市内でも道路が封鎖されている場所が残っております。
氾濫すらしませんでしたが、自宅前の川が1週間を経過したにもかかわらず、普段の3倍ほどの水量が続いており、油断できない状況です。

さてそんな中ではありますが、以前より少し気になっていたXPagesのソースについて、自分の学習用に調べてみたいことがありましたので、せっかくならと記事にさせて頂きます。
ぜひ今さらと言わず、お付き合い頂けましたら幸いです。

さて過去にいくつか記事にしましたが、XPagesはGUIにてコントロールを配置し、プロパティを設定して組み上げていくことで、できるだけ簡単にプログラミングされたWEBページを生成することが目的であるNotesの設計要素であることは周知かと思います。


[設計]タブから[ソース]タブに切り替えてみますと、空白のページであっても、以下のようなソースが記述されたXMLであることがわかります。


まずはデータソースをバインドした場合の変化を見てみます。


今回は同じアプリケーション内の"planning"というDomino文書をバインドしてみました。
このように<xp:this.data>のタグ内にデータソースの定義が組み込まれることを宣言し、<xp:dominoDocument>タグでDomino文書である"planning"フォームを呼び出しています。
参考までにビューをバインドした場合、

<xp:dominoView var="view1" viewName="test"></xp:dominoView>

となります。

なおこのとき、アウトラインには以下のように表示されます。


先の文書をバインドした状態で、[編集ボックス]を追加してみましょう。
すると以下の1行追加されたことがわかります。

<xp:inputText id="inputText1"></xp:inputText>


続いて、"date"というフィールドをバインドしてみます。
以下のようにinputTextにvalueが追加されることがわかります。

次にボタンを追加してみますと、以下の一行が追加されました。

<xp:button value="ラベル" id="button1"></xp:button>


それではそのボタンに「文書の保存」を設定してみます。
以下のように"onclick"のイベントが追加され、"action"として<xp:saveDocument>が追加されました。


ここまでで[設計]画面は以下のようになっています。


それではボタン部分のソース(以下の部分)をコピーして、ソースの続きに貼り付けてみます。


すると、以下のようにボタンが追加されることが確認できます。


なおソースを確認すると、以下のように自動で"id"がユニークな番号に変化していることがわかります。


このようにコントロールを複製するような場合、もちろん[設計]画面で対象コントロールをコピーすることも可能ですが、ソース側でも同じことが可能であることがわかるかと思います。


次にカスタムコントロールを見てみます。
まずは初期作成時のソースです。


このようにカスタムコントロールのソースもXPagesのソースとまったく同一になります。

それでは編集ボックスとボタンを追加したソースもみてみましょう。

今回、値のバインドやボタンアクションの設定は省きましたが、XPagesと同一のソースであることがわかるはずです。

つまりXPageで作成したものをカスタムコントロール作り変えたり、その逆についてもいちいちコントロールの配置から行う必要はなく、ソースをコピーして貼り付けることで、同一内容でありながら、別の設計要素を作成することが可能になります。

最後にカスタムコントロールをXPagesに埋め込んでみますと、

<xc:xctest></xc:xctest>

この一行のみでカスタムコントロール"test"を呼び出すことができます。



以上、表面的なことばかりではありますが、ソースを知ることで、作業の簡素化ができる場合があるということはご理解いただけましたでしょうか。

XPages開発者はGUIを使用せず、ソースだけを直接編集して、ページを実現されている方もいらっしゃると聞きます。

個々のコントロールの記述や、値設定などを確認されても面白いかと思います。

2018年7月2日月曜日

#ノーツコンソーシアム ( #notescons )新任担当者向けワークショップ へ参加させて頂きました。

I studied to help you as a lecturer at the workshop for Notes new manager in Osaka.

みなさま、こんにちは!!
今回もまずは告知させてください。
明日、IBM Notes/Domino Day 2018 Summerが開催されます。
年内に発売予定のV10に関する情報を中心とした情報が得られる貴重なイベントです。

また翌7/4には、IBM Notes/Domino v10 意見交換ラウンドテーブル も予定されております。
こちらはコンソーシアム会員優先ではありますが、会員外の方でも参加可能ですので、こちらもご検討ください。

両日ともウェビナー or リモートの開催が予定されております。
私は今回東京まで行くことができませんので、両日自席から参加の予定です。
遠方の方、当日参加できない方も、ぜひリモート参加もご考慮ください!!

さて本日は先週東京で開催されましたノーツコンソーシアム新任担当者向けワークショップへ参加させて頂きましたので、簡単にレポート致します。

両日とも30名定員の募集でしたが、キャンセル待ちが出るほどの盛況ぶり。
また当日の参加率についてもほぼ全員と、まずはその人気ぶりに驚かされました。

1日目は午後から「管理者編」が実施されました。用語編+ワークショップの2本立てになります。
ワークショップでは隣り合った2台のPCをクロスケーブルで繋ぎ、それぞれにインストールされたサーバー同士での複製など、貴重な体験をすることができたようです。
終了後は、懇親会も行われ、お店を貸しきっていただくほどの参加者で盛り上がりました。

2日目は終日、開発者編の開催です。
管理者編同様、用語編+ワークショップ。加えてデザインTipsの講義もあり、実際に利用する立場の方に直接的なメリットが提供頂ける内容であったと感じました。

テキストの内容ですが、IBM様や他社様の教育プログラムほどの内容ではありませんが、両日受講することでノーツサーバーの簡単な管理、ユーザー追加や、初歩的なアプリケーションの作成までできるようになります。

流れとしては、まずはこのワークショップを受講されてから、有償の教育プログラムを受講されることで、理解度が格段に上がるのではと感じました。

ぜひノーツの管理やアプリ開発を行われる方は、次回以降のワークショップをお見逃しなく。

今回までは東京開催のみでしたが、コンソーシアムでは東京以外の開催も計画されているようですので、ぜひ遠方の方もお待ち頂ければと考えます。

なお参加者の方と少しお話ししてみたのですが、まずは初歩的なステップを理解したいという方が多いように感じました。
このことを受けて、私なりにやりたい事が出て参りましたので、少し準備してみたいと思います。

たいへん申し訳ありませんが、私のほうでは写真を撮っておりませんので、その場の雰囲気などはノーツコンソーシアムのフェイスブックページをご覧ください。


さて、そもそも私の参加目的は・・・

●弊社内ではDominoサーバーは二重化していないため、「管理者編」に興味があった。
●最新の用語集を聞きたかった
●開発手順は様々ですので、「開発者編」でどのように説明されるか聞きたかった。
●自らが講師として立てるようになる!!

です。

はじめの3点は、非常に満足できる内容で、改めて自分及び弊社でやっていることの確認が行えました。

講師としては・・・
正直なところテキストが立派に仕上がっているため、なんとかなるだろうと簡単に考えていたのですが、やはり人に教えることの難しさを実感することになってしまいました。

とはいえ、先にも少し触れました東京以外開催。特に大阪開催を実現しなければなりませんので、他の大阪研究会メンバーと強力して準備を開始致します。
開催決定次第、いろいろと案内が行われるかと思いますので、関西の皆様、もう少しお待ちください!!

皆様にお会いできる日を、心待ちに致しております。