投稿

12月, 2011の投稿を表示しています

おじさんSEが学ぶXPages(15)

イメージ
みなさん、こんにちは。

昨日、Twitterで予告したとおり、今年最後のブログです。
会社は昨日(12/28)で仕事納めでしたが、筆者自身はこのブログが仕事納めという事になります。

年々、ブログへの投稿数が減っていましたが、後半はXPages関連のブログを書くという事になり、そのおかげで、Lotus Notes/Dominoに関する情報発信を続けていく事が出来ました、

さらには、このブログを続けていったおかげで、2011~2012年度のIBM Championにも選出されました。先に選ばれた日本人Championのお三方の事を考えると、本当に筆者なんかで良いのか?とも考えてしまいますが、選ばれた以上は、それだけの事はしていきます。


さて、今年最後の記事を読む前に、最早、「言われなくても押してやるよ・・・」と思われているボタンを押してください。







それでは、前回の終わりで予告したように、今回は「蔵書の返却期限に意味を持たせる」ということを考えてみましょう。
色々と実現方法は考えられますが、今回はオーソドックスに「督促メールを送信する」という
事にします。
そう言う意味では、今回はあまりXPagesには触れないかもしれませんが・・・

では、仕様を確認しながら、実装方法を考えていきます。
督促メールを送るのは、貸し出されている蔵書の返却期限を過ぎているものに対してです。
従って、「蔵書貸出」ビューに表示されている文書のうち、返却期限が昨日以前のものが対象です。

「蔵書貸出」ビューの文書を全部取得して、1文書ずつ返却期限を確認しても良いのですが、貸出文書が増えてくると、時間がかかってしまいます。

そこで、「返却期限」を過ぎた「蔵書貸出」文書だけを表示するビューを作成します。

新規に「返却期限切れ」(別名:TimeExpire)という名前でビューを作成します。
ビューの選択式は、「SELECT Form ="Lending" & ( Status = "貸出中" & LendingTerm < @Today )」とします(下図参照)。

今回は、このビューの内容はこれ以上、編集する必要がないので、このまま[OK]をクリックします。


次に、督促メールを送るエージェントを作成します。
エージェントの名前は、「Return…

おじさんSEが学ぶXPages(14)

イメージ
クリスマスです。
みなさんはクリスマスプレゼントはもらったのでしょうか?いや、読者の大半はあげるほうでしょうか?
筆者は・・・内緒です。

さて、そんなクリスマス連休も今日で終わり。ついにあと一週間で今年も終わりです。
すでに、年末年始の休暇に入られた方もいるのではないかと思いますが、もう少しだけ頑張りましょう!

では、今週一週間を乗り切るために、ボタンをクリックしてから読みましょう。




前回は、蔵書の返却について実装しました。
一応はできたものの、以下の3つの不備がある事が判明しましたね。
貸出中の蔵書文書を開いても、「蔵書貸出」ボタンが表示されてしまう「蔵書登録/編集」文書を見ても、誰が借りているのかが不明である「蔵書登録/編集」文書から、「蔵書貸出」文書へのリンクがないため、「貸し出し一覧」経由でないと開けない。 ということで、これらを解消しましょう。

まずは、「1.貸出中の蔵書文書を開いても、「蔵書貸出」ボタンが表示されてしまう」から。
これは簡単ですね。「蔵書貸出」ボタンに可視化の設定を施せば良いのです。

「BookResource」カスタムコントロールを開きます。
「蔵書貸出」ボタンを選択して、「プロパティ」ビューを開きます。

「可視」はすでに{計算済み}になっているはずですが、右側にある◆をクリックして、値の計算を選択します。
スクリプトエディタが開くので、条件式を変更します(下図参照)。
変更前: ! ( document1.isNewNote() | document1.isEditable() )
変更後: !(document1.isNewNote()) && !(document1.isEditable()) && document1.getValue( "Status" ) != "貸出中"

以前は、読み込みモードの時だけ表示するという設定だったので、そこにStatusフィールドが"貸出中"でないときという条件を追加しています。
Status==""ではダメです。これはStatusフィールドを明示的に作成していないので、Statusフィールドが存在しない文書もあるためです。


次に「2.「蔵書登録/編集」文書を見ても、誰が借りているのか…

おじさんSEが学ぶXPages(13)

イメージ
こんばんは。年末が近づいてくると、仕事納めの事を考えてしまいがちですが、まだまだ早いです。
筆者のXPagesブログ、【新規にDBを作ろう編】が終わってません。
なんとか年内に終わらせたい筆者は、頑張って執筆(?)しますよ!


