みなさま、こんにちは!
当ブログも開設から2年を経過しましたが、ようやく10000Hitを超えることができました。
ひとえに皆様のお陰であります。
さて先週のテクてくLotsus技術者夜会、いかがでしたか?
大阪PVは少し音声の状態が悪く、苦労してしまいました。
次回はバックアップ含め、もう少し準備を考えてみたいと思います。
それでは話しを戻します。
前々回までで、今回の目的とする開発が完了しました。
本日は初期画面やメニューを加えます。
もちろんメニューについては既存アプリケーションとの親和性などもあるため、使いやすいものをご採用頂くべきではありますが、今回も
に即した内容で対応させて頂きます。
まずはメニューとなるナビゲータです。
いきなり完成しちゃいましたが、特に難しいことは行っていません。
各ビューを開くシンプルアクションを設定しただけのナビゲーションになります。
続いてフレームセットです。
こちらもいきなり完成型です。
左のメニュー部に先ほどのナビゲーターを。
右フレームに今回はカレンダーをセットしてみました。
もちん申請日順や、ワークフローを優先するのであれば「ステータス別」を初期画面に入れるべきかもしれませんが、今回はユーザーがその日の状況を確認するという視点を優先してみました。
最後に起動時の設定です。
すいません、こちらもいきなり完成型ですが、単純にIBM Notesクライアントの起動について、【メイン】フレームセットを開くとしただけです。
最後はアイコンを変更してください。
今回は省略させて頂きます。
以上で設計は完了ですが、現在は個人のLocalに作成されていますので、メールに添付される文書リンクが利用できません。
実際に使用する際は、Dominoサーバー上へコピーしてください。
コピーの手順は、アプリケーション(Domino Designer上でも、Notes Client上でも可)を右クリックし、複製から新規レプリカを選択します。
以下のようなダイアログが表示されますので、貴社サーバー内に複製を作成してください。
なお今回は複製しましたが、単純なコピーでもサーバー内では動きます。
但し、引き続きLocalアプリケーションに機能追加などを行い、サーバー側で反映するような作業を考慮し、複製を使用しました。
もちろんコピーしたアプリケーションの設計を直接編集しても問題ありません。
あとはお手数ですが、貴社サーバー内でのテストを実施してみてください。
以上、今回の一連の記事では、ノーツ初級開発者が最初に学ぶ【@関数】のみを使用した、ごく単純なワークフローを作成してみました。
もちろんこれだけでもなんとか使用できるのですが、必須項目の取扱いや、フォームのダブルクリックによる編集モード移行制御など、もっと手を加えたいと感じる部分も多く残るのも事実です。
まずはご自信の手で設計して頂き、どのように動くのかまでのヒントになれば幸いです。
なお今回はサンプルアプリのダウンロードは準備致しておりません。
もしご希望ございましたら、連絡いただければ対応致します。
もっと「こうしたい」、「ああしたい」については、IBMチャンピオンの皆様のブログ等をヒントに、手を加えてみてください。
最後までありがとうございました。
ページビューの合計
2017年7月24日月曜日
2017年7月10日月曜日
簡単! @関数だけで、一次承認ワークフロー ~その3
みなさま、こんにちは!
今週は明日の某社フォーラムや、金曜のノーツコンソーシアム ユーザー情報交換会と、私にとっては盛りだくさんな1週間です。
なんとなく上付いた気持ちに喝を入れつつ、本業に集中しております。
さて今回はいよいよワークフローに関わるアクションを作成して参ります。
まずは申請を送付するボタンです。
クリックすることで文書を保存し、承認者に文書リンク付のメールメッセージを送信します。
ステータスが「1.承認依頼中」の編集モード時に表示されるようにしています。
クリック時に承認者の氏名を「署名(Sign)」フィールドに登録し、ステータスを「2.承認済」に変更した上で文書を保存し、申請者へ承認されたというメールを送信します。
ステータスが「1.承認依頼中」且つ、新規文書でない場合に表示されます。
クリック時に却下者の氏名を「署名(Sign)」フィールドに登録し、ステータスを「3.却下」に変更した上で文書を保存し、申請者へ却下されたというメールを送信します。
こちらも承認同様、ステータスが「1.承認依頼中」且つ、新規文書でない場合に表示されます。
上記3つのアクションをフォームに加えます。
もちろん一般的な「編集」「戻る」「印刷」なども追加しておきます。
ビューには「終了」と「新規作成」ボタンを加えておきます。
以上でフローに関係するボタンの設計と表示が完了しました。
あとはフレームセットや、ナビゲータを加えれば、Notesクライアントとしての機能はほぼ完成となります。
申し訳ありません、確認時間が十分に取れないまま、公開してしまいました。
もし不備等ございましたら、修正させて頂きますので、ご了承ください。
今週は明日の某社フォーラムや、金曜のノーツコンソーシアム ユーザー情報交換会と、私にとっては盛りだくさんな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月4日火曜日
簡単! @関数だけで、一次承認ワークフロー ~その2.1
みなさま、こんにちは!
台風が近づいてきてますね(汗
神戸は夕方の退社時間あたりが再接近のようです。
皆様、くれぐれもお気をつけください。
さて連日の掲載になりますが、昨日カレンダービューについての不具合を記載致しましたが、早速当日夜にIBM Champions for ICS 小野様よりサンプルDBが届きました!!
カレンダービューの列式を工夫することにより、解決されておりましたので、ご紹介させて頂きます。
結論としては、昨日作成したアプリでは、ビューの1列目に開始日を設定し、2列目の期間を複数日分の値を設定し、表現しようとしていました。
頂いたサンプルでは全く視点を変更したものでした。
1列目の日付に開始日と終了日を与え、@Explodeを使用し、複数値をリスト化するというものです。
確かに私個人でも、フォームの日付フィールドを複数値にするという案を考えたことがあったのですが、使用ユーザーの入力が煩雑になるため、採用していませんでした。
今回は列の計算式で複数化されているため、ユーザーの操作は全く変更することなく解決できました。
それでは頂きました情報について、案内させて頂きます。
まずカレンダービューを開きます。
1列目、「開始日」の値を下記式に変更します。
要はStartとEndをハイフンで繋いで複数化し、@Explodeを使ってリスト化するというものです。
列のプロパティでは、
2列目については、
とし、常に"600"となるようにしました。
以上で、ビュー上では日付ごとに分解されたリストとして表示されることになります。
実際にビューを見てみましょう。
この例では、7月4日~7日に有給休暇届けを。
10日~12日に遅刻届けを作成したものになります。
もちろんそれぞれ1文書で申請した内容であり、無事カレンダービューにて3日以上のエントリーが表示されるようになりました。
小野様、とても迅速なご提案ありがとうございます!!
この不具合はかなり以前から気になっていたのですが、小野様のおかげで心からスッキリさせて頂きました。
既に社内アプリケーションの全ての改修も完了致しました!
台風が近づいてきてますね(汗
神戸は夕方の退社時間あたりが再接近のようです。
皆様、くれぐれもお気をつけください。
さて連日の掲載になりますが、昨日カレンダービューについての不具合を記載致しましたが、早速当日夜にIBM Champions for ICS 小野様よりサンプルDBが届きました!!
カレンダービューの列式を工夫することにより、解決されておりましたので、ご紹介させて頂きます。
結論としては、昨日作成したアプリでは、ビューの1列目に開始日を設定し、2列目の期間を複数日分の値を設定し、表現しようとしていました。
頂いたサンプルでは全く視点を変更したものでした。
1列目の日付に開始日と終了日を与え、@Explodeを使用し、複数値をリスト化するというものです。
確かに私個人でも、フォームの日付フィールドを複数値にするという案を考えたことがあったのですが、使用ユーザーの入力が煩雑になるため、採用していませんでした。
今回は列の計算式で複数化されているため、ユーザーの操作は全く変更することなく解決できました。
それでは頂きました情報について、案内させて頂きます。
まずカレンダービューを開きます。
1列目、「開始日」の値を下記式に変更します。
開始日:式 StartTime := "08:00:00"; EndDate := @If(End=""; Start; End); @TextToTime(@Explode(@TextToTime(@Text(Start) + "-" + @Text(EndDate))) + " " + @Text(StartTime)) |
要はStartとEndをハイフンで繋いで複数化し、@Explodeを使ってリスト化するというものです。
列のプロパティでは、
列情報タブ 複数値の分離記号:カンマ ソートタブ 複数値を別のエントリで表示にチェック |
2列目については、
期間:式 StartTime := @TextToTime("08:00:00"); EndTime := @TextToTime("18:00:00"); (EndTime - StartTime) / 60 |
とし、常に"600"となるようにしました。
以上で、ビュー上では日付ごとに分解されたリストとして表示されることになります。
実際にビューを見てみましょう。
この例では、7月4日~7日に有給休暇届けを。
10日~12日に遅刻届けを作成したものになります。
もちろんそれぞれ1文書で申請した内容であり、無事カレンダービューにて3日以上のエントリーが表示されるようになりました。
小野様、とても迅速なご提案ありがとうございます!!
この不具合はかなり以前から気になっていたのですが、小野様のおかげで心からスッキリさせて頂きました。
既に社内アプリケーションの全ての改修も完了致しました!
2017年7月3日月曜日
簡単! @関数だけで、一次承認ワークフロー ~その2
みなさま、こんにちは!
今週から7月。暑くなりますが、イベントも目白押しで、夏バテしている暇もありません。
特に来週末にはノーツコンソーシアム ユーザー情報交換会が秋田の『TDK歴史みらい館』にて開催されます。年数回ですが、ユーザー会員の皆様とお会いできることが楽しみで仕方ありません。
それでは本日の内容について始めさせて頂きます。
先日に引き続き、今回は主にワークフローのビューを作成して参ります。
なおせっかく日付と期間のフィールドがありますので、カレンダービューも作成してみましょう。
カレンダービューの作り方はヘルプに記載されていますが、要点として
1列目:日時(日付と時刻の両方を表示)/昇順/非表示
2列目:期間(分単位で期間を設定、必要なければ、デフォルト値で"0"でも可)/非表示
3列目:カレンダーに表示する内容
となります。
なお本ビューについてひとつ不具合がございます。
期間が2日以内ですと、正しくカレンダーに両日表示されるのですが、3日を超えますと初日にしか表示されません。
上記ですと、6/19の申請は6/19~21の3日間の申請になりますが、カレンダーには初日のみしか表示されません。
反して6/26の申請は、6/26~27の2日間の申請であり、正しくカレンダーに表示されています。
但し、設計側で見ると正しい数値が設定されております。
こちらがカレンダーの設計画面です。
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月も終わりですね。当初は雨が少なく水不足が心配されましたが、ようやく梅雨らしくなって参りました。
個人的にはあまり雨で好きではありませんが、特に農家の方々など、必要なときに必要な降水量は必要かと思いますので、「例年並み」が好ましいのでしょうか。
さて全く話題は異なりますが、海水浴シーズン目前ということでひとつだけ宣伝を!!

詳しくはサイトをご覧ください。
ちょうど今週日曜に、舞鶴にあります海上保安学校にて【五森祭】が開催されます。
去年に引き続き、今年も参加させて頂きます。
また可能な写真等はフェイスブックに掲載させて頂きます。
それでは本題です。
今回から数回に分けて、@関数だけで簡単な一次承認のワークフローを作ってみたいと思います。内容としては、よくある勤務に関わる届出として作成致します。
今回も作りながら記事にしておりますので、後ほど修正が入るかもしれませんが、何とぞご容赦ください。
早速ですが、新規のアプリケーションを作成します。(以前までに作成したユニバーサルテンプレートを利用していただいても構いませんが、本文面についてはこちらは使わずに説明を行います。)
私の設定は下記のようにしました。
続いて新規フォームを作成します。
私の設定は以下としました。
続いて以下フィールドを作成します。
本来、本人が申請者であることが多いのですが、代理で申請する場合も考慮し、初期値としてデフォルトユーザーを設定していますが、アドレス帳から選択できるようにも対応しております。
こちらのフィールドに、DJXを参照し、申請者を漢字化しました。
上司(承認者)を選択するダイアログです。
対象期間の開始日を選択します。
同じく終了日を選択します。同日の場合でも必須としています。
先のふたつの日付フィールドの差から、日数を計算しています。
理由を記載する項目です。
私のイメージでは下記のようになりました。
次にフォームのウィンドウタイトルの設定を行います。
ウィンドウタイトルに、新規作成の場合は、「新規フロー 作成中」と表示。既存文書の場合は、「○○届け【氏名(漢字名)】」と表示させています。
再度に著作関連(登録日・登録者・編集日・編集者)のサブフォームを作成し、埋め込みます。
※著作関連サブフォームについては、以前のユニバーサルテンプレートをご覧ください。
それでは一度、IBM Notesでプリビューしてみましょう。
以下のように表示されるかと思います。
次にフロー部分のフィールドを追加します。
フォームの先頭にフローの状況を表示するステータスフィールドを追加します。
ワークフローということで、アクションボタンでステータスを切り替えるため、あえてダイアログにせず、テキストとしています。
続いてサブフォームのすぐ上に、承認者の署名欄を作成します。
今回は以上にてフォームのフィールド配置までを行いました。
次回は必要なビューを作成して参ります。
今週で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) |
先のふたつの日付フィールドの差から、日数を計算しています。
|
理由を記載する項目です。
私のイメージでは下記のようになりました。
次にフォームのウィンドウタイトルの設定を行います。
@If(@IsNewDoc;"新規フロー 作成中";Title+"届【"+Dsp_Applier+"】") |
ウィンドウタイトルに、新規作成の場合は、「新規フロー 作成中」と表示。既存文書の場合は、「○○届け【氏名(漢字名)】」と表示させています。
再度に著作関連(登録日・登録者・編集日・編集者)のサブフォームを作成し、埋め込みます。
※著作関連サブフォームについては、以前のユニバーサルテンプレートをご覧ください。
それでは一度、IBM Notesでプリビューしてみましょう。
以下のように表示されるかと思います。
次にフロー部分のフィールドを追加します。
フォームの先頭にフローの状況を表示するステータスフィールドを追加します。
名前:Status 種類:テキスト デフォルト値:"1.承認依頼中" |
ワークフローということで、アクションボタンでステータスを切り替えるため、あえてダイアログにせず、テキストとしています。
続いてサブフォームのすぐ上に、承認者の署名欄を作成します。
名前:Sign 種類:テキスト |
今回は以上にてフォームのフィールド配置までを行いました。
次回は必要なビューを作成して参ります。
2017年6月12日月曜日
ユニバーサルテンプレート~フレームセット①~
みなさま、こんにちは!!
先週金曜は、ノーツコンソーシアム 大阪研究会に参加させて頂きました。
今回のテーマは、Y様によるWEB化に関するセッションと、各自アプリを持ち寄っての討議が中心でした。
WEB化については、実際にブラウザで使う機能を中心に作ることや、成功への道筋について教わりました。
各自のアプリも日常のヒントとなるものが多く、興味深いものでした。
今週金曜は、テクてくLotus技術者夜会があります。
なんとかしてリモートでも参加したかったのですが、どうしても本業の会議があり、今回は参加できません。
今回も大阪にてパブリックビューが開催されますので、ぜひ関西でノーツに関わりのアル方は、日程調整ください。
前置きが長くなりましたが、今回はフレームセットと合わせてメニュー部分のナビゲータをテンプレートに組み込んでみます。
従来弊社では、ナビゲータではなくアウトラインをページに埋め込んでメニューとしていましたが、見た目や使いやすさ、さらにメニューの分割なども考慮し、ナビゲータを使うように変更しております。
ということで、まずはナビゲータから作成します。
デザインについては好みや企業カラー等で分かれるところですので、今回の内容からは除外させて頂きます。
[新規ナビゲータ]を作成し、左上にアプリケーションの名称を入れるテキストボックスを作成し、今回は「タイトル」と記載しておきます。
続いてその下に四角形を追加していき、標題に[ビュー名]を設定していきます。
テンプレート内にはビューがひとつしかありませんので、先頭の四角形についてシンプルアクションを設定しておきます。
[ビュー/フォルダを開く] - [一覧]
ハイライトの設定も行っておきましょう。
以上でナビゲータができました。
続いてフレームセットを作成します。
[新規フレームセット]を作成します。
今回は下記のような設定で作成しました。
続いて各フレームの設定です。
左列
名前: menu
種類: 名前付き設計要素 ナビゲータ
値: メニュー
フレーム内のリンクのデフォルト対象: body
右列
名前: body
種類: 名前付き設計要素 ビュー
値: 一覧
以上で以下のように表示されました。
以上で保存して閉じます。
最後に起動時の設定を行いますので、[アプリケーション構成] - [アプリケーションのプロパティ]を開きます。
[起動]タブにて
起動: 指定したフレームセットを開く
フレームセット: メイン
を選択し、保存して閉じます。
以上でノーツクライアント用としてのテンプレートは現時点では完成です。
もちろん今後も新たな機能は随時追加し、どんどん良くしていく予定ですが、まずはこちらをテンプレートとして保存し、今後の新規作成時に使用して参ります。
テンプレート化については、【第8回】タイムレコーダーアプリ作成~テンプレート化~をご覧ください。
さて、次回は・・・どうしたことか。
先週金曜は、ノーツコンソーシアム 大阪研究会に参加させて頂きました。
今回のテーマは、Y様によるWEB化に関するセッションと、各自アプリを持ち寄っての討議が中心でした。
WEB化については、実際にブラウザで使う機能を中心に作ることや、成功への道筋について教わりました。
各自のアプリも日常のヒントとなるものが多く、興味深いものでした。
今週金曜は、テクてくLotus技術者夜会があります。
なんとかしてリモートでも参加したかったのですが、どうしても本業の会議があり、今回は参加できません。
今回も大阪にてパブリックビューが開催されますので、ぜひ関西でノーツに関わりのアル方は、日程調整ください。
前置きが長くなりましたが、今回はフレームセットと合わせてメニュー部分のナビゲータをテンプレートに組み込んでみます。
従来弊社では、ナビゲータではなくアウトラインをページに埋め込んでメニューとしていましたが、見た目や使いやすさ、さらにメニューの分割なども考慮し、ナビゲータを使うように変更しております。
ということで、まずはナビゲータから作成します。
デザインについては好みや企業カラー等で分かれるところですので、今回の内容からは除外させて頂きます。
[新規ナビゲータ]を作成し、左上にアプリケーションの名称を入れるテキストボックスを作成し、今回は「タイトル」と記載しておきます。
続いてその下に四角形を追加していき、標題に[ビュー名]を設定していきます。
テンプレート内にはビューがひとつしかありませんので、先頭の四角形についてシンプルアクションを設定しておきます。
[ビュー/フォルダを開く] - [一覧]
ハイライトの設定も行っておきましょう。
以上でナビゲータができました。
続いてフレームセットを作成します。
[新規フレームセット]を作成します。
今回は下記のような設定で作成しました。
続いて各フレームの設定です。
左列
名前: menu
種類: 名前付き設計要素 ナビゲータ
値: メニュー
フレーム内のリンクのデフォルト対象: body
右列
名前: body
種類: 名前付き設計要素 ビュー
値: 一覧
以上で以下のように表示されました。
以上で保存して閉じます。
最後に起動時の設定を行いますので、[アプリケーション構成] - [アプリケーションのプロパティ]を開きます。
[起動]タブにて
起動: 指定したフレームセットを開く
フレームセット: メイン
を選択し、保存して閉じます。
以上でノーツクライアント用としてのテンプレートは現時点では完成です。
もちろん今後も新たな機能は随時追加し、どんどん良くしていく予定ですが、まずはこちらをテンプレートとして保存し、今後の新規作成時に使用して参ります。
テンプレート化については、【第8回】タイムレコーダーアプリ作成~テンプレート化~をご覧ください。
さて、次回は・・・どうしたことか。
2017年6月5日月曜日
ユニバーサルテンプレート~アクション①~
みなさま、こんにちは!!
先月のテクてくLotus技術者夜会 ザ・大阪編、いかがでしたでしょうか。
私の発表はともかく、他の皆様の発表は本当に興味深いものが多かったはずです。
まだ資料はアップされておりませんが、近日には公開されるかと思いますので、参加できなかった皆様もぜひご一読ください。
また先週書きましたが、今週金曜は「大阪地区研究会第 2 回」です。お時間ございましたら、ぜひご参加ください!!
さてのびのびになっておりましたが、今回こそユニバーサルテンプレートのアクションを追加して参ります。
実際に作成する前に、システムアクションとして準備されているものをおさらいしておきましょう。
・分類
・文書の編集
・文書の送信
・転送
・フォルダへ移動
・フォルダから削除
・既読
・未読
・新規ウィンドウで開く
・印刷
・削除
・文書のプロパティ
・切り取り
・コピー
・文書リンクとしてコピー
・表としてコピー
・貼り付け
主要なアクションはこちらに揃っているのですが、それでも不足するものや、複雑な機能のアクションを[コード] - [共有アクション]に作成します。
まずは[戻る]です。フォームに設置し、何もせずにビューに戻るというものです。
式: @Command([FileCloseWindow])
単純に現在開いているウィンドウを閉じるだけのものです。
同じ式でビュー用に[終了]も作っておきましょう。
次に[保存]です。こちらもフォームに設置し、データを保存して閉じる機能を設定します。
式:
@Command([FileSave]);
@Command([FileCloseWindow])
なお保存するという行為は文書がプリビュー時には必要ないアクションですので、[プリビュー(読み込み)]と[読み込みモード]時に非表示にしておきます。
次に[新規作成]ボタンです。ビューに設置し、新しいフォーム文書を作成するためのボタンです。
式: @Command([Compose];"library")
この例では、別名「library」というフォームを新規作成モードで開くものになります。
以上でよく使用するアクションが作成できました。
それぞれ文中の要素(フォーム/ビュー)のアクションに追加しておきます。
共有アクションの追加は、アクションペインを右クリックし、[共有アクションの挿入]から行います。一度に複数のアクションを追加することも可能です。
なお私はシステムアクションと同機能のボタンを作成しているものがあります。
意図としては、システムアクションではデフォルトでアイコンが設定されておらず、いちいち設定することが手間なことによります。
[印刷]・・・ 式: @Command([FilePrint])
[削除]・・・ シンプルアクション: 文書の削除
[転送]・・・ 式: @Command([MailForward])
[編集]・・・ 式: @Command([EditDocument])
※編集ボタンのみ[プリビュー(編集モード)]と[編集モード]時及び新規文書として作成時に非表示としています。([式によりアクションを非表示にする]・・・ 式: @IsNewDoc)
最後に、個人的によく使うアクションをいくつか紹介致します。
[通知保存]・・・フォーム内に[sendto]という名前フィールドを作成し、ボタンクリック時にその方へ文書リンクを含むメールを送信するというものです。
式:
@Command([FileSave]);
@MailSend(sendto;"";"";createdby+"からのメール通知";"";createdby+"からのメール通知が届きました。"+@NewLine+"こちらをご確認ください ⇒ ";[IncludeDoclink] );
@Command([FileCloseWindow])
保存せずに閉じてしまうと、文書リンクが途切れますので、保存⇒メール送信⇒閉じるという順にしております。
@NewLineでメール本文に改行を入れることが可能です。
こちらも保存ボタン同様、[プリビュー(読み込み)]と[読み込みモード]時に非表示にしておきます。
次にワークフローなどで使用する[承認]ボタンです。
フォーム中に t_syoninという名前フィールドを作成し、ボタンクリック時にクリックした人の名前を保存するというものです。
式:
@If(@IsDocBeingEdited; @True;@Command( [EditDocument] ; 1 ));
@SetDocField(@DocumentUniqueID;"t_syonin";@Name([CN];@UserName));
@Command([FileSave]);
@Command([FileCloseWindow])
最後にビューに設置し、全文書を再計算させるアクションです。
弊社ではAS400のマスタをノーツDBとしてリンクしていますが、そのDBをLookupしている文書は都度更新しなければ、最新状態になりませんので、その対応用のアクションになります。
式: @Command([ToolsRefreshAllDocs])
なお上記以外についても、ノーツアイコン以外のアイコンをボタンで使用する場合などについても登録しています。
その場合はイメージリソースに画像ファイルを読み込んでおき
※私は内容が分かりやすいように、別名をコメント代わりに使用しています。
アクションのアイコンで選択すると簡単です。
以上、少し長くなりましたが、現時点で弊社で使用している共有アクションについて記載させて頂きました。
もしこんなのあれば便利というものがあれば、ご紹介ください。
次回はナビゲーターを予定しております。
先月のテクてくLotus技術者夜会 ザ・大阪編、いかがでしたでしょうか。
私の発表はともかく、他の皆様の発表は本当に興味深いものが多かったはずです。
まだ資料はアップされておりませんが、近日には公開されるかと思いますので、参加できなかった皆様もぜひご一読ください。
また先週書きましたが、今週金曜は「大阪地区研究会第 2 回」です。お時間ございましたら、ぜひご参加ください!!
さてのびのびになっておりましたが、今回こそユニバーサルテンプレートのアクションを追加して参ります。
実際に作成する前に、システムアクションとして準備されているものをおさらいしておきましょう。
・分類
・文書の編集
・文書の送信
・転送
・フォルダへ移動
・フォルダから削除
・既読
・未読
・新規ウィンドウで開く
・印刷
・削除
・文書のプロパティ
・切り取り
・コピー
・文書リンクとしてコピー
・表としてコピー
・貼り付け
主要なアクションはこちらに揃っているのですが、それでも不足するものや、複雑な機能のアクションを[コード] - [共有アクション]に作成します。
まずは[戻る]です。フォームに設置し、何もせずにビューに戻るというものです。
式: @Command([FileCloseWindow])
単純に現在開いているウィンドウを閉じるだけのものです。
同じ式でビュー用に[終了]も作っておきましょう。
次に[保存]です。こちらもフォームに設置し、データを保存して閉じる機能を設定します。
式:
@Command([FileSave]);
@Command([FileCloseWindow])
なお保存するという行為は文書がプリビュー時には必要ないアクションですので、[プリビュー(読み込み)]と[読み込みモード]時に非表示にしておきます。
次に[新規作成]ボタンです。ビューに設置し、新しいフォーム文書を作成するためのボタンです。
式: @Command([Compose];"library")
この例では、別名「library」というフォームを新規作成モードで開くものになります。
以上でよく使用するアクションが作成できました。
それぞれ文中の要素(フォーム/ビュー)のアクションに追加しておきます。
共有アクションの追加は、アクションペインを右クリックし、[共有アクションの挿入]から行います。一度に複数のアクションを追加することも可能です。
なお私はシステムアクションと同機能のボタンを作成しているものがあります。
意図としては、システムアクションではデフォルトでアイコンが設定されておらず、いちいち設定することが手間なことによります。
[印刷]・・・ 式: @Command([FilePrint])
[削除]・・・ シンプルアクション: 文書の削除
[転送]・・・ 式: @Command([MailForward])
[編集]・・・ 式: @Command([EditDocument])
※編集ボタンのみ[プリビュー(編集モード)]と[編集モード]時及び新規文書として作成時に非表示としています。([式によりアクションを非表示にする]・・・ 式: @IsNewDoc)
最後に、個人的によく使うアクションをいくつか紹介致します。
[通知保存]・・・フォーム内に[sendto]という名前フィールドを作成し、ボタンクリック時にその方へ文書リンクを含むメールを送信するというものです。
式:
@Command([FileSave]);
@MailSend(sendto;"";"";createdby+"からのメール通知";"";createdby+"からのメール通知が届きました。"+@NewLine+"こちらをご確認ください ⇒ ";[IncludeDoclink] );
@Command([FileCloseWindow])
保存せずに閉じてしまうと、文書リンクが途切れますので、保存⇒メール送信⇒閉じるという順にしております。
@NewLineでメール本文に改行を入れることが可能です。
こちらも保存ボタン同様、[プリビュー(読み込み)]と[読み込みモード]時に非表示にしておきます。
次にワークフローなどで使用する[承認]ボタンです。
フォーム中に t_syoninという名前フィールドを作成し、ボタンクリック時にクリックした人の名前を保存するというものです。
式:
@If(@IsDocBeingEdited; @True;@Command( [EditDocument] ; 1 ));
@SetDocField(@DocumentUniqueID;"t_syonin";@Name([CN];@UserName));
@Command([FileSave]);
@Command([FileCloseWindow])
最後にビューに設置し、全文書を再計算させるアクションです。
弊社ではAS400のマスタをノーツDBとしてリンクしていますが、そのDBをLookupしている文書は都度更新しなければ、最新状態になりませんので、その対応用のアクションになります。
式: @Command([ToolsRefreshAllDocs])
なお上記以外についても、ノーツアイコン以外のアイコンをボタンで使用する場合などについても登録しています。
その場合はイメージリソースに画像ファイルを読み込んでおき
※私は内容が分かりやすいように、別名をコメント代わりに使用しています。
アクションのアイコンで選択すると簡単です。
以上、少し長くなりましたが、現時点で弊社で使用している共有アクションについて記載させて頂きました。
もしこんなのあれば便利というものがあれば、ご紹介ください。
次回はナビゲーターを予定しております。
2017年5月22日月曜日
ExcelのデータをNotes文書にするVBA
皆様、こんにちは!!
先週末のテクてくLotus技術者夜会 ザ・大阪編、いかがでしたでしょうか。
私の発表はともかく、他の皆様の内容は非常に興味深いものばかりでした。
近々資料もアップロードされるかと思いますので、参加できなかった皆様もぜひご一読いただければと考えております。
さて今回は前回記載しましたユニバーサルテンプレート アクション編を次回にまわさせて頂き、テクてくにてI様が触れられていたExcel VBAを利用したNotesの運用にヒントを頂き、早速社内業務に適用してみましたので、そちらについて記載させて頂きます。
I様の事例では、ExcelシートにNotesアプリケーションのデータを呼び込むというものでした。
弊社では基幹システムからデータをExcelに呼び出し、CSV化してNotesにインポートするという業務が複数あり、都度colファイルを切り替えながらという手間がありました。
今回はExcelに呼び出したデータをVBAを利用し、Notesの新規文書として保存する手順を記載させて頂きます。
※データ項目数はかなり多いものですが、今回は割愛して紹介させて頂きますので、ご了承ください。
まず従来呼び出していたExcelファイルです。
A列から、部課コード・担当者コード・取引先コード・取引先支店コードの4項目がセットされています。
早速ですが、VBAのコードです。
-----------------------------------------------------------------------------------------
Public Sub import_notesdb()
Dim Session As Object
Dim db As Object
Dim doc As Object
Set Session = CreateObject("Notes.Notessession")
Set db = Session.GetDatabase("サーバー名", "DB名.nsf")
Set doc = db.createdocument(db)
doc.form = "フォーム名(別名)"
doc.フィールド名1 = Range("A1").Value
doc.フィールド名2= Range("B1").Value
doc.フィールド名3 = Range("C1").Value
doc.フィールド名4 = Range("D1").Value
Call doc.Save(True, True)
End Sub
-----------------------------------------------------------------------------------------
赤字の部分は貴社環境に合わせて変更してください。
特に難しいコードはひとつもありませんね。
Excelブックを保存し、「import_notesdb」を実行します。
Notesアプリケーションを開くと、インポートされていることがわかります。
文書を開くと、
先週末のテクてくLotus技術者夜会 ザ・大阪編、いかがでしたでしょうか。
私の発表はともかく、他の皆様の内容は非常に興味深いものばかりでした。
近々資料もアップロードされるかと思いますので、参加できなかった皆様もぜひご一読いただければと考えております。
さて今回は前回記載しましたユニバーサルテンプレート アクション編を次回にまわさせて頂き、テクてくにてI様が触れられていたExcel VBAを利用したNotesの運用にヒントを頂き、早速社内業務に適用してみましたので、そちらについて記載させて頂きます。
I様の事例では、ExcelシートにNotesアプリケーションのデータを呼び込むというものでした。
弊社では基幹システムからデータをExcelに呼び出し、CSV化してNotesにインポートするという業務が複数あり、都度colファイルを切り替えながらという手間がありました。
今回はExcelに呼び出したデータをVBAを利用し、Notesの新規文書として保存する手順を記載させて頂きます。
※データ項目数はかなり多いものですが、今回は割愛して紹介させて頂きますので、ご了承ください。
まず従来呼び出していたExcelファイルです。
A列から、部課コード・担当者コード・取引先コード・取引先支店コードの4項目がセットされています。
早速ですが、VBAのコードです。
-----------------------------------------------------------------------------------------
Public Sub import_notesdb()
Dim Session As Object
Dim db As Object
Dim doc As Object
Set Session = CreateObject("Notes.Notessession")
Set db = Session.GetDatabase("サーバー名", "DB名.nsf")
Set doc = db.createdocument(db)
doc.form = "フォーム名(別名)"
doc.フィールド名1 = Range("A1").Value
doc.フィールド名2= Range("B1").Value
doc.フィールド名3 = Range("C1").Value
doc.フィールド名4 = Range("D1").Value
Call doc.Save(True, True)
End Sub
-----------------------------------------------------------------------------------------
赤字の部分は貴社環境に合わせて変更してください。
特に難しいコードはひとつもありませんね。
Excelブックを保存し、「import_notesdb」を実行します。
Notesアプリケーションを開くと、インポートされていることがわかります。
文書を開くと、
指定したフィールドに値がセットされています。
とっても簡単ですね!!
今まで苦労していましたので、かなり便利になりました。
また副産物としてCSVデータをNotesに呼び出した場合、先頭の"0"が消えるという現象がありましたが、このVBAではこちらも回避できるようになりました。
あとは複数行のデータを繰り返すように組み替えれば完成です。
従来Notesのインポート操作を一般ユーザーに教えるのは少し難しいところがあったのですが、Excel VBAですと誤った操作をしてしまうことも回避できるため、こちらも大きな進歩になりました。
I様、重要なヒントありがとうございました!!
次回はユニバーサルテンプレートに戻る予定です。
2017年5月15日月曜日
ユニバーサルテンプレート~ビュー①~
みなさま、こんにちは!!
いよいよ今週ですね、
テクてく Lotus 技術者夜会 ザ・大阪編(テクてく大阪)。
関西では年1回のイベントです。
今年はライトニングトークということで、私含めたくさんの方が話題を持ち寄って参加致します。
近隣の方は、ぜひご都合つけて現地へ。
また東京でもパプリックビューがございますので、首都圏の方はそちらにご参加ください!!
皆様とお会いできることを楽しみにしております。
さて今回は先日のフォームに続きまして、ユニバーサルテンプレートのビューについて記載致します。
ビューの場合、デザイン部分を除けば、フォームほどの設定項目がありません。
既存の(無題)ビューをクリックし、[F2]キーで名前と別名を変更します。
私の環境では
名前: 一覧
別名: all
としました。
続いてビューの選択式を設定します。
特にテンプレートですので設定の必要もありませんが、実際に作るアプリケーションで複数のフォームを利用することも考えられますので、参考ということで設定致します。
ビューの選択
[使用フォームにより検索] - [ライブラリ]
続いてビューのプロパティを開き、[スタイル]タブにてデザイン要素を設定します。
加えて未読行の表示色も設定します。
行
未読: 赤
また[詳細]タブでも
未読マーク: 標準
にしておきます。
列の内容については、デザイン要素の設定を行います。
また弊社ではビューの行の色を制御して目立つようにしたアプリケーションが結構ありますので、こちらの機能を追加します。
ビューの1列目を選択し、
タイトル: [ブランク]
色で値を表示にチェック
詳細タブで「列を非表示」にもチェック
続いてフィールドの式に以下を設定します。
red := 255:0:0;
blue := 0:0:255;
yellow := 255:255:0;
pink := 255:193:253;
white := 255:255:255;
black := 1:1:1;
apricot := 255:155:133;
plain:= 0:0:0;
@If (フィールド名!= "***";0:0:0;black:yellow)
この例ですと、「フィールド名」が「***」である場合、
背景:黒
文字:黄色
で表示するというものです。
余談ですが、この配色は弊社では「タイガースカラー」として一番目立たせる際の配色パターンになります。
結果の一例では、下記のように表示することができます。
主な色を一時変数に与えておりますので、自由に組み合わせて使用することが可能になります。
残りはアクションバーのプロパティにてデザイン要素を変更します。
以上で非常に簡単ですが、ビューのテンプレートについては完成とさせて頂きます。
もちろん一般的に使う列を先に組み込んでおくことも可能ですが、今回は設定していません。
次回はアクションについて記載する予定です。
いよいよ今週ですね、
テクてく Lotus 技術者夜会 ザ・大阪編(テクてく大阪)。
関西では年1回のイベントです。
今年はライトニングトークということで、私含めたくさんの方が話題を持ち寄って参加致します。
近隣の方は、ぜひご都合つけて現地へ。
また東京でもパプリックビューがございますので、首都圏の方はそちらにご参加ください!!
皆様とお会いできることを楽しみにしております。
さて今回は先日のフォームに続きまして、ユニバーサルテンプレートのビューについて記載致します。
ビューの場合、デザイン部分を除けば、フォームほどの設定項目がありません。
既存の(無題)ビューをクリックし、[F2]キーで名前と別名を変更します。
私の環境では
名前: 一覧
別名: all
としました。
続いてビューの選択式を設定します。
特にテンプレートですので設定の必要もありませんが、実際に作るアプリケーションで複数のフォームを利用することも考えられますので、参考ということで設定致します。
ビューの選択
[使用フォームにより検索] - [ライブラリ]
続いてビューのプロパティを開き、[スタイル]タブにてデザイン要素を設定します。
加えて未読行の表示色も設定します。
行
未読: 赤
また[詳細]タブでも
未読マーク: 標準
にしておきます。
列の内容については、デザイン要素の設定を行います。
また弊社ではビューの行の色を制御して目立つようにしたアプリケーションが結構ありますので、こちらの機能を追加します。
ビューの1列目を選択し、
タイトル: [ブランク]
色で値を表示にチェック
詳細タブで「列を非表示」にもチェック
続いてフィールドの式に以下を設定します。
red := 255:0:0;
blue := 0:0:255;
yellow := 255:255:0;
pink := 255:193:253;
white := 255:255:255;
black := 1:1:1;
apricot := 255:155:133;
plain:= 0:0:0;
@If (フィールド名!= "***";0:0:0;black:yellow)
この例ですと、「フィールド名」が「***」である場合、
背景:黒
文字:黄色
で表示するというものです。
余談ですが、この配色は弊社では「タイガースカラー」として一番目立たせる際の配色パターンになります。
結果の一例では、下記のように表示することができます。
主な色を一時変数に与えておりますので、自由に組み合わせて使用することが可能になります。
残りはアクションバーのプロパティにてデザイン要素を変更します。
以上で非常に簡単ですが、ビューのテンプレートについては完成とさせて頂きます。
もちろん一般的に使う列を先に組み込んでおくことも可能ですが、今回は設定していません。
次回はアクションについて記載する予定です。
2017年5月8日月曜日
ユニバーサルテンプレート~フォーム①~
みなさま、こんにちは!!
ゴールデンウィークも終ってしまいましたね。
弊社ではこの期間を利用し、本社事務所内の床の貼り替えと什器の入れ替えを行いました。
綺麗な事務所で、心機一転といきたいところですが、個人的にはすべて出勤でしたので、ちょっと疲れが・・・。
さて少しネタに困って参りましたので、ユニバーサルテンプレートの整備について、小出しにさせていただこうかと考えております。
そもそも弊社ではアクションボタンや、フォームのフィールド式を保存した「ライブラリ」というノーツデータベースがあり、設計要素をコピーして利用しておりました。
そんな中、昨年のノーツコンソーシアム 大阪研究会にてH様・・・先日公開しましたアプリケーション管理アプリをご紹介頂きました・・・よりまたしても、重要なヒントを頂いたものです。
H様がアプリケーションを新規作成する場合、必ずひとつのテンプレートから作成されるそうです。
そのテンプレートにはさまざまな設計要素が準備されており、コアな部分をそのまま流用するというものでした。
もちろんテンプレートの設計引継ぎは解除して作成することになります。
もっともテンプレートとして用意するか、設計要素をコピーするかの違いではありますが、先般の林様の「Cool で使いやすい Notes アプリデザイン講座」の要素も含めると、テンプレート化した方が使いやすいのではと感じた次第です。
ということで、ブログを書きつつも、実は実際にテンプレートを作りながらというところが現実の姿になります。
ですから、後々に修正や追加は当たり前のように生じることになるはずですので、ご了承ください。
それでは今回はフォームについてご紹介させて頂きます。
新規でアプリケーションを作成し、新規のフォームを作成します。(各名称は自由)
フォームのウィンドウタイトルに
@If(@IsNewDoc;"新規●● 作成中";タイトルフィールド名)
と入力します。
赤字部分を実際に構築するアプリケーションに合わせて変更することで、ウィンドウのタイトルを制御します。
新規作成時・・・「新規●●作成中」
既存文書時・・・「タイトルフィールド名」
とノーツクライアントのタブとウィンドウのタイトルに表示されます。
続いて一般ユーザーへの非表示の表を作成します。
こちらに設計内容等を記載しておくことで、後々の参考にすることができます。
ノーツコンソーシアムの研究会でも、なかなかアプリケーションのドキュメントが残せないという意見が多くありました。
フォーム上に残しておくことで、改めてドキュメントを作成する必要を回避するものになります。・・・こちらもH様より頂いた情報になります。
フォームの上部に表をひとつ作成し、色は表・文字ともにグレーにしています。
ロールで[DBMgr]に割り当たっている方のみ表示できるように設定しますので、プロパティの段落非表示タブにて、
[式により段落を非表示] にチェックし、式には
!(@UserRoles="[DBMgr]")
と記述します。
もちろんACLでロールに[DBMgr]を追加し、管理者には割り当てておく必要があります。
続いて実際に表示させる表を追加します。
デザイン要素は先に記載の通り、林様セッションの内容を加味したものとしております。
次にフィールドです。
主に使う要素として、
・デフォルト値
・入力の変換
・入力の確認
を設定してあります。
入力の変換の例として、
@Narrow("")
として入力された内容の半角化を行っています。もちろん他の@Wideで全角化も可能ですし、他の式でも使えます。
入力の確認としては、よく使用するブランクチェックとして以下の式を設定します。
@If(フィールド名="";@Failure("[フィールド]の指定は必須です。");@Success)
こちらも赤字部分の書き換えが必要です。
デフォルト値については、それ自体難しいものではありませんが、後日紹介予定のアクションとセットでnotes.iniへの値のやり取りを想定した設計を組み込んでおります。
YOMI=@Environment("ini_name");
@If(YOMI!="";YOMI;"")
この式そのものは、notes.ini 内の ini_name に値がなければブランクを、値があればその値をフィールドにセットするというものです。
続いてアクションバーのデザインを変更しておきます。
最後にフォームとは異なりますが、サブフォームにて登録日・登録者・編集日・編集者の情報をまとめております。
現在は以上となります。
プリビューでは以下のようになります。
実際に使用するには、赤字部分を修正し、内容に合わせた表組みにするなどが必要ですが、アプリケーション開始時にここまで組まれていると楽に進められるのに加え、設定ミスを防ぐことができます。
今後はビューやアクションなどについても同様に進めさせて頂きます。
ゴールデンウィークも終ってしまいましたね。
弊社ではこの期間を利用し、本社事務所内の床の貼り替えと什器の入れ替えを行いました。
綺麗な事務所で、心機一転といきたいところですが、個人的にはすべて出勤でしたので、ちょっと疲れが・・・。
さて少しネタに困って参りましたので、ユニバーサルテンプレートの整備について、小出しにさせていただこうかと考えております。
そもそも弊社ではアクションボタンや、フォームのフィールド式を保存した「ライブラリ」というノーツデータベースがあり、設計要素をコピーして利用しておりました。
そんな中、昨年のノーツコンソーシアム 大阪研究会にてH様・・・先日公開しましたアプリケーション管理アプリをご紹介頂きました・・・よりまたしても、重要なヒントを頂いたものです。
H様がアプリケーションを新規作成する場合、必ずひとつのテンプレートから作成されるそうです。
そのテンプレートにはさまざまな設計要素が準備されており、コアな部分をそのまま流用するというものでした。
もちろんテンプレートの設計引継ぎは解除して作成することになります。
もっともテンプレートとして用意するか、設計要素をコピーするかの違いではありますが、先般の林様の「Cool で使いやすい Notes アプリデザイン講座」の要素も含めると、テンプレート化した方が使いやすいのではと感じた次第です。
ということで、ブログを書きつつも、実は実際にテンプレートを作りながらというところが現実の姿になります。
ですから、後々に修正や追加は当たり前のように生じることになるはずですので、ご了承ください。
それでは今回はフォームについてご紹介させて頂きます。
新規でアプリケーションを作成し、新規のフォームを作成します。(各名称は自由)
フォームのウィンドウタイトルに
@If(@IsNewDoc;"新規●● 作成中";タイトルフィールド名)
と入力します。
赤字部分を実際に構築するアプリケーションに合わせて変更することで、ウィンドウのタイトルを制御します。
新規作成時・・・「新規●●作成中」
既存文書時・・・「タイトルフィールド名」
とノーツクライアントのタブとウィンドウのタイトルに表示されます。
続いて一般ユーザーへの非表示の表を作成します。
こちらに設計内容等を記載しておくことで、後々の参考にすることができます。
ノーツコンソーシアムの研究会でも、なかなかアプリケーションのドキュメントが残せないという意見が多くありました。
フォーム上に残しておくことで、改めてドキュメントを作成する必要を回避するものになります。・・・こちらもH様より頂いた情報になります。
フォームの上部に表をひとつ作成し、色は表・文字ともにグレーにしています。
ロールで[DBMgr]に割り当たっている方のみ表示できるように設定しますので、プロパティの段落非表示タブにて、
[式により段落を非表示] にチェックし、式には
!(@UserRoles="[DBMgr]")
と記述します。
もちろんACLでロールに[DBMgr]を追加し、管理者には割り当てておく必要があります。
続いて実際に表示させる表を追加します。
デザイン要素は先に記載の通り、林様セッションの内容を加味したものとしております。
次にフィールドです。
主に使う要素として、
・デフォルト値
・入力の変換
・入力の確認
を設定してあります。
入力の変換の例として、
@Narrow("")
として入力された内容の半角化を行っています。もちろん他の@Wideで全角化も可能ですし、他の式でも使えます。
入力の確認としては、よく使用するブランクチェックとして以下の式を設定します。
@If(フィールド名="";@Failure("[フィールド]の指定は必須です。");@Success)
こちらも赤字部分の書き換えが必要です。
デフォルト値については、それ自体難しいものではありませんが、後日紹介予定のアクションとセットでnotes.iniへの値のやり取りを想定した設計を組み込んでおります。
YOMI=@Environment("ini_name");
@If(YOMI!="";YOMI;"")
この式そのものは、notes.ini 内の ini_name に値がなければブランクを、値があればその値をフィールドにセットするというものです。
続いてアクションバーのデザインを変更しておきます。
最後にフォームとは異なりますが、サブフォームにて登録日・登録者・編集日・編集者の情報をまとめております。
現在は以上となります。
プリビューでは以下のようになります。
実際に使用するには、赤字部分を修正し、内容に合わせた表組みにするなどが必要ですが、アプリケーション開始時にここまで組まれていると楽に進められるのに加え、設定ミスを防ぐことができます。
今後はビューやアクションなどについても同様に進めさせて頂きます。
2017年3月27日月曜日
既存アプリの最短Xpages化
みなさま、こんにちは!!
いよいよ年度末ですね。金曜は棚卸や決算関係のお仕事が待ち受けています(汗
まあ、もうひとふんばりというところでしょうか。
さて今回は「アプリをWEB化したい」とか、「Xpagesを使ってみたいが・・・」という方が結構いらっしゃると伺っておりますので、まずは既存アプリをできるだけ簡単にWEB化するという点にターゲットを絞って、掲載致します。
どうしても既存のNotesで動いているそのままをXpagesを使って再現するとなるとハードルが上がってしまいます。特にアクションをどう実現するかなど・・・。
弊社ではまずはブラウザで見ることができるようにするというポイントでWEB化を進めております。(今後予定されるポータル導入時に、表示できるようにしたいため)
さて元となるアプリですが、先日公開させて頂きました簡易日報を使用致します。
こちらに日付順のビューと実際のフォームのふたつについて、Xpagesを使用しWEB化致します。
もちろん皆様の環境でご使用のアプリに追加頂いても構いませんが、各内容については読み替えて設定してください。
※既に本番環境で稼動開始しておりますので、画面上では「日報(report.ntf)」というアプリを使用致します。
※なお、xpagesを作成する際の[アプリケーション構成] - [Xspプロパティ]については、
【第3回】タイムレコーダーアプリ作成~XPages作成の準備とトップページの作成~
をご参照ください。
それではまずはビューのページを作成します。
[新規XPage]のボタンをクリックし、ページを作成します。
名前: m_byDate
データソースをページに追加にチェック
データソース:Domino ビュー
ビュー:1.一覧\1.日付順 - byDate
とし、[OK]をクリックします。
すると、右側にデータタブが追加された状態で、新規ページが開きます。
続いて[コントロールの選択]ダイアログボックス(使用可能)の状態で、データソース内の全てを選択し、新規ページにドラッグ&ドロップします。
データバインドコントロールの選択が表示されますので、「Gj」「激」「Li」のチェックを外し、[OK]をクリックします。
すると、下記のようにビューが埋め込まれます。
それでは一度、ブラウザでプリビューしてみましょう。
※テストで1レコードだけ登録しております。
下記のように表示されました。
次にフォームのページを作成します。
[新規Xpage]をクリックし、下記のように設定します。
名前: m_mainForm
データソースをページに追加にチェック
データソース:Domino 文書
フォーム:メインフォーム - main
フォーム検証の実行: 文書ロード時
開いたページに[コアコントロール]からボタンをひとつドラッグ&ドロップします。
プロパティでは
ラベル: 戻る
とし、イベントで onclick 時のアクションを追加します。
カテゴリ: 基本
アクション: ページを開く
開くページの名前: m_byDate
続いてフォームに表示するコントロールをデータタブから追加します。
ビューと同じように一旦全てのコントロールを選択し、ページ上にドラッグ&ドロップします。
Good comment以下のコントロールのチェックを外し、[OK]します。
下記のように、コントロールが配置されました。
それではこちらもプリビューしてみましょう。
無事、表示されました。
それではもう一度 m_byDate を開きます。
ビューの列「日付」をクリックし、選択してください。
プロパティの[表示]タブにある[列の値をリンクとして表示する]にチェックします。
続いてイベントで[アクションの追加]をクリックします。
設定は、
カテゴリ: 基本
アクション: ページを開く
開くページの名前: m_mainForm
ターゲット文書: 文書を開く
以上で一旦Xpageを保存して閉じます。
次にブラウザからデータベース起動時にm_byDateが開くように設定します。
[アプリケーション構成]の[アプリケーションのプロパティ]を開き、[起動]タブに移動します。
Web ブラウザの起動で
起動: 指定した XPage を開く
XPage: m_byDate
とし、[アプリケーションのプロパティ]を保存して閉じます。
それではせっかくですので、ブラウザにアドレスを入れて開いてみましょう。
弊社の環境では、サーバーのDataフォルダ内の[DB]フォルダ内に[report_2017.nsf]というファイルを使用してありますので、下記URLでアクセスします。
http://サーバー名/DB/report_2017.nsf
※ACLの設定により、ユーザー名とパスワードが要求されますので、ノーツクライアントにログイン可能なユーザー名とパスワードでアクセスしてください。
注)インターネットパスワードが設定されている必要があります。
アクセスすると、下記のように表示されます。
リンクとなっている[日付]をクリックすると、対象文書がm_mainFormで開きます。
[戻る]ボタンで m_byDate が開くことをご確認ください。
実運用をするには、デザイン・見た目をもっと変更する必要がありますが、今回の目的はいかに簡単に既存アプリをWEB化するかを目的としておりますので、以上とさせて頂きます。
ここまでの内容でしたら、少しNotesを触ったことがある方でしたら、何のストレスもなくWEB化できるはずです。
ぜひ、いきなり最終形を目指すのではなく、まずはWEB画面で表示できるまでからスタートしてみてください。
いよいよ年度末ですね。金曜は棚卸や決算関係のお仕事が待ち受けています(汗
まあ、もうひとふんばりというところでしょうか。
さて今回は「アプリをWEB化したい」とか、「Xpagesを使ってみたいが・・・」という方が結構いらっしゃると伺っておりますので、まずは既存アプリをできるだけ簡単にWEB化するという点にターゲットを絞って、掲載致します。
どうしても既存のNotesで動いているそのままをXpagesを使って再現するとなるとハードルが上がってしまいます。特にアクションをどう実現するかなど・・・。
弊社ではまずはブラウザで見ることができるようにするというポイントでWEB化を進めております。(今後予定されるポータル導入時に、表示できるようにしたいため)
さて元となるアプリですが、先日公開させて頂きました簡易日報を使用致します。
こちらに日付順のビューと実際のフォームのふたつについて、Xpagesを使用しWEB化致します。
もちろん皆様の環境でご使用のアプリに追加頂いても構いませんが、各内容については読み替えて設定してください。
※既に本番環境で稼動開始しておりますので、画面上では「日報(report.ntf)」というアプリを使用致します。
※なお、xpagesを作成する際の[アプリケーション構成] - [Xspプロパティ]については、
【第3回】タイムレコーダーアプリ作成~XPages作成の準備とトップページの作成~
をご参照ください。
それではまずはビューのページを作成します。
[新規XPage]のボタンをクリックし、ページを作成します。
名前: m_byDate
データソースをページに追加にチェック
データソース:Domino ビュー
ビュー:1.一覧\1.日付順 - byDate
すると、右側にデータタブが追加された状態で、新規ページが開きます。
続いて[コントロールの選択]ダイアログボックス(使用可能)の状態で、データソース内の全てを選択し、新規ページにドラッグ&ドロップします。
データバインドコントロールの選択が表示されますので、「Gj」「激」「Li」のチェックを外し、[OK]をクリックします。
すると、下記のようにビューが埋め込まれます。
それでは一度、ブラウザでプリビューしてみましょう。
※テストで1レコードだけ登録しております。
下記のように表示されました。
次にフォームのページを作成します。
[新規Xpage]をクリックし、下記のように設定します。
名前: m_mainForm
データソースをページに追加にチェック
データソース:Domino 文書
フォーム:メインフォーム - main
フォーム検証の実行: 文書ロード時
開いたページに[コアコントロール]からボタンをひとつドラッグ&ドロップします。
プロパティでは
ラベル: 戻る
とし、イベントで onclick 時のアクションを追加します。
カテゴリ: 基本
アクション: ページを開く
開くページの名前: m_byDate
続いてフォームに表示するコントロールをデータタブから追加します。
ビューと同じように一旦全てのコントロールを選択し、ページ上にドラッグ&ドロップします。
Good comment以下のコントロールのチェックを外し、[OK]します。
下記のように、コントロールが配置されました。
それではこちらもプリビューしてみましょう。
無事、表示されました。
それではもう一度 m_byDate を開きます。
ビューの列「日付」をクリックし、選択してください。
プロパティの[表示]タブにある[列の値をリンクとして表示する]にチェックします。
続いてイベントで[アクションの追加]をクリックします。
設定は、
カテゴリ: 基本
アクション: ページを開く
開くページの名前: m_mainForm
ターゲット文書: 文書を開く
以上で一旦Xpageを保存して閉じます。
次にブラウザからデータベース起動時にm_byDateが開くように設定します。
[アプリケーション構成]の[アプリケーションのプロパティ]を開き、[起動]タブに移動します。
Web ブラウザの起動で
起動: 指定した XPage を開く
XPage: m_byDate
とし、[アプリケーションのプロパティ]を保存して閉じます。
それではせっかくですので、ブラウザにアドレスを入れて開いてみましょう。
弊社の環境では、サーバーのDataフォルダ内の[DB]フォルダ内に[report_2017.nsf]というファイルを使用してありますので、下記URLでアクセスします。
http://サーバー名/DB/report_2017.nsf
※ACLの設定により、ユーザー名とパスワードが要求されますので、ノーツクライアントにログイン可能なユーザー名とパスワードでアクセスしてください。
注)インターネットパスワードが設定されている必要があります。
アクセスすると、下記のように表示されます。
リンクとなっている[日付]をクリックすると、対象文書がm_mainFormで開きます。
[戻る]ボタンで m_byDate が開くことをご確認ください。
実運用をするには、デザイン・見た目をもっと変更する必要がありますが、今回の目的はいかに簡単に既存アプリをWEB化するかを目的としておりますので、以上とさせて頂きます。
ここまでの内容でしたら、少しNotesを触ったことがある方でしたら、何のストレスもなくWEB化できるはずです。
ぜひ、いきなり最終形を目指すのではなく、まずはWEB画面で表示できるまでからスタートしてみてください。
登録:
投稿 (Atom)


























































