ページビューの合計

ラベル ノーツ の投稿を表示しています。 すべての投稿を表示
ラベル ノーツ の投稿を表示しています。 すべての投稿を表示

2017年7月24日月曜日

簡単! @関数だけで、一次承認ワークフロー ~その4

みなさま、こんにちは!
当ブログも開設から2年を経過しましたが、ようやく10000Hitを超えることができました。
ひとえに皆様のお陰であります。

さて先週のテクてくLotsus技術者夜会、いかがでしたか?
大阪PVは少し音声の状態が悪く、苦労してしまいました。
次回はバックアップ含め、もう少し準備を考えてみたいと思います。

それでは話しを戻します。
前々回までで、今回の目的とする開発が完了しました。
本日は初期画面やメニューを加えます。
もちろんメニューについては既存アプリケーションとの親和性などもあるため、使いやすいものをご採用頂くべきではありますが、今回も


に即した内容で対応させて頂きます。

まずはメニューとなるナビゲータです。


いきなり完成しちゃいましたが、特に難しいことは行っていません。
各ビューを開くシンプルアクションを設定しただけのナビゲーションになります。


続いてフレームセットです。


こちらもいきなり完成型です。
左のメニュー部に先ほどのナビゲーターを。
右フレームに今回はカレンダーをセットしてみました。
もちん申請日順や、ワークフローを優先するのであれば「ステータス別」を初期画面に入れるべきかもしれませんが、今回はユーザーがその日の状況を確認するという視点を優先してみました。

最後に起動時の設定です。


すいません、こちらもいきなり完成型ですが、単純にIBM Notesクライアントの起動について、【メイン】フレームセットを開くとしただけです。

最後はアイコンを変更してください。
今回は省略させて頂きます。

以上で設計は完了ですが、現在は個人のLocalに作成されていますので、メールに添付される文書リンクが利用できません。
実際に使用する際は、Dominoサーバー上へコピーしてください。

コピーの手順は、アプリケーション(Domino Designer上でも、Notes Client上でも可)を右クリックし、複製から新規レプリカを選択します。

以下のようなダイアログが表示されますので、貴社サーバー内に複製を作成してください。


なお今回は複製しましたが、単純なコピーでもサーバー内では動きます。
但し、引き続きLocalアプリケーションに機能追加などを行い、サーバー側で反映するような作業を考慮し、複製を使用しました。
もちろんコピーしたアプリケーションの設計を直接編集しても問題ありません。

あとはお手数ですが、貴社サーバー内でのテストを実施してみてください。

以上、今回の一連の記事では、ノーツ初級開発者が最初に学ぶ【@関数】のみを使用した、ごく単純なワークフローを作成してみました。
もちろんこれだけでもなんとか使用できるのですが、必須項目の取扱いや、フォームのダブルクリックによる編集モード移行制御など、もっと手を加えたいと感じる部分も多く残るのも事実です。
まずはご自信の手で設計して頂き、どのように動くのかまでのヒントになれば幸いです。

なお今回はサンプルアプリのダウンロードは準備致しておりません。
もしご希望ございましたら、連絡いただければ対応致します。

もっと「こうしたい」、「ああしたい」については、IBMチャンピオンの皆様のブログ等をヒントに、手を加えてみてください。

最後までありがとうございました。

2017年7月10日月曜日

簡単! @関数だけで、一次承認ワークフロー ~その3

みなさま、こんにちは!
今週は明日の某社フォーラムや、金曜のノーツコンソーシアム ユーザー情報交換会と、私にとっては盛りだくさんな1週間です。
なんとなく上付いた気持ちに喝を入れつつ、本業に集中しております。

さて今回はいよいよワークフローに関わるアクションを作成して参ります。

まずは申請を送付するボタンです。


●申請
 式:
  @Command([FileSave]);
  @MailSend(Sendto;"";"";createdby+"からの申請通知";"";createdby+"からのフロー申請が届きました。"+@NewLine+"こちらをご確認ください ⇒ ";[IncludeDoclink] );
  @Command([FileCloseWindow])

 プリビュー(読み込み)・読み込みモード時に非表示
 式によりアクションを非表示にする:
  Status!="1.承認依頼中"|@IsDocBeingEdited=0


クリックすることで文書を保存し、承認者に文書リンク付のメールメッセージを送信します。
ステータスが「1.承認依頼中」の編集モード時に表示されるようにしています。


●承認
 式:
  @If(@IsDocBeingEdited; @True;@Command( [EditDocument] ; 1 ));
      @SetDocField(@DocumentUniqueID;"Sign";@Name([CN];@UserName));
  @SetDocField(@DocumentUniqueID;"Status";"2.承認済");
  @Command([FileSave]);
  @MailSend(createdby;"";"";Sendto+"からの申請承認通知";"";Sendto+"からの申請承認通知が届きました。"+@NewLine+"こちらをご確認ください ⇒ ";[IncludeDoclink] );
  @Command([FileCloseWindow])

 式によりアクションを非表示にする:
  Status!="1.承認依頼中"|@IsNewDoc=1


クリック時に承認者の氏名を「署名(Sign)」フィールドに登録し、ステータスを「2.承認済」に変更した上で文書を保存し、申請者へ承認されたというメールを送信します。
ステータスが「1.承認依頼中」且つ、新規文書でない場合に表示されます。


