Notes DB連携を試そう4

皆さん、こんにちは。
今日、2020年8月7日は立秋です。つまり今日から秋なのです!
なのに今日の東京の予想最高気温は36度。猛暑日です。秋なのに・・・

さて、今日はDomino VoltのNotes DB連携の第4回目にして最終回です。
前回までの記事はこちらからご覧ください。
Notes DB連携を試そう2
Notes DB連携を試そう3

今日は「単一ドキュメントの読み取り」の実装方法を見ていきます。
今回のフォームは以下のようにしてみました。
サンプルアプリケーション(単一ドキュメントの読み取り)
サンプルアプリケーション(単一ドキュメントの読み取り)

ボタンが2つ配置してありますが、それぞれNotes DBから文書を検索してきて、取得した値を下線の下にあるフィールドにセットするようにしています。

一つ目のボタンは直接文書UNIDを入力して、その値を元に文書を検索する。
二つ目のボタンは商品名をドロップダウンから選択して、その値を元に文書を検索する。
というようにしてあります。


では、一つ目のボタンについて実装してみます。
いつものようにボタンのプロパティからonClickイベントを開き、「サービスの呼び出し」にチェックをつけて、「サービス構成の追加/編集」をクリックします。
onClickイベントのサービス構成の追加
onClickイベントのサービス構成の追加

「1.サービスの選択」タブでは以下のように設定します。
サービスの選択(単一ドキュメントの読み取り)
サービスの選択(単一ドキュメントの読み取り)

Notes DBを選択、サービスの操作は「単一ドキュメントの読み取り」を選択、フォームは「商品テーブル」を選択します。
すると、フォーム内のフィールドが表示されます。
※$UpdatedByなど自動的に作成されるアイテムは表示されません。

なお、フィールドの追加はできるの(上で書いたようなフォームにはないフィールドを追加できます)ですが、なぜかフィールドの削除はできません。間違って追加してしまったらサービスを作成し直してください・・・


[次へ]をクリックして入力タブに移動します。

ここでは、ターゲットの選択を見ると「ユニバーサルID」に"*"がついています。
これは設定が必須であることを意味しています。
このサービスを利用するには、文書UNIDを設定する必要がありますよ。
ということですね。
単一ドキュメントの読み取り」ということなので、文書UNIDが必要ということでしょう。

ソースの選択からは、画面上の「文書UNID」を選択して関連付けます。


設定したら[次へ]をクリックして出力タブに移動します。
出力タブの設定(単一ドキュメントの読み取り)
出力タブの設定(単一ドキュメントの読み取り)

ソースの選択を見ると、フォームのフィールドの他、「作成済み」「最終更新日」「Notes URL」「サイズ」が選択できるようになっています。
※「作成済み」って何よ!?と思ったのですがよく見ると日時を示すアイコンが表示されているので「作成日」とわかりました。次のバージョンで修正されていることを期待しましょう・・・

それぞれを画面上のフィールドと関連付けたら[OK]をクリックして確定させます。

これで実装できましたので、アプリケーションを保存してデプロイします。
デプロイが成功したらアプリケーションを[起動]します。
起動すると以下のような画面になります。
アプリケーションを起動した
アプリケーションを起動した

ここで「文書UNID」に入力して[文書の検索]ボタンをクリックすると文書の情報がセットされるはずです・・・が、文書UNIDってどうやって調べるのさ!?

私は通常、Notes DBを作成する場合に文書UNIDをキーにしたビューを作成しています。
文書UNIDをキーにしたビュー
文書UNIDをキーにしたビュー

こうしておけば、表コピーすれば、文書UNIDが取得できます。
ちなみに、ビュー列の式は
@Text(@DocumentUniqueID)
です。

実際の実行結果がこちらです。
実行結果
実行結果

確かに取得できていそうです。
これでNotes文書の情報がDomino Voltで活用できそうですね。

でも・・・文書UNIDを直接入力させるのはちょっとなぁ
と思ったので、他の方法を検討してみました。

