ページビューの合計

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

2018年8月30日木曜日

【告知】 9月からはノーツ関連イベントが続々!!

For this time, I have compiled Notes-related events that are scheduled to be held soon. Not only listening, but also many participatory events are scheduled so please expect !!

みなさま、こんにちは!!
早いもので8月も今日を含め、あと2日を残すのみになりました。
お子様にとっては一番憂鬱な時期になるのでしょうか。
とは言っても、運動会(体育祭)や音楽会(文化祭)と子供たちにとってもイベントが続くシーズン到来ですね。

さてイベントといえば、ノーツ界隈もかなり賑わいを見せております。
私もいくつか参加を予定しているのですが、あまりに多くあるようですので、一度整理しておこうかと記事に致しました。

2018/09/04(火)・05(水) XPagesワークショップ 2018 名古屋会場
2018/09/06(木)or07(金) IBM Notes/Domino とIBM Watson, IoT 連携ハンズオン
2018/09/06(木) Notes/Domino Solution 2018(東京)
2018/09/07(金) Notes/Domino Solution 2018(大阪)
2018/09/13(木) 九州地区研究会 第3回 & 新任担当者向けワークショップ
2018/09/20(木) チームも成果も変わる!「グループウェア活用術」 × 「取り組み方」セミナー
2018/09/21(金) Domino ログを利用した Notes メール利用状況の見える化セミナー
2018/09/21(金) ノーツコンソーシアム主催 IBM Notes/Domino V10 Beta 2 体験会(大阪)
2018/09/21(金) 2018年 大阪地区研究会 第3回
2018/09/21(金) テクてくLotus技術者夜会
2018/09/26(水) ノーツコンソーシアム主催 IBM Notes/Domino V10 Beta 2 体験会(東京)
2018/09/28(金) ノーツコンソーシアム主催 IBM Notes/Domino V10 Beta 2 体験会(名古屋)
2018/10/10(水) The World Premiere of Domino V10
2018/10/23(火) 新任担当者向けワークショップ 東京秋開催(10月23・24日)

いや~、たくさんありますね。
見ていただければわかると思いますが、特にハンズオン等、参加者が手を動かせる機会が目立つことがわかると思います。このあたりもノーツの活性化の現われではないかと喜んでおります。

実はこれ以外にも公開されていないイベントもまだまだたくさんあるのですが、本日時点では控えさせて頂きます。
特に大阪での新任担当者向けワークショップ開催については、なんとか実現すべく、関係者一同準備を進めておりますので、ご期待ください!!

ちなみに私は、現時点で以下の参加がほぼ決定しています。

2018/09/07(金) Notes/Domino Solution 2018(大阪)
2018/09/21(金) Domino ログを利用した Notes メール利用状況の見える化セミナー
2018/09/21(金) ノーツコンソーシアム主催 IBM Notes/Domino V10 Beta 2 体験会(大阪)
2018/09/21(金) 2018年 大阪地区研究会 第3回
2018/09/21(金) テクてくLotus技術者夜会(大阪PV)
2018/10/10(水) The World Premiere of Domino V10

