IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-1

IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-2

 

こんばんは爆  笑

サッカー日本代表vsウルグアイ戦を観戦してきてサッカーやりたくてうずうずしていますサッカー

 

そんなこともありWorkspaceもこんな感じになってしまいましたラブ

 

 

話を戻しまして・・・

とうとう出ましたね、Notes/Domino V10ハート

 

何がそんなに待ち遠しかったかというと・・・

 

NotesHTTPRequestクラス

 

この機能でどこまで社内の連携が変わるのかと思うとワクワクが止まりませんラブ

 

Beta版と若干変わっているようですが

いち早くIBM Championの御代氏がブログでわかりやすくまとめてくださっていますグッ

http://guylocke.blogspot.com/2018/10/ibm-notesdomino-v102.html

 

実際、どのように使用すれば良いのか?

たまたま、先日のノーツコンソーシアムのクラウド研究会で

NotesHTTPRequestクラスの使い方を教えてもらったので共有したいと思いますおねがい

 

 

ヘルプに使い方が載ってないなんて・・・

いけずですなグラサン

 

 

 

前回作成したXPagesのJSONを使って紹介していきます。

 

まずは前回のおさらい

 

  Dim session As New NotesSession
  Dim http As NotesHTTPRequest
    
  url = "<取得したいURL>"
    
  Set http = session.CreateHTTPRequest()
  response = http.Get( url )
  Msgbox response

 

これで以下のように取得できていましたニコニコ

 

実際欲しいのは、Field_5の値だったりするわけです。

値をぶん回して取得する?そんなことやってられませんよねタラー

 

そこで使用するクラスが

 

 

 

NotesJSONNavigator

NotesJSONElement

NotesJSONObject

 

 

 

になります拍手

 

 

 

使い方は不明なのですが・・・

とか

 

実はちゃんと組み込まれていることがわかりましたキョロキョロ

 

 

では、実際の実装例ですニコニコ

 

1)フォームを作成し、ダイアログボックスとボタンを作成します。

ダイアログボックスの選択はイメージの通りです。

 

2)ボタンにLotusScriptを記述します。

やりたいことは、ダイアログボックスで選択した値を取得するです。

 

記述例:

    Dim uiws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
     
    Dim session As New NotesSession
    Dim webRequest As NotesHTTPRequest
    Dim URL As String
    Dim returnVal As Variant
   
    Dim jsonNav As NotesJSONNavigator
    Dim jsonElement As NotesJSONElement
    Dim jsonObj As NotesJSONObject
    Dim jsonArrElem As NotesJSONElement
   
    Set uidoc = uiws.CurrentDocument
    Set doc = uidoc.Document
  
    URL = "<<作成したXPagesのJSONのURL>>"
   
    Set webRequest = session.CreateHTTPRequest
    returnVal = webRequest.Get(URL$)
   
    Set jsonNav = session.CreateJSONNavigator(returnVal)
    Set jsonElement = jsonNav.GetFirstElement


     Set jsonObj =  jsonElement.Value
     Set jsonArrElem = jsonObj.GetElementByName(doc.label(0))
     Msgbox jsonArrElem.Value

     

ポイントを抜粋(為になるかは別ガーン)

前回、22行目までで終了していましたが24行目でsession.CreateJSONNavigatorの引数として取得したJSONをセットします。

 

25行目のNotesJSONElementには、以下の画像の赤枠部分が入ります(多分)。

既にお気づきの方もいると思いますが、GetLast・・・にすれば

一番下のエレメントをNotesJSONElementにセットできます。

 

デバッグで値を確認すると・・・

よくわかりませんねガーン

 

26行目、NotesJSONObjectには以下の部分がセットされています(多分)。

 

デバッグで値を確認すると・・・

これまたよくわからないですえーん

 

28行目、再度別で宣言したNotesJSONElementにNotesJSONElementで指定した値を取ってくるように(今回はラベル名)をセットします。

 

デバッグで値を確認すると・・・

 

おおー!

取れてるww

(ValueはやっぱりVariant??びっくり

 

動作確認

ダイアログからラベルを選択し、記述したスクリプトがあるボタンをクリックすると・・・

 

見事に欲しい値が取得できましたキラキラ

 

応用編として以下のような記述を追加するとLoop処理もできます。

 

  Do Until jsonElement Is Nothing
       
        Set jsonObj =  jsonElement.Value
        Set jsonArrElem = jsonObj.GetElementByName(doc.label(0))
       
        Msgbox jsonArrElem.Value
       
        Set jsonElement = jsonNav.GetNextElement
    Loop

 

 

以上、簡単なデモでしたがNotesHTTPRequestの使い方わかりましたでしょうか??

注意点としては「ヘルプに記載がなかった(?)」ので正しい使用方法なのかは不明ですので自己責任でやってみてください。

 

また、こちらのノーツコンソーシアムのブログにもWatsonと連携する方法が掲載されるはずですので合わせて参考にしてみてください拍手

https://www.notescons.gr.jp/home.nsf/blogs.xsp

 

次回は、筆者もWatsonと連携するクライアントDBを作成して紹介できればと思いますチョキ

 

 

では、今日はこの辺で・・・

 

 

あでゅーバイバイ