制限回避いろは

 

 

Salesforceには諸々の制限がある。ここまで縛らなくても稼働するやろ!って位。よそ様のプラットフォームを借りてる以上仕方ないといえばそれで終了ですが、このご時世こんな厳しい制限で実装することになるとは、、、とても節約術の勉強になりますが、ライセンス費用とか考えるともうちょっとサービスして欲しいと思いますね。。。。

ガバナ制限:

Salesforceが独自に設定している制限。1トランザクション中にSOQLクエリ発行数が100回を超えるとLimitExceptionが発生し、処理は中断される。

ガバナ制限の回避方法:

トランザクション内で何度も呼ぶ値はstaticなクラス変数で呼び出しておいて呼び出す。Mapをフル活用すること。SOQL発行やtrigger.new,trigger.old呼び出しの際に以下のような記載だけで型をListからMapにかえる事ができる。2つのデータの突き合わせ時は1ループ内でMap.get(id)みたいな形で呼び出すと、forの中でクエリ発行するなんてこともしない上、ループ回数も減らせる

クエリ発行時:

Map<Account> accountMap = [SELECT Id FROM Account ];

Triggerで受け取ったデータ取得時:

trigger.newMap

trigger.oldMap 

 

ビューステート制限:

ビューステートの最大表示サイズが135kbyteを超えるとvisualforceページ上にエラー画面が発生(昔は128kbyteだったみたいですね)

ビューステートとは:

自分なりの記載をすると、フォームとコントローラで行き来するデータをbase64に変換して内部保持すること。ロールバック出来るように保持しているんだとか。

 

ビューステート制限は1画面に情報を詰め込みすぎないというのが第一。SFが提供してるキャッシュ機能をうまく使えば回避できそう。定義的にコントローラを作らなければ減らせるんだと。(なにがMVCダ。jsでええやん精神で)

 

100回て、、、、135kbyteて、、、いくらなんでも制限し過ぎでは、、突然100倍位にならないかなー(遠い目)。

Salesforceはじめました

こんばんは。Salesforce開発ってなんやねんってところからご紹介します。

Salesforce開発とは:

Salesforce社が提供するCRM(顧客管理ツール)内部の処理実装。以下の独自言語・独自機能を用いて追加機能の提供、自動化等を行っていく。

Apex:

Salesforceが提供するjavaベースのプログラミング言語。visualforce実行時のサーバーサイド処理のクラスをController,trigger発動時のサブクラスをHandlerと呼んだりする。

Trigger:

オブジェクトに対するクエリ発動時の動作設定。記法はapexと同じ。

Visualforce:

Salesforce独自のテンプレートエンジン。アノテーション等はなく、全て独自タグ記載。HTML, js, cssは読込可能

オブジェクト:

MySQLのテーブルと意味合いほぼ一緒。salesforceのデータストレージ格納時に型付きで格納する。オブジェクト以下には項目を500項目まで追加できる。

ワークフロールール:

Excelライクな関数を使用して項目更新・メール送信などを起動できる。Triggerと比較したメリットは、ノンプログラミングであること。

項目自動更新:

その名の通り、オブジェクトの項目を更新する設定。単独で利用するのではなく、ワークフロー発動時に設定する機能。

メールアラート:

メール送信をする機能。項目自動更新同様ワークフロー発動時に設定する機能

メールテンプレート:

メールアラート発動時に設定するテンプレート。記載方法はvisualfroceとほぼ同じ。テキストでの記載も選べる。