投稿

5月, 2012の投稿を表示しています

LotusScriptソースの整形

イメージ
こんばんは。すでに0:00を回っています。夜更かしは嫌いなのに・・・
ということで、検証を行う時間がありませんでした。

なので、検証の結果は後日(何の検証かは記事になってのお楽しみということで・・・)

気になるなぁ。と言う方は、こちらのボタンをクリックして、待っていてください。



今日はホントに小ネタです。
筆者も、以前から「どうにかなんないかなぁ・・・」と思っていたのですが、「まぁ、無理だろうなぁ。UIにそんなに力入れてないし」とあきらめていました。

という、とある疑問を職場の人にされましたので、 本当にできないのかどうか調べてみようと調べてみました。

え?何の話かって?
LotusScriptのソースの整形の話です。
エージェントやスクリプトライブラリでLotusScriptを記述する際、8.5になってからはインデントが自動的に修正されなくなりました。

自分でTabを書いたとおりにインデントされてしまいます。

でも、8.0以前の従来のDomino Designerではそんな事はありませんでした。

関数も大文字小文字を適当にばらつかせて書いても、保存するときには綺麗に書き換えてくれました。

そんな優しいLotus Domino Designerはどこに行ったんでしょうね。

で、まとめると、質問は「LotusScriptを書いたけど、インデントがばらばらでとても見づらい。以前のバージョンは自動的に整形してくれたよね。今のバージョン(8.5.x)ではそうならないの?」
というものでした。

筆者も、ソースは後で見返したときに少しでも分かりやすいようにインデントには気をつけています。
それでも、ずれたままになってしまう事がありました。そのたびに手動で修正しており、「面倒だなぁ」と思っていたのです。

それで、もう一度、本当にできないのかどうかを検証してみました。

すると、LotusScriptを記述しているときにだけ、「ソース」というメニューがある事に気がつきました。
そのメニューを開いてみると、「インデントの修正」という項目がありました。
実行してみると、インデントを修正してくれるではないですか!

ということで、ずらずら書いてしまったソースのインデントを修正するには、LotusScriptのコードの全行を選択します(Ctrl + Aで出来ますね)。
次に、「ソース」「インデ…

!@IsMemberと@IsNotMemberの違い

イメージ
今日(もう昨日か・・・)は、自宅でレンタルDVDを観ていたのでお休みしようかと思いましたが、ちょっと気になった事があったので、調べた結果を書きます。

ということで、XPagesネタではなく、@関数ネタです。
でも、XPagesでも@関数はあるので、きっとお役に立つ・・・はず?


では、本題に入る前に、ボタンをクリックしましょう。おかげさまで順調に順位が上がっています。世の中にLotus Notes/Dominoがどんどん広まっていきますよ(え?もう、十分に広まってる?まぁまぁまぁ)




さて、本題。
非表示式によく使う?のが、@IsMember関数ですね。ロールを持っているかどうか判断するのに使います。
このとき、@IsNotMemberではなく、!@IsMember関数を使う事があります。
ん?これって同じ事なのかな?違う事なのかな?
と悩んだ事はないですか。

筆者は、今日に限ってなぜか、「ん?どっちだっけ?」と悩んでしまったのです。
ということで、調べてみました。

どちらの関数も引数は同じ。
@IsMember("検索文字列";"検索文字列リスト")/@IsNotMember("検索文字列";"検索文字列リスト")
もしくは、
@IsMember ("検索文字列リスト1";"検索文字列リスト2")/@IsNotMember ("検索文字列リスト1";"検索文字列リスト2")
です。

前者の場合は、!@IsMemberも@IsNotMemberも結果は変わりませんでした。
しかし、後者のような、文字列リスト同士の比較検索では、結果が異なりました。

フィールド名(textList1)検索文字列リスト1a;b;cフィールド名(textList2)検索文字列リスト2a;e;f
上表のような場合、
tmp := !@IsMember(textList1;textList2); ret := @If(tmp=@True;"含まれません。";"含まれます。"); @Prompt([OK];"!@IsMemberの結果";ret) としたら、
と表示されました。

セッションスコープ変数はどこで使われているのか?

イメージ
こんばんは。寒いです。5月も後半だってのに。筆者は寒暖の差にとても弱いので、こういう気候は勘弁してほしいです。

今日(2012年5月22日)のアクセス数は約450!びっくりです。ランキングも着々と上がってきています。ということで、この記事を読んだら、ボタンをクリックしてくださいね!


さて、今日もXPagesDayの復習です。どんだけやるんだ?そんなにきちんと話していなかったのか?と疑われそうですが、もう気にしないで、続けます。

ということで、今日はセッションスコープ変数にフォーカスを当ててみます。

と言っても、使い方はXPagesDayのセッションで説明したので、ここでは省略します(知りたい方は、セッション資料をダウンロードしてやってください)。


「用語集 for XPages」では、色々なところでセッションスコープ変数を使っています。

第一弾の自動リンクを作ってみようでは、linkDocIdというセッションスコープ変数の中に、文書UNIDを設定しました。
第二弾のカテゴリ名によるフィルタリングを設定するには? では、viewCategoriesというセッションスコープ変数の中に五十音順ビューの第一列の値を設定していました(カテゴリ名によるフィルタリングで利用するため)。