●却下
  @If(@IsDocBeingEdited; @True;@Command( [EditDocument] ; 1 ));
  @SetDocField(@DocumentUniqueID;"Sign";@Name([CN];@UserName));
  @SetDocField(@DocumentUniqueID;"Status";"3.却下");
  @Command([FileSave]);
  @MailSend(createdby;"";"";Sendto+"からの申請却下通知";"";Sendto+"により、申請が却下されました。"+@NewLine+"こちらをご確認ください ⇒ ";[IncludeDoclink] );
  @Command([FileCloseWindow])

 式によりアクションを非表示にする:
  Status!="1.承認依頼中"|@IsNewDoc=1


クリック時に却下者の氏名を「署名(Sign)」フィールドに登録し、ステータスを「3.却下」に変更した上で文書を保存し、申請者へ却下されたというメールを送信します。
こちらも承認同様、ステータスが「1.承認依頼中」且つ、新規文書でない場合に表示されます。


上記3つのアクションをフォームに加えます。
もちろん一般的な「編集」「戻る」「印刷」なども追加しておきます。

ビューには「終了」と「新規作成」ボタンを加えておきます。


以上でフローに関係するボタンの設計と表示が完了しました。

あとはフレームセットや、ナビゲータを加えれば、Notesクライアントとしての機能はほぼ完成となります。


申し訳ありません、確認時間が十分に取れないまま、公開してしまいました。
もし不備等ございましたら、修正させて頂きますので、ご了承ください。



2017年7月3日月曜日

簡単! @関数だけで、一次承認ワークフロー ~その2

みなさま、こんにちは!
今週から7月。暑くなりますが、イベントも目白押しで、夏バテしている暇もありません。
特に来週末にはノーツコンソーシアム ユーザー情報交換会が秋田の『TDK歴史みらい館』にて開催されます。年数回ですが、ユーザー会員の皆様とお会いできることが楽しみで仕方ありません。

それでは本日の内容について始めさせて頂きます。
先日に引き続き、今回は主にワークフローのビューを作成して参ります。


●申請日順|byDate
 申請日:created
  ソート:降順
 申請者:Dsp_Applier
 内容:Title
 開始日:Start
 終了日:End
 期間:@Text(Term)+"日"
 承認者:Sendto
 ステータス:Status



●ステータス別|byStatus
 ステータス:Status
  展開できる行に三角アイコンを表示する
  昇順・カテゴリ別
 申請日:created
  ソート:降順
 申請者:Dsp_Applier
 内容:Title
 開始日:Start
 終了日:End
 期間:@Text(Term)+"日"
 承認者:Sendto



●申請者別|byApplier
 申請者:Dsp_Applier
  展開できる行に三角アイコンを表示する
  昇順・カテゴリ別
 申請日:created
  ソート:降順
 内容:Title
 開始日:Start
 終了日:End
 期間:@Text(Term)+"日"
 承認者:Sendto
 ステータス:Status


なおせっかく日付と期間のフィールドがありますので、カレンダービューも作成してみましょう。


●カレンダー|Calender(スタイル:カレンダー) 
 開始日:Start
  ソート:昇順
  日付の表示 及び 時刻の表示 の両方にチェック
  列を非表示
 期間:(End-Start)/60 (分単位に変換)
  列を非表示
 申請者:Dsp_Applier+"【"+Title+"】"


カレンダービューの作り方はヘルプに記載されていますが、要点として
 1列目:日時(日付と時刻の両方を表示)/昇順/非表示
 2列目:期間(分単位で期間を設定、必要なければ、デフォルト値で"0"でも可)/非表示
 3列目:カレンダーに表示する内容
となります。



なお本ビューについてひとつ不具合がございます。
期間が2日以内ですと、正しくカレンダーに両日表示されるのですが、3日を超えますと初日にしか表示されません。

上記ですと、6/19の申請は6/19~21の3日間の申請になりますが、カレンダーには初日のみしか表示されません。
反して6/26の申請は、6/26~27の2日間の申請であり、正しくカレンダーに表示されています。


但し、設計側で見ると正しい数値が設定されております。

こちらがカレンダーの設計画面です。
2列目に分の値が正しく入っていることが分かります。


もしご存知の方いらっしゃいましたら、フォロー頂けますと幸いです。

簡単ですが、以上でビューの準備が完了致しました。
次回はいよいよフローに関わるアクションを作りたいと思います。


2017年6月26日月曜日

簡単! @関数だけで、一次承認ワークフロー ~その1

みなさま、こんにちは!
今週で6月も終わりですね。当初は雨が少なく水不足が心配されましたが、ようやく梅雨らしくなって参りました。
個人的にはあまり雨で好きではありませんが、特に農家の方々など、必要なときに必要な降水量は必要かと思いますので、「例年並み」が好ましいのでしょうか。

さて全く話題は異なりますが、海水浴シーズン目前ということでひとつだけ宣伝を!!

海の「もしも」は118番



詳しくはサイトをご覧ください。

ちょうど今週日曜に、舞鶴にあります海上保安学校にて【五森祭】が開催されます。
去年に引き続き、今年も参加させて頂きます。
また可能な写真等はフェイスブックに掲載させて頂きます。



