ページビューの合計

2017年8月21日月曜日

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

みなさま、こんにちは!
関西は暑い日が続いております。
昨日、子供の小学校の掃除(小川、池の掃除と、周辺の草むしり)に参加したのですが、がんばりすぎたのか、過去に経験したことのない場所の筋肉痛で苦しんでおります。
まあ、1日で出たのが気分的には救いです(汗
ただ、関東方面は雨がちだそうで、昨日もかなりの雷雨とか(驚
皆様、くれぐれも天候にはご注意ください。

さて余談が長くなりましたが、前回まででとりあえずブラウザで見ることができるようになりましたが、ワークフローという性質上、承認判断が生じます。
ということで、ブラウザで承認もしくは却下ができるように組み込んでみます。

ちなみにここから先は私自身、未体験の作業を行いながらの掲載になりますので、正しくない手順を書いてしまうかもしれません。加えて今回の目的である【@関数だけ】というキーワードに従うため、実際の運用に耐え難い設定などもございます。ぜひXPages素人が作成した記事ということで、何とぞお許しください。


まずはカスタムコントロール【formFlow】にステータスを表示させます。

formFlowを開き、先頭に改行を3っつ入れます。

まん中の行にデータタブから【Status】をドラッグ&ドロップし、「編集ボックス」として追加します。


体裁を整えて、一旦保存し、m_Flowをプリビューしてみましょう。


問題なく表示されました。

続いてボタンは前回作成しましたheaderカスタムコントロールの中に作成します。

承認と却下のボタンを作りますが、その前にフォームのデータを扱うため、データソースとして【Flow】をdocument1としてバインドします。

次に既に作成済の【戻る】ボタンの右にさらにふたつ、ボタンコントロールを配置し、ラベルをそれぞれ、【承認】と【却下】にします。


それでは【承認】のイベントを設定します。


カテゴリ:文書
アクション:フィールドの変更
フィールド名:Status
値:2.承認済
データソース名:document1



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



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



続いて却下ボタンです。


カテゴリ:文書
アクション:フィールドの変更
フィールド名:Status
値:3.却下
データソース名:document1



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



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


それぞれStatusを【2.承認済】or 【3.却下】に変更し、保存してm_byDateを開くというものです。

それではm_byDateをブラウザでプリビューし、既存文書を開いてみましょう。


【承認】【却下】ボタンを押し、ステータスが変化するかも確認してください。


今回は@関数だけというキーワードでスタートしましたが、少しだけXPagesを加えてみました。

Notesクライアント画面でも、例えばフォームのダブルクリック時の制御等、本来のアプリケーションとしては不十分なものであります。

XPagesについては、他のビューも必要ですし、アクションボタンの非表示式も書いていません。特にNotesクライアント時には実装したSignフィールドへの値入力や、アクション時のメール送信もできていません。
加えて今回の内容に関しては、根本的にはカスタムコントロールを使わず、直接XPageを作成すべきであったと反省もしております。


私自身、まだまだ初級者ですが、それなりに社内で利用できるアプリはなんとか組み上げられるという点のみ、ご理解頂けましたら今回の目的は達成できたのかなと考えております。

不十分な点が多々ありますことについては、何とぞご容赦ください。
引き続き学習し、できるだけ簡潔な改善が実現できましたら、改めて記載させて頂きます。

2017年8月7日月曜日

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

みなさま、こんにちは!
台風5号がまもなく近畿に上陸しそうです。
少し南の進路を進んでいるため、神戸は直撃はなさそうですが、暴風域には間違いなく入りそうです。
ポートアイランドという地区がら、20時前の満潮も気になりますので、しっかり準備して望みたいと思います。

さて「早く帰れ」と言われそうですが、立場上確認した上でしか帰れないので、掲載させて頂きます。

せっかく前回まででブラウザでとりあえず「見る」ことができるようになりましたので、今回は少し体裁を整えてみます。

まずは申請日順のページです。
前回の状況では、以下のようにとてもわかりにくいビューとなっております。


それではカスタムコントロール【byDate】を開いてください。

まずは一番気になる、ビュー列のタイトル【Dsp_applier】を「申請者」に書き換えます。


列幅を整えます。
各ビュー列のヘッダーの幅をお好みに合わせて、修正してください。


それでは一度、ブラウザでm_byDateをプリビューしてみましょう。


少し承認者のデータが悪いのですが、これだけでもかなりすっきりしたかと思います。

フォントや、余白を工夫すると下記のようになります。



続いてフローのフォームページを変更してみます。
カスタムコントロール【formFlow】を開いてください。

現在のブラウザ画面は以下となります。


まずは項目名を修正しましょう。



Title ⇒ 申請内容
Dsp_applier ⇒ 申請者
Sendto ⇒ 承認者
Start ⇒ 開始日
End ⇒ 終了日
Term ⇒ 期間
Reason ⇒ 事由
Sign ⇒ 決済者


なお、Applierについては、ラベルと編集ボックス両方の可視を外します。

続いて列幅を整えます。
1行目のセルを選択して設定するのですが、特に右のセルが選択しにくいため、左のアウトラインを利用すると簡単に選択できます。


フォント等を整え、ブラウザでプリビューしてみましょう。


まだまだ改善の余地はありますが、最初よりは見やすくなりましたね。

次にフローページ上部にボタンを表示するカスタムコントロールを作成します。


名前:header

まず1行1列、幅100%の表を配置します。
その中に【ワークフロー】と入力し、体裁を整えます。


続いてheaderカスタムコントロールに「戻る」ボタンを付けておきます。

先の表の下にコンテナコントロールから【パネル】を追加します。
パネル内にコアコントロールから【ボタン】を追加し、ラベルを【戻る】とします。


イベントタブに移動し、アクションの追加をクリックします。


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


以上で保存し、m_Flow開きます。
formFlowカスタムコントロールの上にheaderカスタムコントロールを設置します。

それではm_byDateをブラウザでプリビューし、申請者名のリンクをクリックしてみてください。


このように【戻る】ボタンが表示され、クリックすることでm_byDateに戻るようになりました。

以上、デザイン的にもまだまだ改善すべき点は多いのですが、今回もプログラムを書くことなくページを改善したという点をご理解頂けましたら幸いです。

長文にお付き合い、ありがとうございました。

2017年7月31日月曜日

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

みなさま、こんにちは!
先週の木・金はノーツコンソーシアム主催のXPagesワークショップ@大阪へ参加させて頂いて参りました。
昨年に続き、2回目の参加になりますが、同じカリキュラムなのに記憶のないことが多い(汗
ただし、前回よりも少し作業に余裕があるのか、ワークショップの内容を理解しながら進めることができ、少しステップアップした気分です。

簡単なレポートはコンソのブログに掲載して頂けましたので、よかったらご覧ください。


さて先日まで作っておりましたワークフローですが、今回からは興味ある方が多い?
XPagesを使って、ブラウザで表示できるようにしてみたいと思います。
XPagesを動かしますので、今回からは直接サーバー上のアプリケーションをDesignerで開いて作業致します。

【アプリケーション構成】内の【Xspプロパティ】については、過去記事をご参照ください。

まずは申請日順のビューを使い、カスタムコントロールを作成します。


名前:byDate


続いてデータとして、申請日順ビューをバインドします。


バインドされた全ての項目を選択し、設計画面にドラッグ&ドロップします。


このまま保存して閉じます。

続いて新規XPageを作成します。

名前:m_byDate


続いて先ほど作成したカスタムコントロール【byDate】を設計にドラッグ&ドロップします。

以上で一度、ブラウザでプリビューしてみましょう。


デザイン的には・・・ですが、まずは全くプログラムせずにブラウザで表示できることがご理解頂けるかと思います。

続いてフローフォームをバインドしたカスタムコントロールを作成します。

名前:formFlow
デフォルトアクション:文書を開く
フォーム検証の実行:両方


データ項目から、[Title][Applier][Dsp_Applier][Sendto][Start][End][Term][Reason][Sign]をドラッグ&ドロップします。
※今回は画面表示を目的としますので、コントロールは全て【編集ボックス】としました。


こちらもこのまま保存します。

続いて先の日付順と同様に新規Xpageにてフローページを作成します。

名前:m_Flow

こちらもブラウザでプリビューしてみましょう。


それでは日付順ページでデータをクリックした際に、フローページを開く設定を行います。

カスタムコントロール【byDate】を開いてください。

Dsp_Applierを選択し、【表示】にて「列の値をリンクとして表示する」をチェックします。


続いて【イベント】タブを選択し、アクションの追加をクリックします。

カテゴリ:基本
アクション:ページを開く
開くページの名前:m_Flow
ターゲット文書:文書を開く


以上でカスタムコントロールを保存して閉じ、XPage【m_byDate】をもう一度ブラウザでプリビューします。

下記のようにDsp_applierがリンク表示に変わっています。


それではリンクをクリックしてみましょう。



無事、対象のフローページが開くはずです。

体裁は悪いですか、今回はXPagesを使用したWEB化について、全くプログラムすることなく表示できることをご理解頂くための記事としてご理解頂けましたら幸いです。

2017年7月24日月曜日

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

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

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

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


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

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


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


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


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

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


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

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

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

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

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


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

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

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

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

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

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

2017年7月18日火曜日

レポート~ユーザー情報交換会 in 秋田

みなさま、こんにちは!!
梅雨明けが待ち遠しい今日このごろ。先般の九州北部豪雨災害に見舞われました皆様につきましては、一刻も早い復旧が望まれます。また個人的に何もできないことに歯がゆさすら感じております。
どんどん暑くなって参ります。くれぐれも無理なさらずに、水分・塩分補給にはご留意ください。

さて今回は一旦ワークフローを休ませていただき、7月14日(金)に開催されました、ノーツコンソーシアム ユーザー情報交換会の雰囲気をお伝えできればと考えております。

9時半 秋田空港集合・・・当日朝で間に合うのに驚きました

今回主催頂いておりますTDK様のバスで出発です。



最初の目的地であるTDK秋田様本荘工場(西サイト・東サイト)へ

http://www.tdk.co.jp/about_tdk/tdk_network/honjo_east.htm
http://www.tdk.co.jp/about_tdk/tdk_network/honjo_west.htm

薄層チップコンデンサをはじめとする電子部品の工場であり、ほぼ全体がクリーンルームかと思われます。

もちろん工場内に立ち入ることはできず、両サイトをバスで周回頂きました。



そのまま今回の"裏"目的である「岩カキ」を目指し、道の駅 象潟へ。

トイレ休憩もそこそこに、岩カキ目指して歩きました。

15分という短いタイムスケジュールでしたが、もちろん堪能です!


続いて"真"の目的地である、TDK様 歴史みらい館へ到着です。
早速館内の見学ですが、展示内容等は申し訳ありませんが、サイトをご覧ください。

特に盛り上がったのは、歴代のカセットテープ類が壁面いっぱいに展示されたスペース。
昔よく利用させて頂きました。
昼食をはさみ、午後からは本題である「ユーザー情報交換会」

テーマは、
●ノーツのグローバル対応について
●ユーザーお困りごと相談

グローバル対応については、もともとよくできた製品のため、大きな問題点はありませんでした。
しいて挙げるとすると、文字コードの問題と、ユーザー側の「英語力」の問題など。

またフォームの作り方などに関するTipsも、その場で参加いただきましたパートナー様から紹介があり、たいへん参考になりました。

ユーザーお困りごと相談では、各社から持ち出された内容を発表。
内容によっては、ザ・ノーツ研究会にて検討し、結論を頂ける予定です。

「ノーツの今後について」や、「情報発信等」については白熱した議論が交わされましたので、今後に期待です。

次回は10月に東京にて開催です。
会員の皆様、特に参加されたことのない企業様、ぜひ参加をご検討ください!!


最後に歴史みらい館周辺の写真を数枚。
とりわけ夕日は最高でした!!
(TDK様に言わせると、これでも92点だったそうです)


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月4日火曜日

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

みなさま、こんにちは!
台風が近づいてきてますね(汗
神戸は夕方の退社時間あたりが再接近のようです。
皆様、くれぐれもお気をつけください。

さて連日の掲載になりますが、昨日カレンダービューについての不具合を記載致しましたが、早速当日夜に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日以上のエントリーが表示されるようになりました。


小野様、とても迅速なご提案ありがとうございます!!
この不具合はかなり以前から気になっていたのですが、小野様のおかげで心からスッキリさせて頂きました。
既に社内アプリケーションの全ての改修も完了致しました!