Submit Search
Salesforce連携のためのOData入門
13 likes
10,184 views
Shunji Konishi
2014/12/25 社内勉強会資料
Technology
Read more
1 of 20
Download now
Downloaded 50 times
1
2
3
Most read
4
Most read
5
6
7
8
9
10
11
12
13
14
15
16
17
Most read
18
19
20
More Related Content
PDF
PostgreSQL のイケてるテクニック7選
Tomoya Kawanishi
PDF
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
PDF
ネットワークコンフィグ分析ツール Batfish との付き合い方
akira6592
PDF
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
PDF
平成最後の1月ですし、Databricksでもやってみましょうか
Ryuichi Tokugami
PDF
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Daichi Koike
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
PostgreSQL のイケてるテクニック7選
Tomoya Kawanishi
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
ネットワークコンフィグ分析ツール Batfish との付き合い方
akira6592
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
平成最後の1月ですし、Databricksでもやってみましょうか
Ryuichi Tokugami
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Daichi Koike
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
What's hot
(20)
PDF
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
PDF
3分でわかるAzureでのService Principal
Toru Makabe
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
PDF
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
PPTX
Dockerからcontainerdへの移行
Akihiro Suda
PPTX
今さら聞けない人のためのGitLabの始め方 Ubuntu編
VirtualTech Japan Inc./Begi.net Inc.
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
PPTX
Redisの特徴と活用方法について
Yuji Otani
PDF
CRDT in 15 minutes
Shingo Omura
PDF
爆速クエリエンジン”Presto”を使いたくなる話
Kentaro Yoshida
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
PPTX
WayOfNoTrouble.pptx
Daisuke Yamazaki
PPTX
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
PDF
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
PDF
Paxos
Preferred Networks
PPTX
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
NTT DATA Technology & Innovation
PPTX
Data Factory V2 新機能徹底活用入門
Keisuke Fujikawa
PDF
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
3分でわかるAzureでのService Principal
Toru Makabe
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
Dockerからcontainerdへの移行
Akihiro Suda
今さら聞けない人のためのGitLabの始め方 Ubuntu編
VirtualTech Japan Inc./Begi.net Inc.
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Redisの特徴と活用方法について
Yuji Otani
CRDT in 15 minutes
Shingo Omura
爆速クエリエンジン”Presto”を使いたくなる話
Kentaro Yoshida
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
WayOfNoTrouble.pptx
Daisuke Yamazaki
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
Paxos
Preferred Networks
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
NTT DATA Technology & Innovation
Data Factory V2 新機能徹底活用入門
Keisuke Fujikawa
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama
Ad
Similar to Salesforce連携のためのOData入門
(10)
PDF
業務システムで使える可視化テクニック - Apache HTTP編 -
Yasuyuki Sugai
PDF
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
PDF
[Postgre sql9.4新機能]レプリケーション・スロットの活用
Kosuke Kida
PDF
20190925_DBTS_PGStrom
Kohei KaiGai
PDF
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
Insight Technology, Inc.
PPTX
20150822 Application Insightsでお手軽WPアプリ監視
Takayoshi Tanaka
PDF
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27
Tetsuya Mase
PPT
リンクトオープンデータ(LOD)の紹介と、その先にある参画・協働・復興促進
Shun Shiramatsu
PDF
20120525 mt websocket
Ryosuke MATSUMOTO
PPTX
できる!サーバレスアーキテクチャ
azuma satoshi
業務システムで使える可視化テクニック - Apache HTTP編 -
Yasuyuki Sugai
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
[Postgre sql9.4新機能]レプリケーション・スロットの活用
Kosuke Kida
20190925_DBTS_PGStrom
Kohei KaiGai
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
Insight Technology, Inc.
20150822 Application Insightsでお手軽WPアプリ監視
Takayoshi Tanaka
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27
Tetsuya Mase
リンクトオープンデータ(LOD)の紹介と、その先にある参画・協働・復興促進
Shun Shiramatsu
20120525 mt websocket
Ryosuke MATSUMOTO
できる!サーバレスアーキテクチャ
azuma satoshi
Ad
More from Shunji Konishi
(20)
PDF
Salesforceのハッカソンに参加した話
Shunji Konishi
PDF
プロキシーを使ってテストを楽にする
Shunji Konishi
PDF
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
PDF
MochaとChaiでやるJavaScriptテスト
Shunji Konishi
PPTX
SendGridサンプルの紹介
Shunji Konishi
PDF
セキュリティの考え方
Shunji Konishi
PDF
一番簡単なWebSocketの試し方
Shunji Konishi
PDF
WebSocketでリアルタイムクイズアプリを作ってみた
Shunji Konishi
PDF
良質なコードを高速に書くコツ
Shunji Konishi
PPTX
Heroku tips1
Shunji Konishi
PDF
Playframework1でSeleniumテスト
Shunji Konishi
PPTX
Heroku Dyno再起動時の振る舞い
Shunji Konishi
PPTX
Dyno cycling behavior of Heroku
Shunji Konishi
PPTX
Herokuで使えるRDBMS管理者ツール
Shunji Konishi
PPTX
Play1 to Play2
Shunji Konishi
PDF
お手軽Ajaxアプリケーションの作り方
Shunji Konishi
PPTX
Herokuのログ解析ツール
Shunji Konishi
PPTX
Excel2 canvas
Shunji Konishi
PDF
特盛!Heroku
Shunji Konishi
PPTX
文字コードのお話
Shunji Konishi
Salesforceのハッカソンに参加した話
Shunji Konishi
プロキシーを使ってテストを楽にする
Shunji Konishi
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
MochaとChaiでやるJavaScriptテスト
Shunji Konishi
SendGridサンプルの紹介
Shunji Konishi
セキュリティの考え方
Shunji Konishi
一番簡単なWebSocketの試し方
Shunji Konishi
WebSocketでリアルタイムクイズアプリを作ってみた
Shunji Konishi
良質なコードを高速に書くコツ
Shunji Konishi
Heroku tips1
Shunji Konishi
Playframework1でSeleniumテスト
Shunji Konishi
Heroku Dyno再起動時の振る舞い
Shunji Konishi
Dyno cycling behavior of Heroku
Shunji Konishi
Herokuで使えるRDBMS管理者ツール
Shunji Konishi
Play1 to Play2
Shunji Konishi
お手軽Ajaxアプリケーションの作り方
Shunji Konishi
Herokuのログ解析ツール
Shunji Konishi
Excel2 canvas
Shunji Konishi
特盛!Heroku
Shunji Konishi
文字コードのお話
Shunji Konishi
Salesforce連携のためのOData入門
1.
2014年12月25日 株式会社FLECT 小西俊司
2.
Heroku Postgres上のデータをSalesforceの外部オ ブジェクトとして参照したいらしい
ODataの細かい仕様がどうなっているのかという点に は全く踏み込んでいない ◦ 所詮2,3日調べた程度なので多くを期待してはいけない
3.
Open Data
Protocol ◦ http://www.odata.org/ ◦ Microsoft が主導で推進しているらしい httpのREST APIだけでデータの参照・更新・削除を 行うための仕様 SQLのhttp版くらいに思っておけばOKだと思う ◦ ↑というか、まさに今この程度の理解 ◦ 具体的な検索条件やソートの指定の仕方等はなんとなく試し てみた程度でちゃんと調べてはいない
4.
httpだけでデータを読み書きできることにつきる CORS(Cross
Origin Resource Sharing)との組み 合わせを考えるとこんな状況もありえるかも? ◦ 近年色々な鉄道会社が時刻表や電車の遅延情報などをAPI で提供し始めている(気がする) ◦ しかし、それぞれの鉄道会社はAPIはRESTではあっても全部 独自形式(知らないけど多分) ◦ 各社のAPIはCORSには対応していないのでブラウザから直 接は叩けず、サーバで実行するしかない(に違いない) ◦ CORSとODataがサポートされればブラウザから直接各社の データに統一規格でアクセスできるのサーバ不要でアプリが 作れる(公開先はもはやGitHub.ioで良いですね(^^v) まぁ希望なんで当分なさそうではあるけど
5.
V1からV4まであるらしい ◦ V4は近日正式リリース予定らしい
どこが変わったのかは知らないけど、多分できること が増えているのであろう 現在広く使われているバージョンはV2 ◦ かどうかは確信が無いが、とりあえずSalesforceの外部デー タ参照でサポートされているのはV2のみ ◦ V4も近い将来サポートされるらしい
6.
http://www.odata.org/libraries/ MS主導のため.NETのライブラリが一番充実している
Javaのライブラリで有力なのは以下の二つ ◦ Apache Olingo V2 and V4 サーバ/クライアント両対応 ◦ odata4j V1 – V3 サーバ/クライアント両対応 odata4jはコミットログを見る限り停滞しているように 見えるので、Olingoを使うのが良さげ
7.
一部クラスがServlet API依存なので、Play等の非 Servletから扱うのはしんどい ◦
やりかけたけど途中であきらめました。 ライブラリの完成度はやや怪しいかも。。。(-- ◦ 2,3日の評価なんで何とも言えないけど(後述) V4はまったく未検証
8.
https://github.com/shunjikonishi/odata- producer Olingoで作成したOData
Producer ◦ JPAのエンティティを作成することでテーブルをODataとして 公開出来る ◦ サンプルデータとして、Car, Makerという二つのテーブルと テストデータを生成する ◦ ベーシック認証対応
9.
サンプルはHeroku上で公開されているので以下の URLにアクセス ◦ BasicAuth:
test/password ◦ http://flect-odata-test.herokuapp.com/odata ◦ http://flect-odata-test.herokuapp.com/odata/$metadata ◦ http://flect-odata-test.herokuapp.com/odata/Cars ◦ http://flect-odata-test.herokuapp.com/odata/Cars(1) ◦ http://flect-odata- test.herokuapp.com/odata/Cars?$filter=Car_name%20eq%2 0%27LEGACY%27
10.
設定 >
開発 > External Data Sources 設定項目 ◦ サーバURL: OData ProducerのURL (Ex. https://flect-odata-test.herokuapp.com/odata) ◦ 種別: OData 2.0 ◦ 形式: AtomPub ◦ Basic認証を設定した場合以下の認証設定が必要 ◦ ID種別: 指定ユーザ ◦ 認証プロトコル: パスワード認証 ◦ ユーザ名とパスワード
11.
設定 >
開発 > 外部オブジェクト ◦ 外部データソースを指定する以外は通常のカスタムオブジェ クトとあまり変わらない ◦ API参照名には「__x」が付加される ◦ 作成直後は外部IDと表示URLだけが項目として設定されて おり、各フィールドは手動でカスタム項目として追加する必要 がある データ型等を指定できる 大文字小文字の差異に注意($metadataでフィールド名を確認 しながら設定を行うと良い) ◦ 他の外部オブジェクトや標準/カスタムオブジェクトに対して 参照関係が設定できる 多分、通常の参照/親子関係と同じ感覚で使用できると思う
12.
Car#maker_id ->
Maker#maker_idの参照関係 を設定した例(デフォルトのまま)
13.
サブクエリ等も使えるがSOQLとして正しくてもエラー となるケースもあるらしい 成功するクエリの例 ◦
SELECT car_name__c, maker__r.maker_name__c FROM car__x WHERE maker__r.maker_name__c = 'HONDA’
14.
EXTERNAL_OBJECT_UNSUPPORTED_EXCEPTION ◦ LIKE検索で発生 ◦
ODataのfilterにLIKE構文はない QUERY_TOO_COMPLICATED ◦ 参照テーブルにLIKE構文を使用したらエラーコードが変わっ た ◦ これもfilterの制限と思われる 原理的にODataでサポートしていない検索はできないはず
15.
http://flect-odata- test.herokuapp.com/odata/Cars?$filter=inde xof(Car_name, ‘WING’)
eq 0 仕様にあるfilterのindexofとか実装されていない。 ただし、SalesforceからのOdata APIのキックでOlingo側の 未実装が問題となるケースには遭遇していない
16.
External Datasourceの設定画面にこんな項目がある
多分filterのカスタム関数を自前で作ればそれが使えるんだと 思う この辺を参考にすれば実装できそう http://olingo.apache.org/doc/odata2/tutorials/Olingo_T utorial_AdvancedRead_FilterVisitor.html 必要に迫られれば作る(PullRequest歓迎)
17.
https://github.com/shunjikonishi/odata- producer をフォーク
環境変数DATABASE_URLに接続先のPostgreSQLの URLを定義 ◦ 現在はPostgreSQL固定になっているので、MySQL等を使う場合 はHerokuEntityManagerFactoryとpersistense.xmlの修正が 必要 サンプルエンティティ(src/…/entities/*.java)を削除 公開したいエンティティをentities以下に定義 いじょ ◦ ローカルでの動作確認はrun.sh(run.bat)でできます。 ◦ Herokuで動かす場合は環境変数「APP_OPTS」でBASIC認証が 設定できます。
18.
JPAのエンティティとして定 義する ◦ Lombokが入っているので getter/setterは不要
余計な修飾は一切いらな い ◦ OneToManyとか ManyToOneとかは Salesforce側で解決される ので不要 ◦ 下手に付けるとOlingoがエ ラーで落ちることがある ◦ @Columnでフィールド名を 変更しても良いけど Salesforce側でも設定でき るのであまり意味はない
19.
紆余曲折あったが、結局のところ公式ドキュメント (http://olingo.apache.org/doc/odata2/index.htm l)のJPAの章ほぼそのままで動いた ただしデフォルトでは例外発生時にStackTraceがでない のでそこだけは手を入れた方が良い ◦
MyODataJPAServiceFactory#getCallback参照 ◦ 当初OneToManyの定義が書き方によって動かなくて、原因を特 定するのにえらい苦労した フックポイントは多いので多分何でもできるはず ◦ ODataの仕様書をちゃんと読めばね。。。。 ◦ ちょいちょいNot implementedを見かけるがそれも自力で解決で きると思われる ちゃんと使おうと思ったら絶対ソースは読むべき(基本)
20.
とりあえずSalesforceから参照可能なODataProducerを 作るだけなら難しくはない ◦ 現状一番の問題はLIKEが使えないこと ◦
認証がBASIC認証だけで良いかは課題 HerokuのOAuthを使っても良いけどあんまり意味が無い気がする ◦ パフォーマンス、実用性などは実案件に即した検証が必要 V4の今後がどうなるかは謎なので現状V2でどこまで作り 込むべきかは不明 ◦ 1年以内にV4が来るならV2での実装は不要と思う ◦ しかしOlingoのV4ドキュメントは現状ほとんどない。。。(-- OData自体はSalesforceと関係なくWatchする価値のあ る技術
Download