それでは本題です。
今回から数回に分けて、@関数だけで簡単な一次承認のワークフローを作ってみたいと思います。内容としては、よくある勤務に関わる届出として作成致します。
今回も作りながら記事にしておりますので、後ほど修正が入るかもしれませんが、何とぞご容赦ください。


早速ですが、新規のアプリケーションを作成します。(以前までに作成したユニバーサルテンプレートを利用していただいても構いませんが、本文面についてはこちらは使わずに説明を行います。)


 サーバー:Local
 タイトル:自由
 ファイル名:自由


私の設定は下記のようにしました。


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


 名前:自由
 別名:自由(但し、半角英数を推奨)


私の設定は以下としました。


続いて以下フィールドを作成します。


●届出内容(入力必須)
 名前:Title(編集可能)
 種類:ダイアログリスト
     選択肢を入力
      遅刻
      早退
      有給休暇(その他、必要に応じて追加ください。)
 入力の確認:@If(Title="";@Failure("[届出内容]の指定は必須です。");@Success)



●申請者(入力必須)
 名前:Applier(編集可能)
 種類:ダイアログリスト
     アドレス帳から選択
 デフォルト値:@Name([CN];@UserName)
 入力の確認:@If(Applier="";@Failure("[申請者]の指定は必須です。");@Success)
 段落を非表示:プリビュー(読み込み)・読み込みモード・印刷・埋め込み・クリップボードへのコピー


本来、本人が申請者であることが多いのですが、代理で申請する場合も考慮し、初期値としてデフォルトユーザーを設定していますが、アドレス帳から選択できるようにも対応しております。


●申請者(表示用)(入力必須)
 名前:Dsp_Applier(計算結果)
 種類:テキスト
 式:@Name([CN];@DbLookup("";"サーバー名":"names.nsf";"($Users)";Applier;"AltFullName"))
 段落を非表示:プリビュー(編集モード)・編集モード


こちらのフィールドに、DJXを参照し、申請者を漢字化しました。


●承認者(入力必須)
 名前:Sendto(編集可能)
 種類:ダイアログリスト
     アドレス帳から選択
 入力の確認:@If(Sendto="";@Failure("[承認者]の指定は必須です。");@Success)


上司(承認者)を選択するダイアログです。


●期間(開始日)(入力必須)
 名前:Start(編集可能)
 種類:日付/時刻
 スタイル:日付/時刻制御
 サイズ:幅 10 固定(文字)
 入力の確認:@If(Start="";@Failure("[開始日]の指定は必須です。");@Success)


対象期間の開始日を選択します。


●期間(終了日)(入力必須)
 名前:End(編集可能)
 種類:日付/時刻
 スタイル:日付/時刻制御
 サイズ:幅 10 固定(文字)
 入力の確認:@If(End="";@Failure("[終了日]の指定は必須です。");@Success)


同じく終了日を選択します。同日の場合でも必須としています。


●期間
 名前:Term(計算結果)
 種類:数値
 式:@If(Start="";"";End="";"";(End - Start)/86400+1)


先のふたつの日付フィールドの差から、日数を計算しています。



●事由(入力必須)
 名前:Reason(編集可能)
 種類:テキスト
 入力の確認:@If(Reason="";@Failure("[事由]の指定は必須です。");@Success)



理由を記載する項目です。


私のイメージでは下記のようになりました。


次にフォームのウィンドウタイトルの設定を行います。


 @If(@IsNewDoc;"新規フロー 作成中";Title+"届【"+Dsp_Applier+"】")


ウィンドウタイトルに、新規作成の場合は、「新規フロー 作成中」と表示。既存文書の場合は、「○○届け【氏名(漢字名)】」と表示させています。


再度に著作関連(登録日・登録者・編集日・編集者)のサブフォームを作成し、埋め込みます。
※著作関連サブフォームについては、以前のユニバーサルテンプレートをご覧ください。

それでは一度、IBM Notesでプリビューしてみましょう。
以下のように表示されるかと思います。


次にフロー部分のフィールドを追加します。

フォームの先頭にフローの状況を表示するステータスフィールドを追加します。


 名前:Status
 種類:テキスト
 デフォルト値:"1.承認依頼中"


ワークフローということで、アクションボタンでステータスを切り替えるため、あえてダイアログにせず、テキストとしています。

続いてサブフォームのすぐ上に、承認者の署名欄を作成します。


 名前:Sign
 種類:テキスト
 


今回は以上にてフォームのフィールド配置までを行いました。
次回は必要なビューを作成して参ります。




2017年4月17日月曜日

検証・・・文書のロックについて

皆様、こんにちは!
神戸は先ほどから雨が降り始めました。おそらくサクラも散ってしまうことでしょう。
個人的には土曜日に造幣局の通り抜けに行けましたので、結構満足してます!

それはそうと、先週からノーツコンソーシアムのさまざまな研究会がスタートしています。
私が参加しているのは、【ザ・ノーツ研究会】と【大阪研究会】です。
研究会の詳細は省略させて頂きますが、会員外の方でも見学できるかと思いますので、ご興味ある研究会ございましたら、事務局までお問い合わせください。

さて本日は以前から個人的に疑問であった「文書のロック」について、少し検証してみましたので報告させて頂きます。

