2012-06-17 3 views
1

실패한 배치에서 레코드를 가져 오는 방법이 있습니까? AsyncApexJob은 나에게 failures- 수 있지만 정말보다 더 아무것도 ... 내가 기본 기능을 사용하여 원하는 모든 세부 사항을 얻을 수있는 방법이 있다고 생각하지 않습니다실패한 일괄 처리 레코드를 얻는 방법?

http://www.salesforce.com/us/developer/docs/object_reference/index_Left.htm#CSHID=sforce_api_objects_asyncapexjob.htm|StartTopic=Content%2Fsforce_api_objects_asyncapexjob.htm|SkinName=webhelp

답변

2

을 제공합니다. 이 문제를 해결하기 위해 일괄 처리 내에서 발생하는 오류를 기록 할 수있는 일괄 처리 상태 개체를 만들었습니다. 기본적으로 try/catch 블록에서 일괄 처리 코드를 래핑하고 catch 내에서 오류 세부 정보가있는 새로운 일괄 처리 상태 레코드를 추가합니다.

global void execute(Database.BatchableContext BC, List<sObject> scope) { 

    List<Batch_Status__c> BatchStatuses = new List<Batch_Status__c>(); 

    try { 
     // ... batch execute code ... 
    } 
    catch(Exception e) { 
     // exception logging 
     Batch_Status__c BatchStatus = new Batch_Status__c(); 

     // ... add exception detail to BatchStatus ... 
     BatchStatuses.add(BatchStatus); 
    } 

    insert BatchStatuses; 
} 
+0

나는 그랬다. Matt, 도와 주신 모든 분들께 다시 한번 감사드립니다! – user11235813

+0

side note : 위의 코드는'execute()'호출이 catch 가능한 예외를 가지고있는 한 잘 작동합니다. 한계 예외는'finish()'에서만 확인할 수 있습니다. – cropredy