では、今日も秘密のボタンをポチッと押してから次へ。




さて、始める前にちょこっと告知を。
前回のおじさんSEが学ぶXPages(12)の中で、[キャンセル]ボタンをクリックした際に、入力チェックが働かないようにする方法を紹介しました。
こちらですが、もう少し簡単な方法がある事が分かりましたので、記事中に追加してあります。
一度読んだ方も、再度読み直していただければ幸いです。
この情報提供者は、筆者も尊敬しているS山さんです。この場を借りて、御礼申し上げます。


それでは、今日の本題です。前回の終わりに予告したように、今回から「蔵書の返却」について取り扱っていきます。

[返却]アクションの内容は次の通りです。
・「蔵書貸出」文書の状況が"返却済"に、文書の返却日が今日の日付になる。
・「蔵書登録/編集」文書の状況が""になる。

これにより、どうなるかというと、
1.図書の返却督促処理の対象外になる。 2.蔵書が貸出可能になる。 ということです。


上記を踏まえて実装していきましょう。
「蔵書の返却」なので、「蔵書貸出」画面にこの機能を追加しますから、「LendData」カスタムコントロールを開きます。

[保存]ボタンと[キャンセル]ボタンの間に、新しいボタンを追加します。
「コントロール」ビューから、ボタンコントロールをドラッグ&ドロップします(下図参照)。

ボタンのラベルは、「返却」とします。
蔵書が返却されている場合は、このボタンは表示したくないので、「可視化」の右にある◇をクリックして、「値の計算...」を選択します。
スクリプトエディタが表示されるので、
@If(LendingDocument.getValue("Status")=="貸出中", @True(), @False())
と記述します。
これは、「蔵書貸出」文書のStatusフィールドの値によって、ボタンを表示するかしないかを決めるというものです(下図参照)。


次に「イベント」ビューを開きます。
アクシ…

おじさんSEが学ぶXPages(12)

イメージ
えー・・・なんと二日続けての更新です(執筆開始時の時刻です)。
さすがに、入力チェックのことを書くのに、一週間も空けるのは・・・という次第です。

実は、この部分も昨日中に書いてしまおうかと思ったのですが、入力チェックの方法を
「ど忘れ」してしまい、調べるのに時間がかかったので、持ち越したというのが真相です。
筆者でもこんなことはあります。
題名通り、もうおじさんです・・・


さて、そんなおじさんを応援してから読んでくださいね。




ということで、入力チェックについてです。


XPagesの機能として、提供されている入力チェック方法は(筆者が知りうる限り)2つです。
(他にもご存じの方がいれば、読んだ後にコメントくださいm(_ _)m)

それぞれ、実装しながら、紹介していきます。

では、まずは「蔵書登録/編集」画面に入力チェック機能を実装しましょう。
「BookResource」カスタムコントロールを開きます。

フィールド数が少ないので、全部に入力チェックをかけても良いのですが、今回は「蔵書名」に入力チェックをかけます。
蔵書名のフィールド(BookName)を選択します。
「プロパティ」ビューの「妥当性検査」タブを開きます(下図参照)。

この中の「必須フィールド」のチェックをつけて、「必須フィールドのエラーメッセージ」に入力チェック時のエラーメッセージを入力します。
今回は、「蔵書名が入力されていません。」とします。


ちなみに、その右側にある「長さバリデータ」の箇所に、数値を入力しておくと、フィールドに入力された文字数が範囲外の時はエラーとして扱う事が出来ます。 ※蔵書名は、長さ制限を設ける必要がないため、ここは何も設定しません。

これで良いのですが、このままだと画面が切り替わるたびに、この項目の入力チェックが行われます。
[キャンセル]ボタンをクリックされたときや、別のタブ(蔵書一覧、貸し出し一覧)を選択されたときは、入力チェックが行われては困ります。
そこで、これらのアクションが行われるときは、入力チェックが行われないようにします。

[キャンセル]ボタンを選択した状態で、「イベント」ビューを開きます。
「サーバーオプション」の中にある「データの検証または更新を行わない」にチェックをつけます(下図参照)。

これで保存します。

※ 2011/12/21 追加 [キャンセル]ボタ…

おじさんSEが学ぶXPages(11)

イメージ
すっかり、週末更新ブログとして定着してしまった感がありますが、そんな事はありません!
週末(及び祝祭日)以外にも更新するようにしますよ。
間違っても、筆者の事を「週末ブロガー」とか呼ばないようにしてくださいね。