「文書のロック」は、データベースのプロパティで設定可能な項目で、複数人で使用するようなデータベースで、ひとりが使用していると排他処理されるという機能になります。

 

ノーツクライアントですと、他の方が編集モードで開いていると以下のようなダイアログが表示され、編集モードに移ることができません。


私の疑問であったのは、ブラウザとノーツクライアントでどのような挙動をするのかという点になります。

それでは実際のテストです。
先日「既存アプリの最短Xpages化」でご紹介しました日報アプリに少し手を加え、ビューから文書を開いた際に

ターゲット文書:文書の編集

とし、フォームに「保存」ボタンを配置したものを使用致します。

テストの前に、それぞれロックされていない状態での編集に問題ないことは確認しました。


テスト1:ノーツクライアントで「編集モード」で開いた文書をブラウザの編集モードで開くことができるか。


結論は開くことができました。


テスト2:テスト1でノーツクライアントで編集保存後、ブラウザで編集保存するとどうなるか。


見事、【競合文書】になりました。



テスト3:逆にブラウザで編集保存後、ノーツクライアントで編集保存するとどうなるか。


こちらはブラウザで保存しようとすると、下記のようなエラーが表示されました。


もちろんノーツクライアント側のロックを解除すると、問題なく保存することができました。

テスト4:ブラウザで編集モードで開いた文書をノーツクライアントで開くことができるか。


こちらも開くことはできました。


テスト5:テスト4でノーツクライアントで編集保存後、ブラウザで編集保存するとどうなるか。


テスト2同様、【競合文書】ができました。


テスト6:逆にブラウザで編集保存後、ノーツクライアントで編集保存するとどうなるか。


こちらは先と違い、【競合文書】ができました。


だらだらと書きましたが、まとめると

●いずれも同時に編集モードで開くことは可能である。

●ノーツクライアントが先にロックした場合
  ・ノーツクライアントが先に保存 ⇒ 競合文書ができる
  ・ブラウザが先に保存 ⇒ 予期しないエラーが出る

●ブラウザが先にロックした場合
  ・ノーツクライアントが先に保存 ⇒ 競合文書ができる
  ・ブラウザが先に保存 ⇒ 競合文書ができる

となります。

結論だけ見ると、想像した通りの結果ではないかと感じました。
個人的には編集モードに入る手前で止まってくれると嬉しかったのですが、そう甘くはないようです。
但し、条件がはっきりしましたので、ノーツクライアントとブラウザ両方でアクセスするようなアプリケーションを稼動させる場合のヒントにはなったかと思います。

なお文書ロックに関しては、日本IBM様サイトにて【Lotus Notes/Domino 文書ロックの仕組みFAQ】として詳しく紹介されておりますので、参考になさってください。
どういう理由か検証していませんが、ロックが解除されないという事例がありました。
その際の対処方などもこちらに記載されております。


またXpagesでの設定事例については、IBMチャンピオンである御代様のブログでも、【XPagesで文書のロックをやってみよう!】にて紹介がございますので、こちらもご覧ください。

最後までお付き合い、ありがとうございました。

2017年3月13日月曜日

【第8回】タイムレコーダーアプリ作成~テンプレート化~

