Salesforceを勉強する。5日目
1日目の次に急に5日目になる。
なぜなら
上司『APEXで外部アプリケーションとSalesforceを連携したいんだよね』
私『おめでとうございます。おつかれさまです。』
上司『つまりAPEXで外部アプリケーションとSalesforceを連携するところを作ってほしいんだよね。できるよね。』
私『できません。APEXってなんですかSalesforceってなん』
上司『よろしくね。それがお仕事だからね。』
で急にAPEXを使ってガリガリ書くことになったからです。
もういやです。
2日目~4日目はもっと基礎的なとこ書きたいので
後日書くという言い訳をして
さて、これがお仕事なのでやっていきましょう。
まずAPEXとは
salesforceの開発言語です。
ほぼjavaらしいです。
ワタシjavaアンマリツカッタコトナイCakePHPガスキスキスキ。。。
どうやって開発すんの??
まずsalesforceのソースをとってこよう
用意するのは
- MavensMate
- Sublime Text3(Package ControlでMavensMateot落としてきてね)
だよーん
上記2つのアプリを使って
自身のsalesforce環境を落としてきましょう。
本番環境じゃなくて
sandboxっていう本番環境コピーした開発環境がすぐ作れて便利!
だからそっちとまずつなげてねーーーー。
とりあえず書こう!
Apexの概要について参考になるサイトページ
ふむふむ拡張子は.clsで
classes フォルダにApexクラスを格納していくのね。
ではではさっそく簡単な処理を書いていこう。
お、こんなところにすごく便利なtrailheadはっけん。
これの最後にハンズオンのチャレンジがあるのでやってみました。
ちょっと理解した気になれるのでどうでしょうか。
でもなぜかハンズオンのチャレンジだけ英語のままだったので
日本語に訳してみたよ!↓
string型の('Test 0', 'Test 1', ...)が格納された配列を返却する
APEXクラスを作ってください。
配列内のデータ数は引数によって設定するようにしてください。
- StringArrayTestというpublicなAPEXクラスを作ってください。
- StringArrayTestにはpublicなstaticのgenerateStringArrayというメソッドをもたせてください。
- generateStringArrayメソッドはstring型の配列を返却するようにしてください。各文字列は、 'Test n'の形式で値を持たなければなりません。ここで、nは配列内の現在の文字列のインデックスです。返却される配列の文字列の数は、 generateStringArrayメソッドのinteger型引数によって指定されるようにしてください。
レッツチャレンジです!
本当にしたい機能を作っていこう
今回やりたいのは
外部アプリケーション→salesforce→外部アプリケーション
です。
詳しく書くと
外部アプリケーションでデータ取得のボタンをクリック
↓
salesforceの処理呼び出し
↓
salesforceの処理内でsalesforceで使用してるデータを取得
↓
取得したデータを外部アプリケーションに返却
がしたい!
REST APIでやっていきます。
REST APIは調べたけどよくわかんなかった(ばかすぎ)
RESTの原則に沿ったAPIってなんや
とりあえずHTTPのGETやPOST使ってウェイって感じのやつと理解した
Apex REST アノテーション
ってのがsalesforceにはあるらしいぞな。
- @RestResource(urlMapping='/yourUrl')
- @HttpDelete
- @HttpGet
- @HttpPost
- @HttpPut
この
- @RestResource(urlMapping='/yourUrl')
を使っていくぜうぇい
やり方としては
①外部アプリケーションでsalesforceにhttpリクエストする
②salesforceのソースに新しいファイル作る
③②に処理を書いていく。
④①のリクエストURLを②③の場所に合わせる
確認の方法は
ログを吐いて開発者コンソール
system.debug(なんたらかんたら);
ダオ作ってコントローラ作って
viewが外部アプリケーションないめーじ
DAOはDB関連の処理をまとめたものだよん。
ここで参考にしたページ
すごい!
めっちゃわかりやすい例がそのまま載ってやがるぜ!
ネットってめっちゃ便利やな!
ばかなので本当に1つずつ理解していきます。
@RestResource
(urlMapping=
'/Account/*'
)
⇒RESTアノテーションの宣言
アノテーションは日本語で注釈、注記といった意味。
REST APIでこのクラスの処理は実行するんですよ~っていう注意書きをします。
REST APIで指定されるURLもここでわかるようになるね~便利ね~
@HttpDelete
@HttpGet
@HttpPost
⇒これもRESTアノテーションの宣言
削除要求かゲットかポストか呼び出し元がどうしてるかわかるように
注意書きしてるよん
global with sharing
class
⇒global はアプリケーション外からもアクセスOKにするとき使う識別子みたいですね。通常はprivate / protected / publicで良いということかな。
とりあえず今回は外部アプリケーションから呼び出すのでglobalですね!
よしわかった!
…しかし、んん?with sharing??
この疑問を解決してくれているのがここ!
なるほどwithだと権限がないユーザーがこのクラス読み込んでも
データ参照できないのね!!!
逆にwithoutだと権限関係なくデータもってこれるのね!!
(間違ってたらめっちゃごめんなさい)
もはや独り言と化してますが理解した
あとは普通に書き書きしてるだけかと思いきや謎のコンストラクタ発見
RestRequest
RestResponse
ちなみにコンストラクタとは・・・
http://wa3.i-3-i.info/word13646.html
このサイトが死ぬほど初心者むけだから自分のためにメモ
とりあえずリクエストデータは
RestRequest req = RestContext.request;
レスポンスデータは
RestResponse res = RestContext.response;
に入れてつかえばええんね!
次回!城乃内死す!
デュエルスタンバイ!!!!!
(そして唐突におわる)