2012-12-20

インスタンスの動的生成

Apex(force.com)では以下のようにTypeクラスを使用して動的にインスタンスを生成できる。

SObject obj = (SObject)Type.forName('Account').newInstance();
obj.put('name','TEST');
insert obj;

これを利用してバッチを動的に起動することも可能

Database.Batchable<sObject> batch =
 (Database.Batchable<sObject>)Type.forName('TestBatch').newInstance();
Database.executeBatch(batch);

スケジュールもこんな感じで書ける

Schedulable sch = (Schedulable)Type.forName('TestBatchSch').newInstance();
system.schedule('TestSchedule', '48 29 1 20 12 ? 2012',sch);

問題はnewInstanceメソッドは引数がないので、コンストラクタに引数がないバッチ、スケジュールしか汎用化できないっぽいこと。

せめてObjectのリストを渡していければなーと思うのだが、、、。

このエントリーをはてなブックマークに追加