Upload
-
View
945
Download
2
Embed Size (px)
Citation preview
IBM Domino&REST
2016 年 6 月 10 日
Notes コンソーシアム九州地区研究会 2016
05/01/2023 Ricoh IT Solutions Co.,Ltd. 1
海老原 賢次リコー IT ソリューションズ株式会社鹿児島事業所
Version: [0.1.0] Classification: Internal Owner: [EBIHARA Kenji]
資料を slideshare で公開しています
• Slideshare で公開していますので、後ほど振り返りでご利用ください。• http://www.slideshare.net/kenjiebihara71または
または
05/01/2023 2
XPages で行こう! 検索
slideshare ebihara kenji 検索
Version: [###] Classification: Internal Owner: [Insert name]
参考サイト
• IBM developer Works [RESTful Web サービスの基本 ] https://www.ibm.com/developerworks/jp/webservices/library/ws-restful/
• 海老原ブログ[XPages で行こう ] http://take-the-xpages.blogspot.jp/• IBM Champion 御代様[XPages で REST を使ってみたら、こんなんだった ]http://www.slideshare.net/ssuser40c5c0/x-pages-daya5-27954881
[XPages で REST を使ってみよう ]http://www.slideshare.net/ssuser40c5c0/x-pagesrest05/01/2023 3
Version: [###] Classification: Internal Owner: [Insert name]
参考サイト• Extension Library のインストール方法https://www-10.lotus.com/ldd/ddwiki.nsf/dx/OpenNTF_XPages_Extension_Library_%
E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95
05/01/2023 4
05/01/2023 5
本日のお題
Ricoh IT Solutions Co.,Ltd.
1. REST とは
2. なぜ REST なのか
3. REST コントロール
4.事例紹介
05/01/2023 6
本日のお題
Ricoh IT Solutions Co.,Ltd.
1. REST とは
2. なぜ REST なのか
3. REST コントロール
4.事例紹介
05/01/2023 7Ricoh IT Solutions Co.,Ltd.
REST とは
システム間、またはシステムとクライアント間との通信方法のアーキテクチャ思想の1つ。
05/01/2023 8Ricoh IT Solutions Co.,Ltd.
REST とは
ブラウザで HTML ページを表示するのと同じ、 HTTP でデータをやり取りする。( Web API )
呼び出しも URL で呼びだす。(リクエストする) よって、サーバー側には Web サービスが必要。
05/01/2023 9Ricoh IT Solutions Co.,Ltd.
REST とは
やり取りするデータの種類に規定はない 最もよく使われるのが、 JSON と呼ばれるテキストデータ。
– JSON の他に XML が使われる場合もある。
05/01/2023 10Ricoh IT Solutions Co.,Ltd.
JSON とは
データの構造を表現する、テキスト形式のデータ。{ // 中括弧でオブジェクトを表現 "lastName": " 海老原 ", // 項目名 : 値の形で書く "firstName": " 賢次 ", "age": 41, "skill": [ // 配列 "domino", "XPages", "C#", "java" ], "address": { // オブジェクトの入れ子 "address1": " 鹿児島県鹿児島市吉野町 ", "address2": "xxx-xxx" }}
05/01/2023 11Ricoh IT Solutions Co.,Ltd.
REST とは
ブラウザ サーバーHTTP (リクエスト)
HTTP (レスポンス)HTML
クライアントAPP サーバーHTTP (リクエスト)
HTTP (レスポンス)JSON
JSON
05/01/2023 12Ricoh IT Solutions Co.,Ltd.
REST とは
HTTP で通信するときに、メソッドと言われる呼び出す型(動詞)を指定する。
05/01/2023 13Ricoh IT Solutions Co.,Ltd.
HTTP のメソッドとは HTTP のリクエスト(呼び出し)するときに、呼び出しの目的を指定することができる。 種類は、 HTTP の規約で決まったものがある。よく利用するメソッド
• GET … リソースの取得(ブラウザで HTML を開くときもこれ)• POST … リソースの作成、追加 (*1)• PUT … リソースの更新 (*1)• DELETE… リソースの削除(*1: 正確に表記すると、 POST は " べき等 " でない、その他は " べき等 " である、という条件が付きます。)
これ以外にも、 OPTIONS 、 HEAD 、 PATCH などがある。
05/01/2023 14
本日のお題
Ricoh IT Solutions Co.,Ltd.
1. REST とは
2. なぜ REST なのか
3. REST コントロール
4.事例紹介
05/01/2023 Ricoh IT Solutions Co.,Ltd. 15
REST のメリット
ビジネスロジックが一元化され、メンテナンス性が向上
いろいろなシステム・サービスとリアルタイムで連携しやすくなる。
シンプル。すぐに作れる。すぐ使える。
モバイルアプリなど独自の UI が提供できる。
05/01/2023 16Ricoh IT Solutions Co.,Ltd.
REST…WebAPI を設計する XPages など Web アプリケーションは、主にブラウザで情報を閲覧したり、入力したりするのが目的。 でも、データの入り口が増えたら・・・?
DominoDatabaseXPages
BL View
BL…ビジネスロジック
?
05/01/2023 17Ricoh IT Solutions Co.,Ltd.
REST…WebAPI を設計する 例えば、 CSVファイルをエージェントで取り込むとした場合、 XPages とエージェントで同じ処理を書かなくてはならない。→メンテナンス性低下。工数増。
DominoDatabaseXPages
BL View
BL…ビジネスロジック
エージェントBL
同じものを用意する必要がある
CSVファイル
05/01/2023 18Ricoh IT Solutions Co.,Ltd.
REST…WebAPI を設計する REST による WebAPI を作成することで、ビジネスロジックを統一できる。メンテナンス性が向上。工数減。
DominoDatabaseXPages
BLView
BL…ビジネスロジック
REST API
05/01/2023 19
本日のお題
Ricoh IT Solutions Co.,Ltd.
1. REST とは
2. なぜ REST なのか
3. REST コントロール
4.事例紹介
05/01/2023 20Ricoh IT Solutions Co.,Ltd.
Domino で REST Domino データサービス を使う
– v8.5.1ugp1 or v9.0以上。– サーバー設定文書と DB の設計要素の設定だけで可。– JSON の構造は定められたもので、カスタマイズできない。– 参考:御代様ブログ [ のおつ -Notes/Domino に関すること -]http://guylocke.blogspot.jp/2013/06/notesdomino-rest-api.html
XPages の REST コントロールを使う
05/01/2023 21Ricoh IT Solutions Co.,Ltd.
REST コントロール XPages で REST API を簡単に実装できるコントロール Domino 9.0 以降は、ビルドインされている。 Domino 8.5.3, 8.5.2 は、 Extension Library またはUpgrade Pack が必要。 SSJS で、上記以外のバージョンのサーバーにアクセスしてデータを参照、更新することもできる。
05/01/2023 22Ricoh IT Solutions Co.,Ltd.
REST コントロールの使い方 はじめに、空の XPages に "REST"サービスコントロールをドラッグ&ドロップする。
05/01/2023 23Ricoh IT Solutions Co.,Ltd.
呼び出しの URL を決めます
貼り付けた REST コントロールを選択します。 " 全てのプロパティ "の "pathInfo"に URL となる API名を入れます。 XPages の URL が http://192.168.1.1/sample.nsf/api.xspで、 "pathInfo"に "questions" という値を入れると、外部から下記の URL で API を呼びだすことができる。http://192.168.1.1/sample.nsf/api.xsp/questions
05/01/2023 24
メソッド毎の処理を書きます "service"で作成する REST の種類を選択します。 ここでは、汎用的な REST API が作れる "customRestService"を選択します。
Ricoh IT Solutions Co.,Ltd.
05/01/2023 25Ricoh IT Solutions Co.,Ltd.
メソッド毎の処理を記述する doGet, doPost, doPut, doDelete に、それぞれのメソッドで呼ばれた時のサーバーサイドスクリプトを記述します。 まずは、 GET メソッドに対応するサービスをつくります。 ここでは、キーワードを指定してビューからそのキーに一致した文書の一覧を JSON で返すことにします。
05/01/2023 26Ricoh IT Solutions Co.,Ltd.
URL パラメータの取得 GET メソッドの場合、リクエストの値を受け取るには、 URLパラメータを使います。 http://192.168.1.1/sample.nsf/api.xsp?key=word これをサーバーサイドスクリプトで受け取るには、paramオブジェクトを利用します。
var key = param.get("key");print(key); // word
URLパラメータに記号やマルチバイト文字が入る場合は、 UTF-8 で URL エンコードが必要です。例)ほげ → %e3%81%bb%e3%81%92サーバーサイドで param.get() で取得する場合、自動的にデコードして元の文字を返します。
05/01/2023 27Ricoh IT Solutions Co.,Ltd.
レスポンスで JSON を返す テストの JSON を返すには、 doGet の最後に return でストリングを返すだけです。
var key = param.get("key"); var docView = database.getView("DocView"); var docs:NotesDocumentCollection = docView.getAllDocumentsByKey(key); var array = []; // 返す JSON のオブジェクト配列を定義 var doc = docs.getFirstDocument(); while(doc != null){
var obj = {title: doc.getItemValueString("title"),tag: doc.getItemValueString("tag")
};array.push(obj);doc = docs.getNextDocument();
}return toJson(array); // Javascriptオブジェクトを JSON文字列に変換して返す
05/01/2023 28Ricoh IT Solutions Co.,Ltd.
POST のデータを受け取る GET の場合は、値を渡すのが目的なので、受け取るパラメータは少ないことが多いので、 URLパラメータで十分。 POST や PUT (新規登録、更新)の場合は、複数の多くの項目を受け付ける必要がある。 POST や PUT では通常、リクエスト Body でフォームの値や JSON を受け取る必要がある。
05/01/2023 30Ricoh IT Solutions Co.,Ltd.
JSON の受け取り方 requestContentType に“ application/json”を指定する。 requestVar に任意の変数名を指定すると、JSON を自動的に requestVar "で指定した名前でオブジェクト化し、サーバーサイド JS内で使用できる。
// リクエスト JSON{ "name": "kenji ebihara", "tag": "xpages"}// サーバーサイド JSprint(json.name); // kenji ebiharaprint(json.tag); // xpages
05/01/2023 Ricoh IT Solutions Co.,Ltd. 31
Domino の設定
Domino で、 GET,POST 以外のメソッドを受け取れるようにするには、「インターネットサイト」設定文書を作成し、使うメソッドを許可する必要があります。
サーバー設定文書インターネットサイト文書
05/01/2023 32
本日のお題
Ricoh IT Solutions Co.,Ltd.
1. REST とは
2. なぜ REST なのか
3. REST コントロール
4.事例紹介
05/01/2023 Ricoh IT Solutions Co.,Ltd. 33
スマートフォン&スマートウォッチ連携
施設予約アプリ 設備予約アプリ http://
equipmentreservation.mybluemix.net/EquipmentReservation.nsf/index.xsp
34
android アプリ+スマートウォッチ
35
システム構成
36
XPages on
通知
通知
REST
REST
REST
GCM
XPages
通知
予約一覧取得予約詳細情報取得新規予約登録予約変更
メッセージ送信
Google cloud messaging
05/01/2023 Ricoh IT Solutions Co.,Ltd. 37
Q&A アプリ
05/01/2023 38Ricoh IT Solutions Co.,Ltd.
Q&A アプリ REST API 計画 オープンな Notes関連の質問Web ページ。九州地区Notesパートナー会技術部会で作成 http://qa.xpages.jp/ これに REST でデータが取得できるよう、準備中
05/01/2023 Ricoh IT Solutions Co.,Ltd. 39
外部システムとの連携
05/01/2023 40Ricoh IT Solutions Co.,Ltd.
• 大量の添付ファイル( 100GB超)があるため、 Dominoの 1DB のみでは管理が困難• ファイルは SQL Server にバイナリ・データとして格納• Domino 8.5.1 のため Extension Library は使用できなかったが、オープンソースの Java ライブラリを利用することで低コストで実現。
Version: 1.0.0 Classification: Internal Owner: EBIHARA Kenji 01/05/2023 41
事例
DB 内にバイナリでファイルがUNID をキーとして保存する
SQL Server Dominoアクセス・コントロール
書誌情報を格納
それぞれの長所を活かすとともに、利用者にシームレスでリアルタイムなサービスを提供することが可能に!
ファイルは Web サービスから直接アップ & ダウンロード
他のシステムからもWeb サービスを利用
ファイル
一覧情報 JSON
ファイルの一覧を取得してXPages 内に表示
Web サービス
DB サーバー
05/01/2023 Ricoh IT Solutions Co.,Ltd. 42
JSON の活用
01/05/2023
動的フォーム 入力画面 (1)
43
設定に合わせて表を表示
01/05/2023
動的フォーム 入力画面 (2)
44
追加ボタンを押すと、行追加のダイアログボックスが表示される
設定されたデータ型に応じてフォームが変わる
01/05/2023
動的フォーム 設定画面 (1)
45
テーブルのレイアウトを選択可能
01/05/2023
動的フォーム 設定画面 (2)
46
テーブル毎に 10項目まで指定が可能
項目のタイプを選択可能
テーブルでの列幅を指定
入力文字数の制限