実際、今年は一週間に一本も書いてないんですよね。これではブロガーとは呼べませんものね。
ということで、もっと更新回数を増やすようにしますので応援よろしくお願いします!!

では、応援ボタンをポチッと押してから先へどうぞ。





さて、前回は・・・
そうですね。

「1.蔵書登録/編集画面から貸出が出来ない。」を実現させました。
ですが、最後にクイズ?にしたように、もう少しだけやることがあります。
このブログの読者の皆様は分かったでしょうか?

そうです。「蔵書登録/編集」画面のStatusを"貸出中"に変更したけど、
そもそもそんなフィールドは用意していないし、「蔵書登録/編集」のXPageや「蔵書一覧ビュー」XPageに表示するようにしていないのです。


では、それらを実際に設定してみましょう。
解決するべき問題点で言えば、「3.蔵書登録と蔵書貸出が連動していないので、蔵書が貸出可能状態にあるのかどうか不明。」になります。

まず、Statusフィールドです。通常、ノーツ文書に登録するフィールドは、フォーム上で定義しておく必要がありますが、これは必須ではありません。
前回作成したような、エージェントによるバックエンドでの更新であれば、フォームにフィールドを作成しておく必要はないのです。
ですので、今回は、フォームにはStatusフィールドは作成しない状態で進めます。

しかし、XPageにはこのフィールドを追加する必要があるので、「蔵書登録/編集」画面が定義してある「BookResource」カスタムコントロールを開きます。


「蔵書登録/編集」画面の表があるので、その中に「Status」フィールドの内容を表示させるようにしましょう。
 「購入日」と[保存]ボタンの間の行に、マウスカーソルを合わせて、右クリックします。
メニューが表示されるので、「行を下に挿入」を選択します(下図)。

すると、表に行が挿入されるので、左側のセルに「ラベル」、右側のセルに「計算結果フィールド」をそれぞれドラッグ&ドロップします。

「ラベル」のラベルは、"状況:…

Lotus夜Day2011に参加しましたよ

イメージ
「めそ凹 すね丸」さんがブログで書いていましたが、Lotus夜Day2011に参加してきました
筆者も参加してきました。

めそ凹 すね丸さんと一緒に受付していたおっさんが筆者です。
今回は、サプライズもあったり、初のプレゼンもあったりしたので、参加者の皆様は筆者の顔を覚えていただけたのではないかと思います。
本当は、もっとたくさんの方と名刺交換をさせていただきたかったのですが、
受付があらかた終わった頃には、もうそれぞれの座席で盛り上がっていたので、
引っ込み思案な筆者は、積極的に話しかけられませんでした・・・orz
次回は、もう少し積極的になるので、名刺交換を是非是非よろしくお願いします。
会の方は、なんと開始が1時間遅れの20:00からという大ハプニング。
まぁ、単純に参加メンバーが多すぎて、なかなか集まらなかったので、個々に始めていたという感じですが。

乾杯の音頭は、米国IBMのMr. ted.
なんと、R4.6のSMTPのコードを書いていたらしいです。その場では言いませんでしたが、当時、筆者はこれにはやられまくってました。
お客様先までで張って、真夜中まで復旧作業を行った記憶がよみがえりました。


ちなみに、通訳には、@munesoraさんと、@morimo_tさん。
@morimo_tさんは、雰囲気で訳す!と豪語していましたが、あの度胸はさすがです。

十分伝わったかと思います。

なんどか、米国からゲストがいらっしゃっていますが、皆さん感想は同じ。
「クレイジー、クラウディ」だそうです。
米国でも、これくらいの方々はいるような気はするのですが・・・


プレゼンは、
@hira2kさんから。
今回も目から鱗が落ちるようなノーツの使い方を教えてくださいました。
あの発想力はすごいですね。どんな頭の構造してんだろう??と思う筆者でした。

つづいて、
@dotnsfさん。
ノーツでTET●○◇を動かすって、発想もやっぱりすごい。
その発想を実現させてしまう技術力も半端ないっす。

そして、筆者です。
いやぁ、他にもいるのかなぁ?と思って、やりまーすなんて言ったら、
なんでしょう、上の二人に続くのっておかしくないか!?

しかも、筆者の予想を裏切って、若い技術者さんは来るし!
あ、来ていただいて良いんですよ、むしろその方が嬉しいし。

次回、プレゼンを行う機会がありまし…