XPagesでRESTを使ってみたら、こんなんだった

5,088 views

Published on

Domino 8.5.3 Upgrade Pcak1で追加されたRESTサービスについての話です。
JSONというJavaScriptに適したデータ形式でのやり取りが可能なので、 XPages とはとても相性が良いのです。
そんなRESTサービスを使わないわけにはいかないでしょう!
ということで、設定の仕方から利用方法までデモを交えて説明します。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,088
On SlideShare
0
From Embeds
0
Number of Embeds
3,089
Actions
Shares
0
Downloads
40
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

XPagesでRESTを使ってみたら、こんなんだった

  1. 1. A-5 XPagesでRESTを使ってみたら、 こんなんだった 株式会社エフ マネージャー 御代 政彦(みよ まさひこ)
  2. 2. e f f e c t f o r c e 免責事項について(お約束です)  本資料は、個人的な見解によるものです。情報の内容に ついては万全を期しておりますが、その内容を保証する ものではありません。  本資料の情報は、使⽤先の責任において使⽤されるべき ものであることを、あらかじめご了承ください。  執筆者の承諾なしに、コピー、複製、他のメディアに転 載する事はご遠慮ください。  当資料に記載された製品名または会社名はそれぞれの各 社の商標または登録商標です。 ©2013 ef Co., Ltd. All rights Reserved. - 2-
  3. 3. e f f e c t f o r c e アジェンダ  RESTとは?  RESTサービス  Notes/DominoでのRESTサービス  JSONについて  Notes/Dominoでの設定方法  Dominoディレクトリ  Notesアプリケーション  デモ(動作確認)  アプリケーションへの組み込み  XPages Extension Libraryを使⽤した場合  クライアントJavaScriptを使⽤した場合  Q&A ©2013 ef Co., Ltd. All rights Reserved. - 3-
  4. 4. e f f e c t f o r c e RESTとは?  RESTサービス  正式名称は、「REpresentational State Transfer」  直訳すると、「具象的な状態の転送」(よく分からん・・・)  パラメータを指定して特定のURLにHTTPでアクセスすると、 狭義の意味としては、XMLで記述されたメッセージが送られて くるインターフェースを指す。  HTTP ベースの軽量なWeb API を提供している  データにはXML やJSON などの形式を利⽤  HTTP のGET/POST/PUT/DELETE メソッドでCRUD 操作を 実現  CRUD…Create(作成)、 Read(読み込み)、 Update(更 新)、 Delete(削除)のこと ©2013 ef Co., Ltd. All rights Reserved. - 4-
  5. 5. e f f e c t f o r c e RESTとは?  Notes/DominoでのRESTサービス  Domino上のNotesアプリケーションへHTTPプロトコルを利 ⽤してアクセスするためのサービス  Notesアプリケーション、ビュー、フォルダ、文書にアクセ ス可能  サーバ単位、アプリケーション単位で制御が可能  データの作成、読込、更新、削除(CRUD)をサポート  データフォーマットに、JavaScript からの操作が効率的な JSONを採⽤ ※「テクてくロータス 2012年3月度」資料より抜粋 ©2013 ef Co., Ltd. All rights Reserved. - 5-
  6. 6. e f f e c t f o r c e RESTとは?  JSONについて  正式名称は、「JavaScript Object Notation」  JavaScriptにおけるオブジェクトの表記法をベースとした軽 量なデータ記述言語である。  JavaScript専⽤ではなく、様々なソフトウェア間でデータの受 け渡しができるように設計されている  書式はXMLに比べて、かなり簡略化されている。  オブジェクトは{}で囲む  配列は[]で囲む  オブジェクトの要素は、:で区切る 【JSONデータのサンプル】 [ { "@modified":"2013-06-16T03:37:44Z", "@unid":"3D50EEFC6D5ECA1349257B8C00135AAB", "@href":"http:¥/¥/domino90se.eflab.local:80¥/Xpages¥/ZipCode.nsf¥/api¥/data¥/documents¥/unid¥/3D50EEFC6D5ECA1349257B8C00135AAB" } ] ©2013 ef Co., Ltd. All rights Reserved. - 6-
  7. 7. e f f e c t f o r c e Notes/Dominoでの設定方法  Dominoディレクトリ  サーバ文書を編集モードで開く。  [インターネットプロトコル]-[Domino Web Engine]タブ を開く。  「Domino アクセスサービス」の「有効なサービス」 に”Data”と入力する。  サーバ文書を保存する。  サーバコンソールで tell http refresh と入力する。 ©2013 ef Co., Ltd. All rights Reserved. - 7-
  8. 8. e f f e c t f o r c e Notes/Dominoでの設定方法  Notesアプリケーション-その1  サービスを適⽤したいノーツアプリケーションの「データ ベースプロパティ」を開く。  一番右の[詳細]タブを開く。  「IBM Domino データサー ビスを許可」の値を「ビュー と文書」に変更する。 ©2013 ef Co., Ltd. All rights Reserved. - 8-
  9. 9. e f f e c t f o r c e Notes/Dominoでの設定方法  Notesアプリケーション-その2  サービスを適⽤したいノーツアプリケーションの「ビュー」 をDomino Designerで開く。  ビュープロパティにある右から二番目の[詳細]タブを開く。  「IBM Domino データサービスの操作を許可」にチェック をつける。  ビューを保存する。 ©2013 ef Co., Ltd. All rights Reserved. - 9-
  10. 10. e f f e c t f o r c e Notes/Dominoでの設定方法  デモ(動作確認)  実際のノーツアプリケーションを見て、動作を確認してみま しょう! 1.ノーツDBのRESTサービスチェック用URL http://Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections 2.($All)ビューのチェック用URL http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections/unid/ビューのUNID 3.文書のチェック用URL http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/documents/unid/文書のUNID 4.NGのチェック用URL http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections/unid/RESTを許可していないビューのUNID →HTTP403エラーになります。 ©2013 ef Co., Ltd. All rights Reserved. - 10 -
  11. 11. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  郵便番号を入力したら、当てはまる住所情報を表示する  事前準備として、「rsTest」(任意)という名前でXPageを作 成する  「inputText1」という名前で編集ボックスを配置する  ボタンコントロールを配置して、イベントのonClickにサーバオ プションを「すべて更新」にする ©2013 ef Co., Ltd. All rights Reserved. - 11 -
  12. 12. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  [データアクセス]-[RESTサービス]コントロール  プロパティビューの「すべてのプロパティ」を下表のとおりに 設定する № 1 カテゴリ名称 基本 項目名称 値 service xe:viewItemFileService 2 contentType application/json 3 databaseName 値を取得したいNotesアプリケーションのファイルパス (自DBの場合は、空白で良い) 4 defaultColumns true 5 keys サーバサイドJavaScriptで、下記の内容を入力する getComponent("inputText1").getValue() 6 viewName 「databaseName」で指定したNotesアプリケーションに あるビューの名前 ©2013 ef Co., Ltd. All rights Reserved. - 12 -
  13. 13. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  [Dojo レイアウト]-[Dojoデータグリッド]コントロール  プロパティビューの「すべてのプロパティ」を下表のとおりに 設定する № カテゴリ名称 項目名称 値 1 データ storeComponentId 「RESTサービス」コントロールの「ID」名を選択肢か ら、選択する 2 基本 autoHeight 1 ※検索結果を表示する行数を指定している ©2013 ef Co., Ltd. All rights Reserved. - 13 -
  14. 14. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  [Dojoレイアウト]-[Dojoデータグリッド列]コントロール  「Dojoデータグリッド」コントロール内に配置する  プロパティビューの「すべてのプロパティ」を下表のとおりに 設定する № カテゴリ名称 項目名称 値 1 データ field JSONのデータを表示するビュー列のプログラム名 2 基本 label 列名として表示したい値 3 形式 width auto ※データの値によって、自動的に幅を調整してくれる   「Dojoデータグリッド列」コントロールは、必要数分配置する 今回の場合、「郵便番号」「都道府県」「市区町村」「町域 名」の4つ分を配置する ©2013 ef Co., Ltd. All rights Reserved. - 14 -
  15. 15. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  設定サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 15 -
  16. 16. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  設定サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 16 -
  17. 17. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  設定サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 17 -
  18. 18. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  設定サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 18 -
  19. 19. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  画面サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 19 -
  20. 20. e f f e c t f o r c e アプリケーションへの組み込み  クライアントJavaScriptを使用した場合  XPageに特別なコントロールを配置する必要はな い  REST APIを使って、JSONデータを取得するため のJavaScriptを記述する  必要な情報は下記の通り   エンドポイント(endpoint)というURL情報 JSONから必要なデータを取得してくるための検索 ⽤URLパラメータ ©2013 ef Co., Ltd. All rights Reserved. - 20 -
  21. 21. e f f e c t f o r c e アプリケーションへの組み込み クライアントJavaScriptを使用した場合  行 コード 1 // 送信先 2 var svn = "http://domino90se.eflab.local"; 3 var dbn = "Xpages/ZipCode.nsf"; 4 var endpoint = "/api/data/collections/unid/D76B3FEBE958BECF49257B8C00037E9D"; 5 エンドポイントのURL 全JSONデータが表示される 6 // 入力した郵便番号 7 var skey = document.getElementById( "#{id:zip71}" ).value; 8 9 // URLを生成 10 var url = svn + "/" + dbn + endpoint + "?search=FIELD zip7 CONTAINS " + encodeURI(skey); 11 ?search以降が検索用URLパ ラメータ 12 // XMLHttpRequestを作成 13 try { 14 // Netscape, Firefoxなど 15 xmlhttp = new XMLHttpRequest(); 16 } catch (e){ 17 18 try { xmlhttp = new ActiveXObject ( "Msxml2.XMLHTTP" ); ©2013 ef Co., Ltd. All rights Reserved. // IE - 21 -
  22. 22. e f f e c t f o r c e アプリケーションへの組み込み  クライアントJavaScriptを使用した場合 行 コード 19 } catch (e){ 20 try { 21 xmlhttp = new ActiveXObject ( "Microsoft.XMLHTTP" ); 22 } catch (e){ 23 // XMLHttpRequestの作成に失敗 24 25 // IE } } 26 } 27 28 // レスポンスを受け取った時に呼ばれるメソッドを指定 29 xmlhttp.onreadystatechange = method1; 30 xmlhttp.open( 'GET', url, true ); 31 xmlhttp.setRequestHeader ( "Content-Type","text/json; charset=utf-8" ); RESTを使ったhttp通信 32 33 // RESTで送信 34 xmlhttp.send(); 35 36 ©2013 ef Co., Ltd. All rights Reserved. - 22 -
  23. 23. e f f e c t f o r c e アプリケーションへの組み込み  クライアントJavaScriptを使用した場合 行 コード 37 function method1() { 38 // レスポンスの結果が正常の場合は、解析処理を行う 39 if ( xmlhttp.readyState == 4 && xmlhttp.status == 200 ) { 40 var ret = xmlhttp.responseText; 41 var obj = JSON.parse( ret ); 42 RESTのコールバック関数 43 document.getElementById( "#{id:prefectures1}" ).value= obj[0]['Prefectures']; 44 document.getElementById( "#{id:cities1}" ).value= obj[0]['Cities']; 45 document.getElementById( "#{id:address1}" ).value= obj[0]['Address']; 46 } 47 } ©2013 ef Co., Ltd. All rights Reserved. - 23 -
  24. 24. e f f e c t f o r c e アプリケーションへの組み込み  クライアントJavaScriptを使用した場合  画面サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 24 -
  25. 25. e f f e c t f o r c e まとめ  Notes/DominoでRESTを利用する意味  Notesアプリケーションのデータを他のWebシステムで動的 に再利⽤することが可能  従来は、CSVやExcel等の静的な受け渡しのみだった(はず)  他のWebシステムのデータを、XPagesを使うことにより、 Notes/Dominoで簡単に再利⽤することが可能  従来はJavaを使うといった高度な技術が必要だった ©2013 ef Co., Ltd. All rights Reserved. - 25 -
  26. 26. e f f e c t f o r c e Q&A  質問ありますか?  質問があれば、画面右側のチャットで、「Masahiko Miyo」 あてに送ってください。 ©2013 ef Co., Ltd. All rights Reserved. - 26 -
  27. 27. e f f e c t f o r c e 自己紹介 今回のセッションに関するお問い合わせは、↓こちらまで↓ 御代 政彦(みよ まさひこ) Twitter:@guylocke Facebook:guylocke34 ブログ:のおつ(http://guylocke.blogspot.jp) XPagesはもちろん、Notes/Dominoに関する営業的なお問い合わせは、 株式会社エフ ef-info@effect-force.co.jp まで! 1. Dominoの構築、運⽤サポート 2. Notes/Dominoアドオン製品の開発 3. 社内で利⽤するNotes アプリケーションの設計、開発 等、etc… ©2013 ef Co., Ltd. All rights Reserved. - 27 -
  28. 28. e f f e c t f o r c e ご清聴ありがとうございました 本日のXPagesDayは、 当セッションをもって終了です。 明日以降も多くのセッションがあるので、 ご期待ください! ※11/8(金)は、 オフラインでのセミナー&懇親会もあります。 今日、質問できなくても「Ask the “X”perts」で 質問できますので、奮ってご参加ください! ©2013 ef Co., Ltd. All rights Reserved. - 28 -

×