2012-02-03 21 views
2

私はscheduledInsertというスケジューラークラスを作成しました。このクラスのスケジューラ・ジョブは、コードSalesforceシステムのスケジュールされたジョブが実行されていません

public class TestInsertTaskScheduler 
{ 
    public static testMethod void testInsertTaskScheduler() 
    { 
    scheduledInsert i = new scheduledInsert(); 
    Datetime now = Datetime.now(); 
    System.debug ('Datetime'+now); 
    String sch = '0 1 * * * ?'; // scheduled to execute every minute 
    system.schedule('Insert Task S3', sch, i); 
    System.debug ('After schedule'); 
    } 
} 

予定のクラスコード以下に登録されている監視スケジュールされたジョブの下に表示されません。このジョブ(挿入タスクS3)

global class scheduledInsert implements Schedulable 
{ 
    global void execute(SchedulableContext SC) 
    { 
    System.debug('scheduled insert'); 
    } 
} 

です。

また、ジョブはまったく実行されません。

私が作っている間違いは何ですか?

答えて

4

あなたはtestmethodを使用しているため、私はかなり確信しています。 testmethodを使用すると、Salesforceデータベースに何もコミットされません。したがって、ジョブがScheduled Jobsセクションに表示されないことは意味があります。 testmethodキーワードを削除して再度実行し、表示されるかどうか確認してください。

+0

ありがとう、 私は現在、テストメソッドで書いたコードをどのように呼び出すのですか?これは、ジョブを登録するコードです。私は別のクラスでそれを書こうとし、テストメソッドからその関数を呼び出すことを試みた。それは動作しませんでした(私は同じことを感じた)。唯一の他の方法は、私はトリガーから関数を呼び出すと思うことができます。しかし、私はそれを再登録し続けたくありません。また、トリガは本当に明白ではありません について Sameer – user179056

+0

トリガからregisterjob()を呼び出しました。登録されたジョブは、モニタ - >スケジュールされたジョブの下で正しく表示されるようになりました。しかし、トリガからの呼び出しは理想的ではありません。他の方法はありますか? – user179056

+0

[Trigger](http://www.salesforce.com/us/developer/docs/apexcode/index_CSH.htm#apex_triggers.htm)からスケジューリングコードを呼び出す必要はありません。代わりに[VisualforceページとApexコントローラ](http://www.salesforce.com/us/developer/docs/pages/index_CSH.htm#pages_controller.htm)を使用することができます。または、Execute Anonymousからコードを実行することもできます([Developer Console](http://blogs.developerforce.com/developer-relations/2011/09/new-developer-console-in-winter-12.html)で利用可能)または[Force.com IDE](http://wiki.developerforce.com/page/Force.com_IDE_Installation)を参照してください)。 –

関連する問題