みなさま、こんにちは!!
年度末が近づいて参りましたね。
弊社では今年、少し予算が頂けましたので、念願のアレの更新と、ソレの新規導入の真っ最中です。
・・・すいません、いい加減な書き方ですね(汗
ゴールデンウィークに什器の入れ替えを予定しているのですが、物品のみ年度内予算で購入することになり、まさに今日から会社の倉庫に搬入が開始されました。
予定より早く本日分が完了したため、なんとか当記事を公開することができました。

さて前々回まででアプリケーションとしては(見た目をのぞいて)仕上がりました。
このまま利用してもいいのですが、弊社では年度ごとにデータベースを作ろうということになりましたので、テンプレート化しております。
また前回にも書きましたが、現状ですと推測しやすいデータベース名であり、加えてanonymousに作成者権限を与えているため、ほんの少しリスクを減らす効果も考慮しております。

それではデザイナー左メニューにあるタイムレコーダーを右クリックし、【アプリケーション】→【コピー】をクリックしてください。


アプリケーションのコピーダイアログが開きますので、

サーバー:貴社サーバー
ファイル名:time-recorder.ntf
アプリケーションの設計のみを選択

以上でOKします。


続いてデータベースのプロパティを開き、左から4番目の設計タブに移動します。

中央少し下の
マスターテンプレートのデータベースにチェックし、テンプレート名を記述します。
今回は「タイムレコーダー」としました。
※日本語も可能ですが、他のテンプレートとの重複に注意ください。


以上でテンプレートができました。

試しに新規アプリケーションの作成を行うと、以下のようにサーバー内のテンプレートとして選択可能になります。


あとはファイル名を乱数にするなどすれば、外部からのアクセスは非常に困難になるというものです。


本アプリケーションは本来のノーツIDを利用せずに運用しておりますので、最善の方法とは言えないと思いますが、XPagesでひとつ作り上げるということに主眼を置いて公開させていただきました。
もっともIDを使用すれば、xpagesの画面には時間表示と「出社」「退社」のボタンだけの表示で済むのですが、退社時はともかく、出社時にパソコン起動するまで打刻できないということがいいのか悪いのか・・・ということで。

ぜひ皆様もいきなり難しいことからスタートするのではなく、XPagesで動くものが作れるという感覚を経験頂ければ幸いです。

さて次回はどうしたものか・・・。

2017年3月6日月曜日

実践!! Cool で使いやすい Notes アプリデザイン講座

みなさま、こんにちは!!
先週金曜は、AMにユーザー情報交換会、PMには総会からNotes Festa + 懇親会といつもながら非常に濃いイベントに参加させて頂きました。

ユーザー情報交換会では、昨年に続き、【ノーツ お困りごと相談】ということでの報告を頂き、特に関心の高かった【検索】に関する講義も行って頂き、得るものが多いイベントとなりました。
Festaでは、先日の IBM Connect 2017 のフィードバック(1週間でここまでまとめていただき、ありがとうございました!!)があり、今年も熱い1年になりそうと感じた次第です。
最後には感謝状まで頂く次第。本来は弊社であり、また私自身がコンソに対して感謝すべきなのですが・・・。
本当にありがとうございました。
これら資料等については、一部については、会員限定サイトでの公開になるかもしれませんが、可能なものはオープンで閲覧できるようになるかもしれませんので、しばらくお待ちください。

次回は7月にユーザー情報交換会を秋田のT様で行う予定との事。
早速ダメもとで今朝ほど上層に相談しました。

私:また7月にユーザー情報交換会があるのですが、参加していいですか?ちょっと遠いんですけど。
上司:もちろん行ってきてください。
私:秋田なんですけど。
上司:とおっ。まあ、いいや。

という具合です。
今から楽しみです~。

さて本来ですと、今回はタイムレコーダーのテンプレート化を予定していたのですが、先に報告したい事項が発生しましたので、テンプレート化は次回とさせてください。

2月17日に東京にて開催されました【テクてく Lotus 技術者夜会】にて、林様より

もう Notes だからとは言わせない!!
Cool で使いやすい Notes アプリデザイン講座

をリモートで受講させて頂きました。
リモートとかいいつつ、林様が大阪で借りていただいたコワーキングスペースに押しかけ、実際にはこのセッションは現場で聞かせて頂くという幸せものです。

さてセッションの内容ですが、IBM Notes のデザインをいかにCoolに見せるかという非常に興味深いものでした。

そこで・・・
弊社で4月より運用開始する日報のデザインを、思い切ってセッション内容に準じたものにしてみました。

セッション資料は林様より Slideshare Docswell(2022/04/28更新)に公開頂いておりますので、こちらをご覧ください。


さて、まずはフォームのデザインです。
私のほうで作成したものは、できるだけノーツということを意識したデザインになっています。

旧デザイン


現在使用している日報デザインを踏襲し、色合いも合わせて作ってあります。

これが講義内容を適用すると・・・


とっても Cool です !!

全く内容は削っておりませんが、見た目がスマートになり、利用者の視線・視点の負担が減らせることになるのではないでしょうか。

続いてビューです。

従来のビュー(弊社のビューはほぼこの形)はフレームセットの左にメニューとしてアウトラインを埋め込んでいました。


ノーツを使い慣れている方でしたら、おなじみですね。

さてこれに講義内容を適用すると・・・


まるで別物!!

もちろんまったく自分の力量ではないのですが、イメージが変わります。
ユーザーにも見てもらい、比較してもらいましたが、感想は・・・

今風になったのでは?

と好評でした。

特にメニュー部分をナビゲータにすることで、従来よりも使いやすくなったようです。

今後のアプリの使い方にノウハウを活かして、少しでも自分の力量に加えられるよう努力致します。


なお本講義に参加できなかった方も多数いらっしゃるかと思います。

まだ予定ですが、ノーツコンソーシアムの2017年 第1回大阪研究会で同じ内容をご講義頂ける予定ですので、ご興味ある方はぜひご参加ください。

会員外の方でも、事務局にご連絡いただけましたら、見学が可能です。
遠慮なくメールしてみてください。


2017年2月27日月曜日

【第7回】タイムレコーダーアプリ作成~仕上げ~

皆様、こんにちは!!

いよいよ今週ですね。ノーツコンソーシアム FESTA 2017
ちなみに会員である弊社は、当日午前に開催されますユーザー情報交換会にも参加させて頂きます。
皆様とお会いできることが、今から楽しみでなりません!!

さて本題に戻ります。前々回で凡そのアプリケーションの形は仕上がりました。
今回は少し手を加えて、完成させたいと思います。


まずはトップページ【m_XpIndex】です。
タイムカードアプリということですが、現時点ではカレンダーや時計表示がありません。
正しくは右下に小さくクライアントの時計表示はありますが、実際にこちらを見て、打刻することはどうかと思います。

そこで、時計表示を埋め込みたいと思います。

個人的にはJSTを利用できればと思ったのですが、「大型文字表示」はiframeに対応しておらず、結局Javascriptのサンプル例を埋め込みました。

恐れ入りますが、Javascriptのサンプルについてはご自身でお好みのものをお探しください。

それでは設置手順です。
まずはm_XpIndexの先頭のラベルと出社・退社ボタンの中央あたりに、パネルコントロールを配置します。
※特パネルは必要ありませんが、手を加える際にわかりやすいよう設置しました。



続いてパネルを選択した状態で、ソースタブに切り替えます。

<xp:panel></xp:panel>というタグがハイライトされますので、その間にJavascriptのサンプルを貼り付けます。
※一部サンプルには、<head>タグ内にもスクリプトが必要なものがございます。今回は<body>タグ内にのみ記述するものとして記載しております。詳しくはサンプルの設置方法に従ってください。

設計タブに戻り、パネルを選択し、フォントサイズや色等のプロパティを設定します。

随時、m_XpIndexをプリビューしながら確認してください。

少しバランスが悪いですが、私の設定では、下記のように表示ができました。



次にアプリケーションのアイコンを変更してみましょう。

今回は下記のような画像を準備してみました。
もちろんお好きな画像をご準備いただければ構いませんが、32x32ピクセルのJPEGもしくはPNG、GIF、BMPファイルが利用可能です。


左メニューの【リソース】内の【アイコン】をダブルクリックしてください。



このような画面が開きます。
上半分は、準備した画像ファイルを読み込む方法。
下半分は、直接アイコンファイルを32x32のマスを利用し、下記のように編集するものになります。


それでは上半分を利用し、アイコンを変更します。

【参照...】ボタンをクリックし、準備した画像ファイルを呼び出してください。


以上でアイコンが切り替わりました。

もちろんノーツクライアントのアイコンも変更されています。


レイアウトやデザインはさておき、以上でアプリケーションとしては完成です。

次回はこのアプリケーションをテンプレート化する手順を紹介させて頂きます。

そのまま使っても構わないのですが、anonymousが使用できる権限を取得しているため、ファイル名を安易に推測できないものにすることで、少しでもリスクを減らそうというという意図もあります。


・・・そろそろ次のネタを探さなければ(汗

2017年2月20日月曜日

祝! IBM Connect 2017開催!!

いよいよ本日からアメリカ サンフランシスコでIBM Connect 2017が開催されます。
もちろん現地時間ですが・・・。

日本からもIBMチャンピオンはじめ、たくさんの方が参加されており、既にフェイスブックやツイッターを通じて、情報が飛び交っております!!
ぜひ「いいね」や「コメント」等で盛り上げていきましょう!!

さて実際の内容についてですが、サイトを見るかぎり、かなり濃厚なスケジュールのようですが、なにせ英文なもので・・・。

ということで、詳しくは参加された皆様による、【日本語】による報告に期待しております!!

ちょうどノーツコンソーシアム FESTA 2017も2週間を切りましたので、その際には多少なりとも情報が頂けるものと思います。

ノーツコンソーシアム FESTA 2017もまだ参加できるのではないかと思いますので、ぜひお時間ございましたらご検討ください。
本会はオープンになりますので、コンソーシアム会員の方以外でもご参加可能です。

終了後に毎回大盛況の懇親会も予定されておりますので、こちらもあわせてご参加頂くことを強く推奨致します!!


ということで、本日はConnect及びFESTAのご紹介とさせて頂きます。


2017年2月13日月曜日

【第6回】タイムレコーダーアプリ作成~部署ページの作成 その3~

皆様、こんにちは!!
昨日はひさしぶりに神戸バレンタインラブランにて、たった3km走って筋肉痛と格闘中の筆者です。
少しずつ夜明けも早くなり、梅もほころびはじめ・・・。
春が待ち遠しい限りです~。

さて前回はカスタムコントロールを使用し、1部署のページを仕上げました。
今回は残りのカスタムコントロールを作り、XPageへの埋め込みを行います。

特に見ていただきたいのは、XPageの再利用によるカスタムコントロールの切り替え部分になります。

それでは早速ですが、前回作成したカスタムコントロール XcWork_1をコピーし、XcWork_2という名称に変更します。

XcWork_2をデザイナーで開き、まずはデータで関連付けられたフォームを変更します。

プロパティのデータタブを開いてください。



フォーム: のプルダウンを【出社_営業1部 - Work01】から【出社_営業2部 - Work02】に変更します。

続いて、先頭のラベルを【営業1部】から【営業2部】に変更します。

以降、各個人ボタンの設定は前回と同様です。

左のボタン
ラベル: 長○ 佑都
イベント1行目の値: 長○ 佑都
イベント3行目の確認テキスト: 長○ 佑都 様、おはようございます。

中央のボタン
3箇所の名前を内○ 篤人に変更

右のボタン
3箇所の名前を遠○ 保仁に変更

以上で完成です。


続いて退社のカスタムコントロールを作成します。

XcWork_1をコピーして、XcLeave_1と名称変更します。

そのままデザイナーで開いてください。

冒頭のラベルですが、現在は出社の色にあわせた青になっていますが、同じように退社にあわせた茶色にします(もちろん必須ではありません)。

続いて【戻る】ボタンのイベントが現在は出社ページに設定されていますので、退社ページに変更します。

開くページの名前: m_XpLeave

先と同様、カスタムコントロール(選択されていなければ、画面の背景部分もしくは左のアウトラインで選択)のデータタブにて、

フォーム: 退社_営業1部 - Leave01

に変更します。

各ボタンのイベントですが、それぞれ1ヶ所だけ変更します。

3行目 アクションの確認:○○ 様、お疲れさまでした。

以上で完成です。

同様にXcWork_2からXcLeave_2も作成してください。

以上で4つのカスタムコントロールが完成しました。


それでは本日のメインである、XPageの再利用について、説明致します。

m_XpWork_1をコピーし、新たにふたつのXPageを作成します。
それぞれ名称は

m_XpWork_2
m_XpLeave_1

とします。


まずはm_XpWork_2を開いてください。



中央のカスタムコントロール部分(もしくはアウトラインのXcWork_1)を選択し、ソースタブに移動します。

前回も見ていただきましたが、XPageのソースでは、カスタムコントロールの指定はたった1行、

<xc:XcWork_1></xc:XcWork_1>

で行われています。


すでに"ピン!"と来た方もいらっしゃると思いますが、このタグを

<xc:XcWork_2></xc:XcWork_2>

に変更し、設計タブに戻ってください。


カスタムコントロール部分が営業2部のXcWork_2に変更されていることがわかります。
(アウトライン部分も変更になっています)

以上で完了です。


続いて m_XpLeave_1です。
こちらは先頭の表内が「出社」となっており、背景も青になっていますので、「退社」・背景:茶色に変更します。

同じようにソースタブで<xc:XcWork_1></xc:XcWork_1>を

<xc:XcLeave_1></xc:XcLeave_1>

に変更します。



同様にm_XpLeave_1をコピーし、m_XpLeave_2を作成してください。

以上で各部署のカスタムコントロールとXPageが完成しました。

いかがですか?
簡単でしょ !

それでは最後に出社・退社のページからそれぞれの部署ページにリンクを作成します。

まずm_XpWorkを開いてください。

既に営業1部のボタンにはイベントが作成済ですので、営業2部のボタンにイベントを追加します。

カテゴリ: 基本
アクション: ページを開く
開くページの名前: m_XpWork_2


続いてm_XpLeaveです。

営業1部ボタン
カテゴリ: 基本
アクション: ページを開く
開くページの名前: m_XpLeave_1

営業2部ボタン
カテゴリ: 基本
アクション: ページを開く
開くページの名前: m_XpLeave_2

それではすべて保存して閉じてください。

次に起動時の設定を行います。

左側のツリーから【アプリケーション構成】内、【アプリケーションのプロパティ】を開いてください。

2番目の起動タブに移動します。

右側にWeb ブラウザの起動という項目がありますので、

起動: 指定いたXPageを開く
XPage: m_XpIndex

とし、保存して閉じます。

これによりブラウザでnsfを直接指定した場合、m_XpIndexが開くようになりました。

それでは設計からプリビューせずに、ブラウザのアドレスを直接指定してみましょう。

作成された環境によってアドレスが異なりますが、私の環境ではDominoディレクトリ内のtestフォルダ内にtime-recorder.nsfという名称で作成しましたので、下記がURLになります。

http://ノーツサーバー名/test/time-recorder.nsf

こちらでトップページが開きます。

以降の動きは、下記をご覧ください。
最終にノーツビューへの表示確認まで行っております。



以上で大まかな部分が完成しました。

XPagesを使用すれば、意図的に少し直接タグを利用しましたが、プログラムレスでここまで表現できるんです。

次回はもう少し手を加えて完成させる予定です。

2017年2月6日月曜日

【第5回】タイムレコーダーアプリ作成~部署ページの作成 その2~

皆様、こんにちは !!
インフルエンザが猛威を振るっておりますが、感染されていませんか?
まだしばらくはピークが続きそうですので、ぜひご注意ください。

2月ということで、いよいよ1ヶ月を切りましたね。
ノーツコンソーシアム FESTA 2017
2017 年第 1 回情報交換会

個人的には3月2日に東京の取引先様との打ち合わせを予定していたのですが、すっかり宿泊予約を忘れていました。
予定より少し高くなりましたが、いいホテルは確保できましたが・・・。

あとは移動の予約のみです。



さて前回は部署ページということで、出社・退社それぞれについて、ボタンのみを設置したページを作成しました。
今回はさらにそのページの部署ボタンからリンクされる部署の詳細ページを作成します。
元となるフォームは4つ。
 ・出社_営業1部
 ・出社_営業2部
 ・退社_営業1部
 ・退社_営業2部

前回まではカスタムコントロールは利用せず、直接XPageとして作成しましたが、今回は再利用するパーツが多くなりますので、カスタムコントロールを利用して、工数を減らすような設計手順を掲載するつもりです。

それでは出社側から作成していきましょう。
デザインに統一感を出すため、前回作成したm_XpWorkを再利用することにします。

名前: m_XpWork_1

コピーしたXPageの名前を変更したら、デザイナーで開きます。
先頭の「出社」とかかれた表部分と戻るボタンのみを再利用しますので、表と2個のボタンを削除してください。

下記のようになるはずです。


続いて、【戻る】ボタンのリンクを変更します。
現在はトップページに戻るようになっておりまので、m_XpWorkに戻るように変更します。

戻るボタンをクリックし、下部で「イベント」タブに切り替えます。

現在の設定 ページを開く  ページ名:/m_XpIndex.xsp

と書かれた部分を選択し、【編集】ボタンを押してください。


シンプルアクションの編集ダイアログが開きますので、

開くページの名前: m_XpWork

とし、OKします。

以上で m_XpWork_1を保存して閉じておきます。

つづいてこのm_XpWork_1に埋め込むカスタムコントロールを作成します。

左メニューでカスタムコントロールをダブルクリックし、【新規カスタムコントロール】を押してください。

名前: XcWork_1

とし、OKするとカスタムコントロールの新規作成画面が表示されます。

次にカスタムコントロールにデータソースを関連付けます。
プロパティのデータタブをクリックします。


【追加】ボタンから、【Domino文書】をクリックします。



フォーム: 出社_営業1部 - Work01
データソース名: document1
デフォルトアクション: 文書の作成
フォーム検証の実行: 両方

と設定します。


続いて先頭にラベルコントールを配置します。

ラベル: 営業1部
フォントサイズ: 36(こちらは自由です)
フォントカラー: 青(こちらも自由です)

ラベルコントロールの後ろから改行を5個ほど入れ、続いてボタンコントロールを配置します。

ボタンの設定は「出社_営業1部」の内容に準じます。


ラベル: 楢○ 正剛(貴社情報に書き換えてください)
高さ: 100ピクセル(自由)
幅: 300ピクセル(自由)
フォントサイズ: 36(自由)
文字揃え: 中央

次に、ボタンコントロールにイベントを追加します。

イベントタブに切り替え、アクションを追加します。

カテゴリ: 文書
アクション: フィールドの変更
フィールド名: creator
値: 楢○ 正剛
データソース名: document1


このアクションでは、最初に関連づけた「出社_営業1部」のフォームを使用し、creator というフィールドに【楢○ 正剛】という値を設定するというものです。

ちなみに他のフィールドについては、
busho: デフォルト値にて「営業1部」
time: 作成時の計算結果として「@Created」により作成時の日時
stamp: デフォルト値にて「出社|1」
が設定されます。

続いてイベントを追加します。

カテゴリ: 文書
アクション: 文書の保存
データソース名: document1


さらにイベントを追加します。

カテゴリ: 基本
アクション: アクションの確認
確認テキスト: 楢○ 正剛 様、おはようございます。


このイベントにより、ボタンが押された際に確認ダイアログが表示されます。

最後にもうひとつイベントを追加します。

カテゴリ: 基本
アクション: ページを開く
開くページの名前: m_XpIndex


これにより、先の確認をOKすると、トップページに移動します。

イベントが下記の順に並んでいることを確認してください。


以上でボタンの設定がひとつ完了しました。

それではこのボタンをコピーして、後ろにふたつ貼り付けます。


それでは中央のボタンの内容を変更します。

ラベル: 阿○ 勇樹
イベント1行目のフィールドの変更の値: 阿○ 勇樹


イベント3行目のアクションの確認テキスト: 阿○ 勇樹 様、おはようございます。


以上です。

同様に右側のボタンも3箇所の「楢○ 正剛」を「駒○ 友一」に変更します。


続いてにフォームで扱われるフィールドすべてをカスタムコントロール内に追加します。
右側のコントロールタブをデータタブに切り替えます。


左上の赤枠欄が[コントロールの選択]ダイアログボックス(使用可能)であることを確認し(使用不可になっていましたら、クリックで切り替えてください)、すべてのフィールドを選択し、カスタムコントロール最下部へドラッグアンドドロップします。

データバインドコントロールの選択画面が表示されますので、【Time:】のコントロールを「日付ピッカー」から「計算結果フィールド」に変更し、OKしてください。


これらコントロールは、実際の画面に表示する必要はありませんので、表全体を選択した状態で、【可視】のチェックを外します。

これでカスタムコントロール XcWork_1ができましたので、保存して閉じます。

※カスタムコントロールは、ページとしての構成が行われていないため、単体でプリビューすることができません。

それでは最初に作成したm_XpWork_1に埋め込んでみましょう。

m_XpWork_1をデザイナーで開きます。

コントロールの最下部に「カスタムコントロール」が追加され、作成されたXcWork_1が使用できるようになっています。

それではXcWork_1を出社と戻るボタンの間にドラッグアンドドロップします。


下記のように、カスタムコントロールが配置されました。


せっかくですので、ソースを見てみましょう。

ソース内では、カスタムコントロールは<xc:></xc:>タグでくくられた1行で表現されます。

続いてm_XpWorkからm_XpWork_1へのリンクを作成します。

m_XpWorkをデザイナーで開きます。

「営業1部」のボタンを選択し、イベントを追加します。

カテゴリ: 基本
アクション: ページを開く
開くページの名前: m_XpWork_1


それではm_XpIndexをブラウザでプリビューし、「出社」⇒「営業1部」のボタンを押してみましょう。
下記のように表示されるはずです。


合わせてボタンの動きも確認してみましょう。
「楢○ 正剛」のボタンをクリックしてください。

下記のようなメッセージが表示されますので、OKしてください。


タイムレコーダーのトップ画面に戻ります。
同様に、他の2名についてもテストしてください。

最後に保存されたデータの確認です。

タイムレコーダーをノーツクライアントで開きます。
ビューは「日付順」しかありませんので、今回押された3レコードが表示されているはずです。



無事、打刻日時と部署、社員名、項目が保存されました。

今回は以上とさせて頂きます。

次回は今回のカスタムコントロールをベースに、営業2部の出社及び両部署の退社までを作成予定です。