ワークフローハンズオン勉強会
株式会社鈴木商店 山田真也
2014/10/10
自己紹介
名前:山田真也
所属:株式会社鈴木商店
職種:営業(社内でただ一人)
前職:受託専門開発会社でPG
好きな機能:数式
興味のある機能:Heroku
SF認定デベロッパー持ってます♪
目次
● ワークフローとは○ ワークフローの作成
■ ワークフロールール■ アクションの作成
○ ワークフローとトリガーの違い
● ハンズオン○ ワークフローの作成○ トリガーの作成
ワークフローとは
● ワークフローを設定したオブジェクトのレコードに対して、様々なアクションを指定する事が可能 ※別のオブジェクトに対して操作はできない(トリガーで実現は可能)
● Apexを使わずにマウス&クリックで簡単に作成できる● ワークフローを利用する事で、業務の自動化や、確認漏れな
ど防ぐ事が可能となる
ワークフローで何ができるか?
● 商談で金額が1,000万以上の商談が発生した場合、上司にメールを自動送信する
● 商談受注時に完了予定日のXX日後にフォローを促すToDoを作成する。※失注時でも可能
● あるオブジェクトの特定項目を変更した、変更者を項目に残したい場合
● 外部システムに対して、特定の条件でデータを送り自動連係をする ※データローダでも同等の動きは実現可能
パターン化した業務をワークフローで実現できます!!
ワークフローとトリガーの違い
メリット デメリット
ワークフロー プログラム不要で簡単に作成可能すぐに作れる
実現できないロジックがある処理が多いと数式のコンパイルサイズ制限に引っかかる
トリガー 自由度が高く、難しいロジックも実現可能。 ※用はガッツがあれば何でも OK
Apexの知識が必要トリガー、テストを作成するので時間がかかるみんな大好きガバナに注意
どちらも利用する事は可能ですが、混在した場合は、可読性が困難になり、改修が複雑になりますので、意図しない場所でガバナ制限に引っかかったりします!!※実体験あり(笑)
メリット デメリット
ワークフロー プログラム不要で簡単に作成可能すぐに作れる
実現できないロジックがある処理が多いと数式のコンパイルサイズ制限に引っかかる
トリガー 自由度が高く、難しいロジックも実現可能 ※用はガッツがあれば何でも OK
Apexの知識が必要トリガー、テストを作成するので時間がかかるみんな大好きガバナに注意
ワークフローとトリガーの違い
どちらも利用する事は可能ですが、混在した場合は、可読性が困難になり、改修が複雑になりますので、意図しない場所でガバナ制限に引っかかったりします!!※実体験あり(笑)はやりの妖怪のせいにしたい所ですが、トリガー→ワークフロー→トリガーの順序で動きます
ワークフローの作成方法
1. ワークフローのルールを作成2. ルール適用時のアクションを作成3. 有効化
その1 ルールの作成
● ルールを作成するためには評価条件とルール条件を決める必要がある
● 評価条件とは
○ レコードがどのタイミングの時にルールを評価するかを決
める ● ルール条件とは
○ 条件が一致する場合 or 数式がtrueの時に実行するかを
決める
その1 ルールの作成
● ルールを作成するためには評価条件とルール条件を決める必要がある
● 評価条件とは
○ レコードがどのタイミングの時にルールを評価するかを決
める ● ルール条件とは
○ 条件が一致する場合 or 数式がtrueの時に実行するかを
決める
評価条件は以下3パターンから選択 作成されたとき 作成されたとき、および編集されるたび 作成されたとき、およびその後基準を満たすように編集されたとき
その1 ルールの作成
● ルールを作成するためには評価条件とルール条件を決める必要がある
● 評価条件とは
○ レコードがどのタイミングの時にルールを評価するかを決
める ● ルール条件とは
○ 条件が一致する場合 or 数式がtrueの時に実行するかを
決める
条件が一致する場合って何? ビューと同じような条件を指定する事が可能 数式がtrueの時って何? 数式項目と同じ関数を利用する事が可能
アクションの作成
● ルールを満たした時に実行する動作を指定○ メールアラート:特定の人にメールを送信○ ToDo:ToDoの割当が可能○ 項目自動更新:特定の項目に対して値を設定○ アウトバウンドメッセージ:外部連携を行う事が可能
※一つのルールに対して複数のアクションを書く事も可能です※メールアラートを利用する場合、事前にメールテンプレートを用意する
よく使うアクションは項目自動更新
演習 ワークフロー
● ルールの作成● アクションの作成● 有効化
1. 商談作成時項目自動更新を利用し、商談の完了予定日+30日後を請求予定日とする
2. 商談のフェーズが「Closed Lost」になった時、メールアラートを利用して自分にメールを送信する。 ※メールテンプレートはデフォルトのを利用する
※ワークフロー作成前に商談に請求予定日項目を追加する事
演習 トリガー
1. 請求オブジェクト(Bill)を作成し、商談フェーズが「Closed Won」の時、請求オブジェクトにレコードを作成する
ラベル API データ型
取引先 Account 参照関係(取引先)
請求金額 BillAmount 数値(18,0)
請求日 BillDate 日付
追記演習ワークフローの1が有効の場合、新規商談時にフェーズが「Closed Won」の場合、トリガーが二回されます。
/* 商談受注時に、請求オブジェクトにレコードを作成するトリガーを作成 */trigger BillCreate on Opportunity (after insert,after update) { //請求レコードの作成
List<Bill__c> BillLists = new List<Bill__c>(); //請求登録用リスト
Bill__c tmpBill; //一時保存用
//商談データは Trigger.new に配列で保持
for(Opportunity opp : Trigger.new){ if(opp.StageName == 'Closed Won'){ tmpBill = new Bill__c(); //初期化
tmpBill.Account__c = opp.AccountId; //商談取引先
tmpBill.BillAmount__c = opp.Amount; //商談金額
tmpBill.BillDate__c = opp.BillDate__c; //請求日
BillLists.add(tmpBill); } //ここでInsertを行っても動作は可能だが、一括取込みなどした場合ガバナがきます(笑)
//Apexではループ内でSOQLを書くのはお作法として禁止です。
} //Insertは最後の一回行う if(BillLists.size()>0){ insert BillLists; } }
どのタイミングで動かすか?
値のセットを行い、配列にデータをセット。
最後にSOQLの実行を行う。配列が空の場合は、請求に登録をしない
追記ワークフローを有効にしている場合、削除してから登録するか、請求オブジェクトに外部キーを追加してUpsertする必要がある
質問は懇親会で(笑)
ご清聴
ありがとうございました。
Recommended