しかし!
「単一ドキュメントの読み取り」の入力タブで見たように、文書を検索するためのキーは必ず文書UNIDなのです。

なので、文書UNIDを取得する方法を考えないといけません。
今回は商品名を元に文書が検索できないかを実装してみました。
商品名は直接入力ではなく、一覧から選択させたいと思ったので、ドロップダウンを配置しました。画面上の「商品名の候補」というのがそれです。
これのプロパティを開き、「オプション」の[編集]ボタンをクリックします。
ドロップダウンのプロパティ
ドロップダウンのプロパティ

ドロップダウン・オプションのダイアログが表示されるので、オプションタイプを「サービスの使用」に変更して、「サービス構成の追加/編集」をクリックします。
ドロップダウン・オプション
ドロップダウン・オプション

サービスの設定画面になるので、色々と設定していきます。
サービスの選択
サービスの選択

画面を見てわかるように、「表示エントリーのリスト」を使います。
これでビューに表示されている文書(ビューエントリー)の一覧が取得できます。
商品名の順に取得したいので、「ソートする列の選択」を"商品名"にしておきます。

入力タブは設定する必要がないので、出力タブに移動します。
ここでポイントとなるのは、ドロップダウンの「保存値」と「表示値」です。
「保存値」というのは実際に保持する値で、「表示値」というのは画面上に見える値のことです。
Notes DBではダイアログボックスの選択肢で「|」でわけるようにしますよね。
「りんご|Apple」のように。
「りんご」が表示値で、「Apple」が保存値になります。
出力タブの設定
出力タブの設定

そこで、このタブでは
「ユニバーサル・ドキュメント ID」をドロップダウンの「保存値」として関連付け、「商品名」をドロップダウンの「表示値」として関連付けます。

ここまで設定できたら[OK]をクリックして確定させます。

つづいて、[商品名を選択して検索]ボタンの設定を行います。
プロパティからonClickイベントを開き、サービスの呼び出しを設定します。
「サービスの選択」は先ほどのボタンと同じで「単一ドキュメントの読み取り」を設定します。

入力タブは以下のようにします。
「商品名の候補」と「ユニバーサルID」を関連付けるだけです。
画面上の値は文書UNIDではなく商品名になっていますが、保存されている値は文書UNIDになっているのでこのようなことができます。
入力タブの設定
入力タブの設定

出力タブの設定は先ほどのボタンと同じなので省略します。
設定がすべて完了したら[OK]をクリックして確定させます。

これでアプリケーションができたので、保存してデプロイします。
アプリケーションのデプロイが成功したらアプリケーションを[起動]します。

アプリケーション実行画面(商品名の候補が表示されている)
アプリケーション実行画面(商品名の候補が表示されている)

きちんと商品名の一覧が表示されています。
商品を選択して[商品名を選択して検索]ボタンをクリックした結果が下図です。
実行結果(値が取得できている)
実行結果(値が取得できている)


きちんとNotes DBから値を取得して出力されているのがわかりますね。


いかがでしょうか?
個人的には文書の検索は文書UNID(NotesDatabaseクラスのGetDocumentByUNID)だけではなくてキーワード(NotesViewクラスのGetDocumentByKey)でもできるようにしてほしかったですね。
この辺はフィードバックかな?

ともかくこれでNotes DBの文書情報も取得できることがわかりました。

4回に分けて書いてきたNotes DB連携はこれで終了です。
これでNotes DBで作成していた各種データ用DBを元に業務フローのDomino Voltアプリケーションなんかも作成できるのではないでしょうか?

是非色々と試してみてください。


で紹介されている新機能の目玉については紹介が終わりました。
ですが、まだまだ他にも新機能は用意されているので、そのあたりもわかり次第記事にしていきます。





それでは今日はこの辺で・・・



Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
HCL Ambassadorの私が承ります!
お問い合わせはこちらから→ Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ


コメント