予定作成時・編集時に呼び出すApexクラスを設定

Apexを作成すると予定作成時・予定編集時・予定削除時に組織独自のロジックを動作させることが可能です。
Apex実装例を参考に、CAL_TransactionInterfaceインタフェースを継承したApexクラスを作成してください。

Apexクラスの作成

前提条件

作成するクラスは、以下の条件を満たしている必要があります。この条件を満たしていない場合、カレンダーは動作を保証しません。

  • CAL_TransactionInterfaceインタフェースを実装していること。
  • CAL_TransactionInterfaceインタフェースの実装ルールに基づいていること。
  • アクセス装飾子はglobalであること。
  • 共有モードはwith sharing, without sharingどちらでも構いません。
  • 引数のないコンストラクタが定義されていること(もし引数をもつコンストラクタが定義されていたとしても利用されません)。

CAL_TransactionInterfaceインターフェースの詳細

名前空間

TSMNTCLB

runメソッド

パラメーターに処理を行う行動(Event), 操作内容, 招集ユーザのIdリスト, 招集施設のIdリストが渡されます。

戻り値は設定されていないのでレコードの操作はrunメソッド内で行ってください。

※ 何らかの理由により処理を中止する場合は例外をスローしてください。カレンダーは処理を中止し、画面には例外に設定したメッセージが表示します。

※ SOQLのコール回数等のガバナ制限の影響を受けることに留意してください。SOQLのコール回数が極端に多い場合等は、カレンダーは動作を保証しません。

シグニチャ

void run(Map<String, Object> values)

パラメータ

values

型: Map<String, Object>

values は run 実行時の状態を保持しています。以下のキーが保持されています。

キー
ev

操作対象の行動レコード

※Idやmitocoで更新する項目のみ値が挿入されています。
 更新しないデータについては項目が挿入されていませんので、必要な場合はSOQL等で取得お願いします。

Event
operation

操作区分

各操作のデータベースに反映する前後で値が変わります。

  • before create(予定作成 データベース反映前)
  • after create(予定作成 データベース反映後)
  • before edit(予定編集 データベース反映前)
  • after edit(予定編集 データベース反映後)
  • before delete(予定削除 データベース反映前)
  • after delete(予定削除 データベース反映後)
String
inviteUsers

招集ユーザのIdリスト

List<Id>
inviteResources招集施設のIdリスト
オブジェクトは施設情報オブジェクト(TSMNTCLB__CAL_FaclInfo__c)になります
List<Id>

戻り値

void

Apex実装例

TransactionSample
global with sharing class TransactionSample implements TSMNTCLB.CAL_TransactionInterface{
    public void run(Map<String, Object> values){
        Event ev = (Event)values.get('ev');
        String operation = (String)values.get('operation');
        
        // 件名に「Apexクラス呼び出しテスト」と入力されていた場合にエラーを表示する
        if(ev.Subject == 'Apexクラス呼び出しテスト'){
            throw new CustomException('入力エラーがあります');
        }

        // after createならば必要なデータを取得する
        if (operation == 'after create') {
            Event newEv = [SELECT Id, Subject, Location FROM Event WHERE Id =: ev.Id];
            // 処理を記述
        }
    }

    public class CustomException extends Exception{}
}

設定方法

  1. Salesforceの設定画面 管理 > カスタム設定 > mitoco カレンダー設定 の Manage をクリックします。
  2. デフォルトの組織レベルの値 の [新規] をクリックします (すでに設定したことがあるときは [編集] をクリック)
  3. "予定保存時Apexクラス"の項目に作成したApexクラスを入力します。組織に名前空間が設定されている場合は、【名前空間名】.【クラス名】 の形式で指定してください(例:MyNamespace.TransactionSample)。
    Apexクラス呼び出しを停止する場合は入力内容を削除してください。
  4. [保存]をクリックします。