소개
플랫폼이 50000 개 이상의 레코드를 처리해야하는 비즈니스 시나리오의 경우 배치 에이펙스가 구출됩니다. 배치 에이펙스는 여러 배치 또는 청크의 레코드의 비동기 처리를 용이하게하고 개발자에 대한 구현이 간단합니다.
배치 에이펙스 구현
배치 에이펙스는 데이터베이스를 구현합니다.배치 가능한 인터페이스. 인터페이스는 시작이(),실행()마침()배치 에이펙스 클래스에서 구현해야 방법.
- 실행 방법:레코드의 실제 처리는 실행 방법에서 수행됩니다.
- 마감 방법: 마침 방법은 이메일을 보내는 등의 사후 작업 처리 작업을 할 수 있습니다 또는 그것은 또한 체인 다른 배치 클래스에 사용할 수 있습니다.1176>
배치 정점 예약
방법 1:일정 정점 기능 사용
단계:
- 설정을 클릭하고 빠른 찾기 상자에서 에이펙스 클래스를 검색합니다.
- 상단 패널의 에이펙스 일정 버튼을 클릭합니다.
3. 일정 에이펙스 레코드 페이지에 정보를 입력하고 저장합니다. 이 클래스는 실행 배치(배치)메서드를 구현하는 스케줄러 클래스여야 합니다.
스케줄러 클래스의 코드 조각:
global class AccBatchScheduleClass implements Schedulable { global void execute(SchedulableContext ctx) { AccBatchApex batch = new AccBatchApex(); database.executebatch(batch); }}
방법 2:예약 가능한 에이펙스를 통해 배치 클래스 호출:
예약 가능한 에이펙스를 구현해야하는 에이펙스 클래스를 만들어야합니다. 예약 가능한 에이펙스 시스템을 구현해야합니다.실행 큐에 배치 정점을 대기열로 예약()방법. 시스템.일정()방법은 세 개의 인수 즉 작업 이름,일괄 처리 일정 및 일괄 처리 클래스 이름에 대한 크론 식을 기대하고있다.
견본 예약 가능 Apex:
일괄 정점 체인
의 시작과 함께 API 버전 29.0 이후 배치 클래스를 다른 배치 클래스에 연결할 수 있습니다. 배치 에이펙스의 체인 기본 배치 클래스의 실행이 완료되면 체인 배치 클래스의 실행을 킥스타트. 최대 5 개의 배치 작업만 서로 연결할 수 있습니다.
배치 에이펙스 예제
사용 사례:미국 국가 및 청구 상태 정보가 없는 모든 계정에 대해 청구 상태를 캘리포니아로 채웁니다.
솔루션 설계: 조직 그래서 배치 에이펙스를 작성하는 것은 최적의 솔루션입니다 누락 된 청구 상태 정보를 미끄러 져 할 필요가 50,000 개 이상의 기록을 보유하고 있습니다. 또한 트리거,워크 플로우,프로세스 빌더 등 따라서 이러한 솔루션은 비즈니스 요구 사항을 충족하기에 적합하지 않습니다.
기억해야 할 사항
- 최대 5 개의 배치 작업을 동시에 대기하거나 활성화할 수 있습니다.또는 조직의 사용자 라이선스 수에 200 을 곱한 값 중 더 큰 값입니다.
- 쿼리 로케이터 개체에서 최대 5 천만 개의 레코드를 반환 할 수 있습니다. 5 천만 개 이상의 레코드가 반환되면 배치 작업이 즉시 종료되고 실패로 표시됩니다.
- 일괄 처리 클래스의 시작 방법이 쿼리 로케이터를 반환하는 경우 실행 배치의 선택적 범위 매개 변수는 최대값 2,000 을 가질 수 있습니다.
- 일괄 처리 클래스의 시작 메서드가 반복 가능 값을 반환하는 경우 범위 매개 변수 값에 상한이 없습니다.
- 시작,실행 및 완료 메서드는 각각 최대 100 개의 콜아웃을 구현할 수 있습니다. 배치 에이펙스에서 콜아웃을 활성화하기 위한 허용 콜아웃을 구현합니다.
- 미래로 선언 된 메서드는 배치 에이펙스 클래스에서 호출 할 수 없습니다.
- 클래스의 모든 메서드는 전역 또는 공용 메서드로 정의해야 합니다.하위 쿼리를 통해 관련 레코드를 포함하지 않는 쿼리 로케이터 개체를 반환하는 경우 일괄 처리 작업이 더 빠르게 실행됩니다. 쿼리 로케이터에서 관계 하위 쿼리를 피하면 더 빠른 청크 구현을 사용하여 일괄 작업을 실행할 수 있습니다.
- 일괄 작업을 빠르게 실행하려면 웹 서비스 설명선 시간을 최소화하고 일괄 처리 코드에 사용되는 쿼리를 조정합니다.10,000 개의 비동기 작업 레코드에 대해 내부 사용을 위한 비동기 작업 레코드 유형을 만듭니다. 모든 비동기 작업 레코드를 쿼리할 때는 공유 재계산을 위해 작업 유형
- 을 사용하여 일괄 처리 작업 형식의 레코드를 필터링하는 것이 좋습니다. 이 과정은 공유가 정확하고 완전하다는 것을 보증합니다.
- 테스트를 계속 하기 전에 완료 되도록 테스트 메서드 시작 테스트 및 중지 테스트 실행 배치 메서드를 사용 합니다.