Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

5,499 views

Published on

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

Published in: Technology
  • Be the first to comment

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 -

×