レコードタイプ別に処理ってたまに
出てくるはず
そんな時にクラスのインスタンス化は
動的にしたい場合にタイプクラスが登場
タイプクラスによって、実現可能
今回、タイプクラスによって、
動的にクラスのインスタンス化を実現することを
共有します。
欲しけりゃくれてやる・・・。
探せ!
この世の全てをそこに置いてきた〜笑
目次
サンプルコード
取引先責任者には
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); }