実はこのアプリケーションでは、11個のセッションスコープ変数を利用しています。
ここまで来ると、どんな名前の変数をどのように使っているのか分からなくなってしまいます(まぁ、そんな事はないんですが・・・)。
そこで、ちょっと趣向を凝らして?、セッションスコープ変数を管理するようにしました。
「ccSessionScope」というカスタムコントロールを作成して、その中にアプリケーションで利用しているセッションスコープ変数の値を常に表示させているのです。

上図はccSessionScopeカスタムコントロールの設計画面です。
計算結果フィールドがずらりと並んでいます。
それぞれの値は、
"セッションスコープ変数名: " + sessionScope.hogehoge
としてあります。
例えば、 viewCategoriesというセッションスコープ変数名の場合、
"viewCategories: " + sessionScope.viewCategories
と…

カテゴリ名によるフィルタリングを設定するには?

イメージ
こんばんは。XPagesDay復習の第2弾です。復習は、お勉強した後、一週間以内にやらないとほとんど効果がないらしいです。
ということで、週末まで持ち越すわけにはいきませんから、とっととやってしまいましょう。

昨日の記事では、多くの方がこのボタンをクリックしてくださいました。ありがとうございます。
でも!まだ、まだ少ないんです!もっと筆者に愛の手を!いや!愛のクリックを!




さて、今日はビューコントロールの「カテゴリ名によるフィルタリング」です。
セッションの中では、「従来のノーツアプリケーションで言えば、埋め込みビューの単一カテゴリのようなものですよ」と言ったら、皆さん、「あぁ、なるほどね」と頷いていらっしゃいましたので、説明するほどのものではないかもしれませんが、これから始める方もいるかもしれないので、記録として残しておきます。

まず、「用語集 for XPages」のどこでカテゴリ名によるフィルタリングが利用されているのかを確認しましょう。

図の中で、赤く囲んだ部分が、この機能を利用しているところです。
「ア行」と書かれているところをクリックすると、ア~オで始まる用語だけを表示します。
同様に「カ行」なら、カ~コで始まる用語を表示します。

では、このビューはどんな設計になっているのかを確認しましょう。
「五十音順」というビューが対応しています。

ビューの選択式です。Formが"GlossaryF"という文書だけを表示するようになっています。
このアプリケーションのフォームは"GlossaryF"だけなので、実質、全文書を表示するような形です。

次は、1列目の式です。
画面では表示していませんが、ここは「カテゴリ別」の列として設定しています。
そして、式の値ですが、「ア」~「ワ」で表示されるように集約する式を書いています。
"Capital"というフィールドの1文字目を取得して、ア~オなら"ア"、カ~コなら"カ"という用にしているのです。

これで、1列目は、A、1、ア、カ・・・ワのいずれかが表示されるようになりました。


今度は、ビューコントロールの設定を確認します。「ccbyAlphabeticView」というカスタムコントロールが「五十音順」ビューの内容を表示…

自動リンクを作ってみよう

イメージ
昨日、今日と、晴れて良い天気ですね。久しぶりに穏やかな週末を過ごしています。

5月18日に行われたXPagesDay&テクてくロータス技術者夜会。
XPages漬けな1日!いかがでしたでしょうか?筆者は、セッションを担当していたため、他の方のセッションを聞く事が出来ませんでした。楽しみにしてたのにぃ~。ちなみに、筆者はあのような場で話をするのは、初めての経験でしたので、かなり緊張しました。
せっかく資料も作ったのに、なんか全部無視していたような・・・
資料は、まだダウンロードできるようですので(5/20 11:00現在)、ご来場できなかった方で興味のある方はダウンロードしてみてください。
URLは、こちら(ダウンロード


本当は、実際のコード部分を見せて、「こうやって組むんですよ」という実例を見せたかったのですが、プレゼン力が低かったので、そこまで出来ませんでした。

ということで、しばらくは、XPagesDayの復習ということで、ブログの記事を構成していきます。


本題に入る前に、恒例のボタンクリックをお願いします。いや、ホント押してください。それだけで筆者のテンションあがって、色んな事書いちゃいますよ。だから、ねっ!




ここまで念押しすればクリックしてくれた事でしょう・・・

では、本題です。
まずは、「用語集 for XPages」の設計要素の構成についてです。


カスタムコントロールはたくさんありますが、XPageは"home"の1つだけです。
ですので、画面遷移は発生しないのです。

カスタムコントロールの中に「ccContents」という設計要素があります。
これはFormの内容をXPagesの画面に表示するための設計要素です。
設計の中身はこんな感じです。

さらに、この中に「関連用語2」「関連用語3」と書かれたセルがあります。
※「関連用語2」の上の行も関連用語の行です。1つしかなかった場合と複数あった場合で ラベルの内容を変更しているので、ラベルの値は式で記述してあります。

これらの右隣のセルに「RelatedTerm1」「RelatedTerm2」「RelatedTerm3」という編集ボックスと「linkRelatedTerm1」「linkRelatedTerm2」「linkRelatedTerm3」というリンクがあります。
これらのコント…