Memos About Salesforce

Salesforceにハマってたこと!

Typeクラス クラスのインスタンス 動的

レコードタイプ別に処理ってたまに

出てくるはず

そんな時にクラスのインスタンス化は

動的にしたい場合にタイプクラスが登場

タイプクラスによって、実現可能

今回、タイプクラスによって、

動的にクラスのインスタンス化を実現することを

共有します。

欲しけりゃくれてやる・・・。

探せ!

この世の全てをそこに置いてきた〜笑

目次

サンプルコード

取引先責任者には
RecorddTypeDevName:20パターンがあるとする
20パターンごとに更新処理と入力規則クラスがあるとする

更新の抽象クラス
public abstract class FieldUpdateAbstract{
    public abstract void fieldUpdate(sObject[] updateSobjectList)
}
入力規則の抽象クラス
public abstract class DataValidationAbstract{
    public abstract void dataValidation(sObject[] dataValidationSobjectList)
}
更新処理クラス
public with sharing class {RecorddTypeDevName}FieldUpdate extends FieldUpdateAbstract{
    public {RecorddTypeDevName}FieldUpdate(){
           // 更新処理
    }
}
入力規則クラス
public with sharing class {RecorddTypeDevName}DataValidation extends DataValidationAbstract{
    public {RecorddTypeDevName}FieldUpdate(){
           // 入力規則処理
    }
}
// 各レコードタイプの更新クラス名の語尾
String FUString= 'FieldUpdate';
// 各レコードタイプの入力規則クラス名の語尾
String DVString= 'DataValidation';
//取引先責任者のレコードタイプを取得する
for(RecordType  rcdType :[SELECT Id, DeveloperName, SobjectType FROM RecordType WHERE SobjectType = 'Contact']){
     //入力規則の抽象クラスをインスタンス化
    Type t = Type.forName(rcdType +DVString );
    //更新の抽象クラスをインスタンス化
    Type t = Type.forName(rcdType +FUString);
}