以下に参加したいのですが、どうしてもスケジュールが・・・(泣
2018/09/06(木)or07(金) IBM Notes/Domino とIBM Watson, IoT 連携ハンズオン

ぜひ皆様とお会いできることを楽しみにしております。

さて最後にもうひとつ告知です。
既にご存知の方も多いかと思いますが、IBM様では自然災害の防止や自然災害への対応、回復に関する問題を解決しようという「Call for Code Global Initiative」を発表しております。
詳しくはサイトを見て頂くとして、実際に先週の台風で未だ被害の全容がつかめていない弊社としても非常に気になる内容であり、今後の活動におおいに期待しております。

2018年8月20日月曜日

#Notes 文書からファイルサーバーの特定ファイルを開く

This time I will get the value of the field in the NotesForm and set up to open the PDF file stored in the file server that matches that value.

みなさま、こんにちは!!
さて最近は別の作業でなかなかブログを書くことができず、申し訳ありません。
当ブログも2016年7月の開設から2年が経過しました。
振り返ると、今回の記事がちょうど100本目になります。
・・・まだまだですね(汗

今回は以前から実現したいと思いつつ、実際の切り替えが年度末である必要があり、のんびりしていたのですが、気付くと今年も半分過ぎようとしており、あわてて手がけた内容になります。

まず最終目的としては、Notesの文書内にあるフィールド(今回は「受注NO」というフィールド)の値を取得して、ファイルサーバーにある"受注NO".pdfを開きたいというものになります。
現在運用しているアプリケーションでは、リッチテキストフィールドに"受注NO".pdfを添付ファイルとして扱っています。
画面としては、下記のようなものになります。


ふたつ添付ファイルがありますが、今回は右側の「受領書」欄のみを対象とします。

もちろんこの状態でも問題ないのですが、Notesのアプリケーションサイズを抑えたいのもひとつなのですが、いちいち添付ファイルを貼り付ける手間を省きたいという点が一番の目的になります。

なお少し余談になりますが、スキャンした伝票の名前を"受注NO".pdfに変更する過程については、伝票のバーコードを複合機でスキャンする際に処理させており、自動で所定のフォルダ内に保存するという処理で完結しております。

まずは受領書欄にボタンを追加し、ファイル名を指定してpdfを開くことができるか、ためしてみます。


ボタンには直接ファイルパスを指定して以下の式を設定しました(テストデータとして、受注NO、"49396550"というものを指定しています)。
※半角¥マークはバックスラッシュに変換されますので、意図的に全角で記載しております。
※弊社ではファイルサーバーをクライアントのXドライブにマッピングしておりますので、このような式になりますが、直接サーバーを指定する場合は、"¥¥¥サーバー名¥¥ファイルパス"で指定してください。
※"¥"は""でエスケープする必要がありますので、ご注意ください。
・・・恥ずかしながら、今回も私はつまづいておりました(大汗



@Command([Execute];"X:¥¥globalscan¥¥test¥¥49396550.pdf")



それではNotesクライアントからPDFが起動できるか、確認してみましょう。


!!

しばらく確認して気付きました。
デザイナーをインストールしている端末を作り直したため、AdobeReaderがインストールされてませんでした(汗

ということで、インストールして無事指定したPDFが開くことを確認しております。

このままではすべての文書から同じPDFを読み込んでしまいますので、フォーム内の"受注NO"を取得して、それぞれ特定のPDFファイルを開くことができるように変更します。

それでは先ほど設定したボタンの式を、以下に書き換えます。


NO:=juno;
@Command([Execute];"X:¥¥globalscan¥¥test¥¥"+NO+".pdf)"


フォームの受注NOフィールドである"juno"を変数"NO"に取得して、呼び出すファイルパスに組み込んだだけのものになります。


それではテストとして、先ほどの文書をコピーして、受注NOを49396550からダミーである"12345678"に変更してみます。


あわせてファイルサーバー側にもダミーのPDFを準備して、ファイル名を"12345678.pdf"にしておきます。


それではボタンを押して、正しく指定したPDFファイルが開くか確認します。


少しわかりにくいかと思いますが、AdobeReaderが起動し、"12345678.pdf"が開いたことが確認できました。


@関数のみで解決する、実に簡単な改善ではありますが、実務担当者の負担は大きく下がることになるようです。

引き続き、ユーザー視点での思いつきや閃きがあれば、記事にさせて頂きます。

2018年7月30日月曜日

#Notes #Form を個人ごとに切り替えたい

This time I try to change the Form to be displayed for each user by using Subform and notes.ini.

みなさま、こんにちは!!
神戸は日曜早朝に逆走台風が真上を通過して行きました。
幸いにも治水対策がそれなりに施されているため、先日以上に大きな影響はありませんでしたが、被害を受けられた皆様の1日も早く日常生活に戻ることができますようお祈り申し上げます。

さて今回はWEBではよくある画面表示を個人ごとに切り替えるという機能をNotesのFormでできるか試してみましたので、報告致します。
あらかじめお断りなのですが、もっと簡単に組み込むことができるような気がするのですが、まずは私なりのやり方としてご承知ください。

そもそもWEBではCSSを利用することでテーマカラーの変更は簡単に行うことが可能です。
残念ながらNotes Formにはそのような機能が実装されておりません。
・・・もちろんXPagesなら適用できるのですが・・・

ということで、今回はサブフォームと環境設定文書の組み合わせで挑戦しようと思います。

それでは早速、サブフォームAを作成します。
今回は以下のような表を作成してみました。


続いてサブフォームBです。
わかりやすいように、表のセルの色を変更してあります。


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

フォームにサブフォームを埋め込むのですが、その際に「式の定義によりサブフォームを挿入」にチェックし、[OK]します。


※このオプションを選択すると、サブフォームそのものは選べなくなります。

以下のように、<サブフォームの計算結果>がフォームに貼り付きました。


それではサブフォームを表示させる式を記述します。
今回はnotes.iniにフォームの設定を行いますが、初期時にはnotes.iniにパラメーターがありませんので、その場合はサブフォームAを呼び出すように設定します。

以下の式を設定してみました。

SUBF:=@Environment("TEST_SUB");  
@If(SUBF="";"subA";SUBF)                

notes.iniに「TEST_SUB」という環境変数がない場合は、サブフォームAを。それ以外は環境変数の値で設定されたサブフォームを呼び出すというものです。


続いてビューに環境変数を切り替えるアクションボタンを作ります。
今回はアクションボタンとして「テーマカラー変更」とし、サブアクションとして「青」「赤」を選べるように設定します。


式ですが、"青"・・・サブフォームBを設定

@SetEnvironment("TEST_SUB"; "subB")  

"赤"・・・サブフォームAを設定

@SetEnvironment("TEST_SUB"; "subA")  


まずはnotes.iniに正しく書かれるか、試してみます。

初期時はもちろんnotes.iniには [TEST_SUB]は存在していません。

まずはその状態で新規作成を開いてみます。
最初に設定したように、notes.iniに[TEST_SUB]が存在しない場合は、サブフォームAを表示させておりますので、以下のようにサブフォームAが表示されました。


それではビューに戻り、「青」(サブフォームB)をクリックしてみます。
まずはnotes.iniを確認してみますと、最下行に以下設定が登録されておりました。


正しく"subB"が設定されたことが確認できました。

この状態でフォームを新規作成で開くと、以下の画面が表示されました。


正しくサブフォームBが呼び出されました。

念のためビューに戻り、「赤」(サブフォームA)に戻し、notes.iniを確認してみます。


notes.iniは正しく"subA"に変更されました。

フォームを開くと、当然サブフォームAが呼び出されます。


以上、甚だ簡単ではありますが、例えばこの機能を用いることで、多言語対応のアプリケーションに発展させることができます。

例)
 サブフォームA・・・英語
 サブフォームB・・・日本語
 サブフォームC・・・フランス語
  ・・・

初期ビューに[Language]というアクションボタンを配置し、サブアクションで各言語を並べることで、利用者のnotes.iniに言語設定が行われることになります。
次回以降、利用者は常に自分の言語でフォームが利用できるというものです。

これだけの機能が@関数だけで実現できるというNotesの素晴らしさ。
今後、Domino10や11でNotesフォームやビューがCSS対応されることに期待です!!

2018年7月17日火曜日

#XPages のソースについて

This time, I describe a little about XPages source.

みなさま、こんにちは!!
まずは先般の西日本豪雨で被災されました皆様に、心よりお見舞い申し上げます。
神戸もかなりの雨量で、未だ市内でも道路が封鎖されている場所が残っております。
氾濫すらしませんでしたが、自宅前の川が1週間を経過したにもかかわらず、普段の3倍ほどの水量が続いており、油断できない状況です。

さてそんな中ではありますが、以前より少し気になっていたXPagesのソースについて、自分の学習用に調べてみたいことがありましたので、せっかくならと記事にさせて頂きます。
ぜひ今さらと言わず、お付き合い頂けましたら幸いです。

さて過去にいくつか記事にしましたが、XPagesはGUIにてコントロールを配置し、プロパティを設定して組み上げていくことで、できるだけ簡単にプログラミングされたWEBページを生成することが目的であるNotesの設計要素であることは周知かと思います。


[設計]タブから[ソース]タブに切り替えてみますと、空白のページであっても、以下のようなソースが記述されたXMLであることがわかります。


まずはデータソースをバインドした場合の変化を見てみます。


今回は同じアプリケーション内の"planning"というDomino文書をバインドしてみました。
このように<xp:this.data>のタグ内にデータソースの定義が組み込まれることを宣言し、<xp:dominoDocument>タグでDomino文書である"planning"フォームを呼び出しています。
参考までにビューをバインドした場合、

<xp:dominoView var="view1" viewName="test"></xp:dominoView>

となります。

なおこのとき、アウトラインには以下のように表示されます。


先の文書をバインドした状態で、[編集ボックス]を追加してみましょう。
すると以下の1行追加されたことがわかります。

<xp:inputText id="inputText1"></xp:inputText>


続いて、"date"というフィールドをバインドしてみます。
以下のようにinputTextにvalueが追加されることがわかります。

次にボタンを追加してみますと、以下の一行が追加されました。

<xp:button value="ラベル" id="button1"></xp:button>


それではそのボタンに「文書の保存」を設定してみます。
以下のように"onclick"のイベントが追加され、"action"として<xp:saveDocument>が追加されました。


ここまでで[設計]画面は以下のようになっています。


それではボタン部分のソース(以下の部分)をコピーして、ソースの続きに貼り付けてみます。


すると、以下のようにボタンが追加されることが確認できます。


なおソースを確認すると、以下のように自動で"id"がユニークな番号に変化していることがわかります。


このようにコントロールを複製するような場合、もちろん[設計]画面で対象コントロールをコピーすることも可能ですが、ソース側でも同じことが可能であることがわかるかと思います。


次にカスタムコントロールを見てみます。
まずは初期作成時のソースです。


このようにカスタムコントロールのソースもXPagesのソースとまったく同一になります。

それでは編集ボックスとボタンを追加したソースもみてみましょう。

今回、値のバインドやボタンアクションの設定は省きましたが、XPagesと同一のソースであることがわかるはずです。

つまりXPageで作成したものをカスタムコントロール作り変えたり、その逆についてもいちいちコントロールの配置から行う必要はなく、ソースをコピーして貼り付けることで、同一内容でありながら、別の設計要素を作成することが可能になります。

最後にカスタムコントロールをXPagesに埋め込んでみますと、

<xc:xctest></xc:xctest>

この一行のみでカスタムコントロール"test"を呼び出すことができます。



以上、表面的なことばかりではありますが、ソースを知ることで、作業の簡素化ができる場合があるということはご理解いただけましたでしょうか。

XPages開発者はGUIを使用せず、ソースだけを直接編集して、ページを実現されている方もいらっしゃると聞きます。

個々のコントロールの記述や、値設定などを確認されても面白いかと思います。

2018年7月2日月曜日

#ノーツコンソーシアム ( #notescons )新任担当者向けワークショップ へ参加させて頂きました。

I studied to help you as a lecturer at the workshop for Notes new manager in Osaka.

みなさま、こんにちは!!
今回もまずは告知させてください。
明日、IBM Notes/Domino Day 2018 Summerが開催されます。
年内に発売予定のV10に関する情報を中心とした情報が得られる貴重なイベントです。

また翌7/4には、IBM Notes/Domino v10 意見交換ラウンドテーブル も予定されております。
こちらはコンソーシアム会員優先ではありますが、会員外の方でも参加可能ですので、こちらもご検討ください。

両日ともウェビナー or リモートの開催が予定されております。
私は今回東京まで行くことができませんので、両日自席から参加の予定です。
遠方の方、当日参加できない方も、ぜひリモート参加もご考慮ください!!

さて本日は先週東京で開催されましたノーツコンソーシアム新任担当者向けワークショップへ参加させて頂きましたので、簡単にレポート致します。

両日とも30名定員の募集でしたが、キャンセル待ちが出るほどの盛況ぶり。
また当日の参加率についてもほぼ全員と、まずはその人気ぶりに驚かされました。

1日目は午後から「管理者編」が実施されました。用語編+ワークショップの2本立てになります。
ワークショップでは隣り合った2台のPCをクロスケーブルで繋ぎ、それぞれにインストールされたサーバー同士での複製など、貴重な体験をすることができたようです。
終了後は、懇親会も行われ、お店を貸しきっていただくほどの参加者で盛り上がりました。

2日目は終日、開発者編の開催です。
管理者編同様、用語編+ワークショップ。加えてデザインTipsの講義もあり、実際に利用する立場の方に直接的なメリットが提供頂ける内容であったと感じました。

テキストの内容ですが、IBM様や他社様の教育プログラムほどの内容ではありませんが、両日受講することでノーツサーバーの簡単な管理、ユーザー追加や、初歩的なアプリケーションの作成までできるようになります。

流れとしては、まずはこのワークショップを受講されてから、有償の教育プログラムを受講されることで、理解度が格段に上がるのではと感じました。

ぜひノーツの管理やアプリ開発を行われる方は、次回以降のワークショップをお見逃しなく。

今回までは東京開催のみでしたが、コンソーシアムでは東京以外の開催も計画されているようですので、ぜひ遠方の方もお待ち頂ければと考えます。

なお参加者の方と少しお話ししてみたのですが、まずは初歩的なステップを理解したいという方が多いように感じました。
このことを受けて、私なりにやりたい事が出て参りましたので、少し準備してみたいと思います。

たいへん申し訳ありませんが、私のほうでは写真を撮っておりませんので、その場の雰囲気などはノーツコンソーシアムのフェイスブックページをご覧ください。


さて、そもそも私の参加目的は・・・

●弊社内ではDominoサーバーは二重化していないため、「管理者編」に興味があった。
●最新の用語集を聞きたかった
●開発手順は様々ですので、「開発者編」でどのように説明されるか聞きたかった。
●自らが講師として立てるようになる!!

です。

はじめの3点は、非常に満足できる内容で、改めて自分及び弊社でやっていることの確認が行えました。

講師としては・・・
正直なところテキストが立派に仕上がっているため、なんとかなるだろうと簡単に考えていたのですが、やはり人に教えることの難しさを実感することになってしまいました。

とはいえ、先にも少し触れました東京以外開催。特に大阪開催を実現しなければなりませんので、他の大阪研究会メンバーと強力して準備を開始致します。
開催決定次第、いろいろと案内が行われるかと思いますので、関西の皆様、もう少しお待ちください!!

皆様にお会いできる日を、心待ちに致しております。

2018年6月25日月曜日

#ノーツコンソーシアム ( #notescons) 第二回大阪研究会へ参加しました。

I will write about the "Notes Consortium Osaka Study Group" that I participated last week.
I have made a presentation on one subject about "What our management department expects from the system".

みなさま、こんにちは!!

今回は6月22日(金曜日)に開催されました、ノーツコンソーシアム 第二回大阪研究会へ参加させて頂きましたので、こちらに少し触れてみたいと思います。

大阪研究会のテーマは、昨年に続き

「Notesをどう使い続けていくのか」


Webと年4回の活動を中心とした大阪地区研究会という事で、従来からのdeveloper Worksのコミュニティーに加え、昨年はFacebookを。
また今年からはWatson Workspaceを利用しておりました。
要は年4回しかない研究会を充実させるべく、オンラインツールをフル活用するという事だったのですが、ここにきてそれぞれの役割が曖昧になりつつありました。
そこで冒頭、ファイリテータ様のご提案により、主は従来通りdeveloper Worksを利用する事とし、日々のコミュニケーションはWatson Workspaceを利用しようという事になりました。
もちろん単なる永続チャットとしてだけでなく、Watson Workspacesの機能、外部連携、アプリ開発(もちろんNotes連携)も経験しようという意図が含まれております。

さて本題なのですが、今回は2テーマの発表と1テーマのディスカッションを行いました。

1.Notesアプリ開発効率化、品質向上のための事例紹介
2.中小企業経営者がシステムに期待すること
3.クラウド化は是か非か?ディスカッション

1.については、H樣の過去の経験を踏まえての運用管理工数を下げることを目的とした開発をベースに、Notesが得意としているパーツ化そして再利用に主眼をおいた発表でした。
H様には毎回、長年にわたる経験からの発表を頂いており、ぜひNotesに関わる皆さまに聞いて頂きたい内容になります。

2.については私にお時間を頂き、弊社におけるシステム満足度調査の結果と、これを踏まえた経営者の意見そして今後の予定をお話しさせて頂きました。
そもそも中小企業特有の課題と思っていたことが、実は単なる規模に起因しているものではないと教えて頂くことができ、少し安心したのもつかの間、ハードルの高さを実感したというのが本音です。



3.ではNotesのクラウド化について全員参加のディスカッションを行いました。

前もって研究会リーダーよりdeveloper Worksにて宿題を頂いており、その回答を確認しなが意見交換を行いました。
今回は時間が少なく、主にメール中心の議論になりましたが、非常に興味深いものとなりました。
クラウドという性格上、「正解」は存在しないものの、各社にとってのメリット・デメリットについて、次回以降で深掘りできればということになりました。

次回は「2018年 日本を元気にする!Notes 2018 研究会」とのコラボレーションと近日公開されますNotes/Domino V10ベータ版の検証を行う予定です。

終了後はIBM様大阪事業所地下のフェスティバルシティにてさらなる議論で盛り上がりました。

今回は1社様、見学に来て頂くことが出来ました。
大阪研は全員参加型を目指しております。
せっかく貴重な時間を調整して参加しているのですから、質問・議論に積極的に加わり、メリットを得て帰っていただくことも目的になります。
参加のみなさんも気さくで優しい方ばかりですので、ぜひ会員企業様については、担当社員さまを参加させてみてください。何かしらメリットを持ち帰っていただけるはずです。
またまだ会員でない企業様についても、一度見学にいらしてください。
特にV10の情報がスタートする次回以降、得るものは多くなるはずです。

次回は9月21日(金曜日) 13時から大阪研究会。18時からはテクてくLotus技術者夜会の大阪PVへ突入致します。

皆様とお会いできることを楽しみにしております!!!

2018年5月21日月曜日

#テクてく ( #tektek )大阪へ参加させて頂きました。

This time was held last week for the "Tech Teku Lotus engineers evening", let me a little touched.

みなさま、こんにちは!!
本日の神戸は本当にいいお天気です。
かなり暑くなるそうですが、梅雨前の貴重なお天気を快適にすごしましょう・・・といいつつ、終日オフィスから出ることがないので、往復のすがすがしい気温を楽しむくらいしかできませんが。

さて今回もまずは告知からです。
6月11日(月曜日)に品川のグランドプリンスホテル新高輪にて【Think Japan - Developer Day】が開催されます。

いくつか参加したいセッションがあるのですが、さすがに毎月のように東京出張は許可が得られません。
それでなくても6月には【新任担当者向けワークショップ】へ参加させて頂くことになっておりますので・・・。
ぜひこちらの技術を関西へ持ち帰り、大阪開催を実現したいと思います。

さて本題です。
とは言いましても、今回は先週金曜に開催されました年1回のイベント テクてく Lotus 技術者夜会 ザ・大阪編 に参加させて頂きました感想等を報告させて頂きます。

今回は私の先頭の1コマを頂き、短時間ですがお話させて頂きました。
内容としては、ICS(IBM Collaboration Solutions)関連ブログの弊社での情報収集方法について、現状までの流れと今後の構想についてお話しさせて頂きました。

資料をスライドシェアにと思ったのですが、どうもうまくアップロードできず・・・。

2018/05/29 無事アップロードできましたので、こちらよりご参照ください。
2022/04/28 ドクセルに引っ越しました。



ほかにもたくさんの方の貴重な発表がありました。
ここで個別の発表内容を述べるのは適切ではございませんので、発表内容については後日公開されます資料をご覧ください。


中でも個人的に書き留めたキーワードだけを列挙してみます。

  • Restful Web API
  • Smart NSF
  • XRest API Routes
  • Grooby
  • Swagger
  • Zoomフリープラン
  • Activity Logging
  • Watson Workspaceへのアプリ追加
  • Dominoの歴史=平成の歴史
  • XPagesを記述する前にHTMLで準備してみる
いろいろ手を動かしたくなるようなキーワードが並びました。

言い訳にはなりますが、来年にかけて本業がピークを迎えるため、どこまで手がけられるかは不明ですが、また弊社のような中小企業のNotesユーザーでこれらを試してみた状況、特にメリット・デメリットなどを報告する機会が持てればと考えております。

ぜひ気長にお待ち頂けましたら幸いです。

ランドプリンスホテル新高輪

2018年5月7日月曜日

#XPages の #URL について

This time I will describe the setting of the URL for importing XPage into another application.

みなさま、こんにちは!
ついにGWも終ってしまいましたね。
今年はいつになく脱力感が・・・と感じていたのですが、どうやら子どもの野球三昧に加え、昨年のGWは全日出勤であったことが原因のようです。

本題に入る前に、まずは告知です。
来週・・・もう来週なんですね(汗・・・5月18日(金曜)にテクてくLotus技術者夜会が開催されます。
今回は昨年に引き続き、テクてく大阪としてIBM様大阪事業所にて開催となります。
内容については現在精査中ですので、正式発表をお待ちください。ちなみに私も少しだけ時間を頂く予定です。
ぜひ関西近隣の方は、ご参加をご検討ください。
また東京ではパブリックビューが行われますので、関東近隣の方はPVへご参加よろしくお願いします。
もちろんリモートも準備頂ける予定ですので、どうしても両拠点への参加が難しい方については、リモート参加も大歓迎です!

詳しくは近日こちらのページにて案内があるかと思いますので、少しお待ちください。


さて前置きが長くなりましたが、今回の本題です。

実は最近、Notesの作業よりも優先する作業が発生しており、当ブログのネタが続かないという状態に陥っております。

そんな中、今回の案件は、社内の販売管理システムのマスタにNotes内の情報を掲載できないかというものになります。

具体的には販売管理システムの得意先マスタ画面に、Notesの情報(今回は日報)を表示したいというものになります。

先にも触れましたが優先する作業というものがこの販売管理システムのWEB化というものになります。

販売管理システムの得意先マスタ画面をWEB化し、その画面内にタブを組み込み、そのタブ内にiFrameのようにNotesの日報データを表示させることを検討しました。
画面としては、以下のようなものとしました。


そこで必要となるのが、XPagesをブラウザで表示する場合のURLになります。

既に日報についてはXPagesで閲覧できるようにしてありますので、そのページにアクセスしてみます。

まずはブラウザでアクセスしてみます。
今回はreport_2018.nsfというアプリケーションに、Webブラウザの起動設定で「m_byDate_wForm」というXPageを開く設定を行っておりますので、設定されたXPageが「http://hogehoge/report_2018.nsf/」というアドレスで表示されます。


こちらを先のタブ内に埋め込んだところ、タブ内には以下のようなNotesの認証画面が表示されました。もちろんanonymousに権限を与えていないため、正しい挙動になります。


それではこの画面でログインしてみましょう。


レイアウトはともかく、XPageを読み込むことができました。

XPagesのURLで利用できるパラメータについては、以下に詳しく掲載されていますので、参考になさってください。

XPages データソース解説 - URL パラメータ

こちらによりますと、XPageを呼び出すパラメーターは

http://サーバー名/NSFファイル名.nsf/XPage名.xsp

となります。

少し今回の内容からそれますが、文書は・・・
こちらも先のページに紹介されておりますが、

http://サーバー名/NSFファイル名.nsf/XPage名.xsp?documentId=文書ID&action=openDocument

となります。
ブラウザで開いてみますと、


先ほどはビューを含んでおりましたので、フォームをバインドしたXPageを呼び出し、パラメーターとして文書IDを指定してあります。

今回の目的はタブ内にビューを埋め込むことですので、先のタブを指定したビューに変更してみます。

少しわかりにくいのですが、先のタブ内にありました右側のフォーム部分がないビューのみをバインドしたXPageが埋め込まれました。


これで目的達成・・・ではありません。
せっかくWEB側でコードが表示されていますので、できればそのコードに紐付いた日報のみが表示されることで、さらに利便性が上がるのです。

先のパラメーターの紹介サイトを読み進めていくと、【search】というパラメーターがあるではないですか!!
こちらを利用することで、特定顧客のみの日報を抽出できるはず。

ということで早速URLをたたいてみます。
今回の得意先コードが0113-001というコードになりますので、.xspの後ろに「?search=0113-001」を追加してみます。

結果は・・・


想定通りです。
うまく指定されたコードの日報だけを取得することができました。

あとはこの設定を先のタブに施すだけになります。
結果は・・・


みごとにタブ内にXPageのビューを表示することができました。
ちなみにリンクをクリックすると、同じくタブ内にフォームをバインドしたXPageを表示することができました。



今回のやり方が正しいのかは現時点では不明ですので、さらに踏み込んだ検討は行ってみたいと考えております。

今回の目的は、XPageのURLとバラメーター(search)を紹介するまでとさせて頂きます。

また今回のWEB化ツールと合わせて、うまく纏めることができれば、ノーツコンソーシアム大阪研究会で紹介させて頂ければと考えております。

ちなみにXPage側で設定している並び順や、階層のレベルなどもバラメーター側で設定することができるようです。

時間ができれば、どちらが優先されるかなどをレポートできればと考えております。


2018年4月23日月曜日

#ノーツコンソーシアム ( #notescons )2018年第一回大阪研究会 x #テクてく ( #tektek )Lotus技術者夜会 レポ

Today I attended the collaboration of "Notes Consortium Osaka Study Group" and "Tech Lotus Technician Yacht Club" which was held last Friday, so I will report on it.

みなさま、こんにちは!!
急な暑さで、服装が難しくなってきましたね。梅雨までの良い季節を楽しみましょう。

さて今回は先週20日(金曜)に開催されました「2018年第一回大阪研究会」と「テクてくLotus技術者夜会」のコラボレーション開催について、レポート致します。


13:00 予定通り研究会が開始されました。

今回の目的は今年の年間計画を立てること。

細かなことは書けませんが、具体的には以下のような活動が予定されました。


  • Notesの部品化/ライブラリ化
  • Domino環境について(クラウド関連)
  • クラウド移行・成功失敗体験談
  • ユーザー企業による情報システムへの期待について
  • Application Insights紹介
  • ハンズオン:Notes/Domino○○○○○?を触ってみよう
  • Notes/Domino最新情報
  • AS400とNotesの連係事例
  • ライトニングトーク大会

ハンズオンについては、環境をどのように準備するか等もありますが、なんとか実施できるよう研究会員一同、努力する予定です。ちなみに○○○○○の部分については、ご想像にお任せ致します。
その他の内容につきましても、Notes/Dominoに関わるみなさまには有効なものになること必至です!

会員でない皆さまも、ぜひ聞いてみたい、見てみたいとお考えでしたら、見学にいらしてください。
お申し込みはノーツコンソーシアム事務局経由にてお願いいたします。
(リンクサイト上部の「お申し込み・ご質問」より「研究会見学希望」とご連絡ください。)


17:00 IBM様大阪事業所見学

大阪事業所はつい最近オープンしました中之島フェスティバルタワーウエストの主に12,13Fの2フロアとなります。

※以下、iFrame非対応のブラウザの方で、中之島フェスティバルタワーの詳細をご覧になりたい場合は、以下をクリックしてください。

https://www.festival-city.jp/


受付やお客様向け施設は13Fにありますが、今回は12Fのオフィスフロアを見学させて頂きました。

エレベーターホールを囲むぐるっと一周の広大なスペースは、一般的なオフィスデスクだけでなく、ある種奇抜なイスやテーブルがゆったりしたスペースに配置されております。

写真は一部可だったのですが、ここに掲載は行いません。
ぜひご自身の目で見て頂きたいと考えますので、IBM様、パートナー様へご相談ください。


18:00 テクてくLotus技術者夜会

今回は研究会と同じ会場にて、大阪パブリックビュー開催され、先日のThink2018の振り返りが行われました。

やはり気になるのは、Domino on iPadでしょうか。
個人的にはDockerへの展開や、Connections Pinkにも興味があり、いずれも期待が持てる内容となっておりました。

なお今回よりリモート環境が変更となりました。
従来はConnections Meetingを使用しておりましたが、今回よりWatson WorkspaceのZoom連携機能が利用されました。
接続が簡単で、使いやすいものでした。東京や大阪PVに参加できない場合でも、会社やご自宅から参加することが可能ですので、ぜひこちらもご検討ください。


20:00すぎ 懇親会

近くのお店でお肉とアルコールを堪能させて頂きました。


さて、今後の予定ですが、


  • 5月18日(金) テクてく大阪
  • 6月22日(金) 第二回大阪研究会
  • 9月21日(金) 第三回大阪研究会
  • 11月16日(金) 第四回大阪研究会
となります。
なお第三回、第四回については、いずれもテクてく大阪PVとの連結開催となります。

またテクてく 大阪パブリックビューについては、昨年に続き毎月開催が決まりました。
詳細については、決定次第テクてくのサイトにてご案内させて頂きます。
テクてくについてはどなたでも参加可能なオープンコミュニティですので、ぜひご参加の調整をお願い致します。



2018年4月16日月曜日

#@Eval 関数を試してみた。

This time, I am going to describe what I tested the @Eval function in doing the renovation of Notes application inside of us.

みなさま、こんにちは!

まずはご案内です。
いよいよ今年も始まります! ノーツコンソーシアム 大阪研究会!!
もちろん会員外の方の見学も大歓迎ですので、遠慮なくお申し込みください。
さらに!!
今回はそのまま休憩を挟み、テクてくLotus技術者夜会 大阪PVに突入します!

ぜひ真新しい IBM様 大阪事業所で皆様とお会いできることを楽しみにしております。

なお入館に際して、予め登録が必要となります。
まだ参加が確定していない方も、まずは登録だけでも先に行っておいてください。


さて今回は弊社内でとあるアプリケーションの改築を行うのに際し、吉田様のブログ「@Eval の小ネタ」を思い出し、テストしてみた内容を記載させて頂きます。

今回改築しているアプリは、いわゆる出納帳のようなものになります。
売上金額と入金金額を入力し、残高を計算するというものです。
従来は残高に[前回残高+売上金額-入金金額]という計算式をちまちまと入れていたのですが、こちらを@Eval関数で代用しようというものになります。

それでは以下のような表を含むフォームを元に進めて参ります。


項目としては、日付(日付のみ)と売上金額(数値)、入金金額(数値)、残高(数値)、メモ(テキスト)があり、すべて[編集可能]フィールドという簡単なものです。
最初の残高を登録できるように[Balance_0]という差引残高フィールドを作成しており、デフォルト値に"0"をセットしてあります。
先にも書きましたが、従来のアプリケーションでは、各[Balance_#]フィールドに計算式が入っておりました。

それではフォームの上部に[Formula]というテキスト/編集可能フィールドを作成し、デフォルト値として、まずは以下を設定します。

※¥は全角文字にて記載しております。正しくは半角文字に変更してください。

"
SA:=@GetField( ¥"SalesAmount_¥" + no );
DA:=@GetField(¥"DepositAmount_¥"+no);

SAD:=@if(SA=¥"¥";0;SA);
DAD:=@If(DA=¥"¥";0;DA);

@SetField( ¥"Balance_¥" + no ; SAD-DAD);
@Command([ViewRefreshFields]);
"


こちらは前残を考慮せず、その行の売上金額と入金金額の差を計算させるだけの式となります。
変数"SA"に[SalesAmount_#]を、変数"DA"に[DepositAmount_#]をそれぞれセットします。但しそれぞれ値がブランクである場合に"0"をセットするため、@if関数を用いてそれぞれ変数"SAD"、"DAD"を定義してあります。

なお吉田様のブログにも記載されていますが、式全体が引用符"で囲まれているため、式中の引用符"は半角¥を用いて、エスケープしています。

次に分かりやすいように右端に列を追加し、1行目にボタンを設置します。
式は以下を設定します。


no:="1";
@Eval(Formula)



それではNotesでプリビューし、正しく計算されるか確認してみましょう。
正しく設定されていれば、以下のように計算が行われます。


ここまででまずは@Eval関数が正しく動くかの確認ができたかと思います。
それでは引き続き、前回差引残高を考慮した結果が得られるように変更します。

各フィールドの行の値はボタンに設定された変数"no"が使用されます。
つまり前回差引残高フィールドは、[Balance_変数no-1]を得る必要があります。

それでは[Formula]フィールドの式を変更します。
※青字部分が追加・変更部分になります。

"
BA:=@GetField(¥"Balance_¥"+(no-1));
SA:=@GetField( ¥"SalesAmount_¥" + no );
DA:=@GetField(¥"DepositAmount_¥"+no);

SAD:=@if(SA=¥"¥";0;SA);
DAD:=@If(DA=¥"¥";0;DA);

@SetField( ¥"Balance_¥" + no ; BA+SAD-DAD);
@Command([ViewRefreshFields]);
"


変数"BA"に[Balance_no-1]の値をセットし、計算式に加えたものになります。
こちらをNotesでプリビューすると、ボタンを押しても計算が行われません!!

やはり簡単には変数からマイナス1することはできませんでした。

ということで、変数"BA"の代入式を以下のように変更してみました。


BA:=@GetField(¥"Balance_¥"+@Text(@TextToNumber(no)-1));


見ての通り、変数"no"を@TextToNumberで数値化してからマイナス1し、その値を@Textでテキスト化してBalance_に結合させています。

Notesでプリビューすると、前回残高も正しく計算されることが確認できます。


後から気付いたのですが、ボタンの変数"no"で制御するのではなく、[Balance_#]フィールドの値側で操作したほうが簡単でした(汗

以上で1行目のボタンは正しく動くことが確認できましたので、残りの行にもボタンを追加します。

追加したボタンは、それぞれ変数"no"を行の値(2行目は"2"・・・)に変更します。
念のためNotesでプリビューし、正しく計算されるか確認してください。

最後に[Formula]フィールドを非表示にして今回は完成とします。
なお入力途中の行に修正を加えるような使い方をすると、当たり前ですが値がずれてしまいますので、ご了承ください。


2018年4月2日月曜日

#支払管理 アプリを作ってみよう(4)

Since almost the main frame has been completed up to the last time, this time I will set items that are required as a little more Notes application.

みなさま、こんにちは。
先週は私用で月曜に休みを頂き、そのツケといいますが、年度末作業に振り回され、更新することができませんでした。申し訳ございません。

少しあきましたが、前回まででおおまかに仕上がりましたので、今回はもう少しアプリケーションとして必要な項目の設定を加えます。

まずメーカーマスタフォーム[makerForm]です。
現在は必須項目の設定を行っておりませんが、基本的に全項目が必須項目になります。
必須フィールドの「入力の確認」に以下の式を設定します。
※[FieldName][フィールド名]については、各対象フィールドの名称を割り当ててください。


@If([FieldName]="";@Failure("[[フィールド名]]の指定は必須です。");@Success)


以下は[m_MakerCode]の例です。


対象の[FieldName][フィールド名]は以下の通りとなります。

[m_MakerName][メーカー名]
[m_Kana][カナ]
[m_Bank][銀行]
[m_BankCode][銀行コード]
[m_Branch][支店]
[m_BranchCode][支店コード]
[m_Account][口座区分]
[m_AccountNo][口座番号]
[m_AccountName][口座名義]
[m_Payment][支払条件]
[m_PaymentAmount1][支払条件金額1]
[m_PaymentAmount2][支払条件金額2]
[m_PaymentTerm1][支払条件1]
[m_PaymentTerm2][支払条件2]
[m_PaymentTerm3][支払条件3]

同じく支払フォーム[paymentForm]です。
[MakerCode][コード]
[Purchase][仕入金額]
[Tax][消費税]
[PaymentDay][支払日]


以上で必須フィールドの設定が完了しましたが、ここで現時点の私の能力でクリアできていない機能があります。

銀行コード、支店コード、口座番号は桁数指定を行いたいのですが、指定桁数未満の場合、前に"0"を埋めるという技量がございません。
・・・申し訳あまりせん・・・


続いて振込データをcsv出力する機能を[エクスポート]ビューに追加します。

なおエクスポートするデータは、支払日ごとに作成することを想定しておりますので、ビュー列に少し修正を行います。

[エクスポート]ビューの先頭に列を追加し、「支払日」を降順と設定します。
また列は非表示にしておきます。

続いてビューに"アクションの作成"を行い、「エクスポート」という名称で追加します。

式は以下を設定してあります。
※サーバー機で検証しておりますので、必要に応じてパスを変更してください。


@Command([FileExport];"Comma Separated Value";"C:¥¥Users¥¥Public¥¥Desktop¥¥pay.csv")

※以前に私のミスで書きましたが、"¥"の前の"¥"はエスケープ文字になります。
※ブログの仕様により、半角"¥"はバックスラッシュで表示されてしまいますので、上記意図的に全角"¥"で記述させて頂いております。


それではエクスポートの手順を見ていきますので、エクスポートビューをプリビューします。
現在は下記のようになっておりますが、便宜上ふたつの文書を複数コピーして追加してあります。


今回は2018/03/31の日付の分のみエクスポートします。
こちらも現時点の私の能力では選択をプログラム化できませんので、マウスドラッグで選択します。


エクスポートしたいデータが選択されましたら、アクションボタン[エクスポート]をクリックします。

[CSV書き出し]ダイアログが開きますので、

書き出しの対象・・・「選択文書」
書き出しの詳細・・・「ビュータイトルを含む」にチェック

のように選び、[OK]をクリックします。


以上でデスクトップに[pay.csv]というデータが出来上がりました。


それでは中身を見てみましょう。


きれいにエクスポートされましたね。
銀行によりますが、このデータがあれば、一括で支払データの登録も可能です。


あとはフレームやメニュー、起動時の設定やアイコンを変更すれば、アプリケーションはひとまず完成です。

なお弊社では振込だけでなく、手形やでんさいといった支払もありますので、こちらを元に機能追加を行い、テストに移る予定です。

ちなみに弊社では以下のようなイメージにしました。



ここまでの内容については、こちらよりダウンロード可能です。
設計要素も公開しておりますので、ご自由に使って頂いて構いませんが、できれば再配布はご遠慮ください。

以上4回に渡り、ありがとうございました。