APEX 튜토리얼: Apex 프로그래밍 클래스 및 코딩 예제

Salesforce의 Apex란 무엇입니까?

Apex Salesforce에서 소프트웨어 서비스(SaaS) 및 고객 관계 관리(CRM)를 구축하기 위해 개발한 객체 지향적이고 강력한 형식의 프로그래밍 언어입니다. Apex는 백엔드 데이터베이스 지원 및 클라이언트-서버 인터페이스를 제공하여 개발자가 타사 SaaS 애플리케이션을 만들고 시스템 이벤트에 비즈니스 로직을 추가하는 데 도움이 됩니다.

Apex는 개발자가 버튼 클릭, 관련 레코드 업데이트 및 Visualforce 페이지와 같은 시스템 이벤트에 비즈니스 로직을 추가하는 데 도움이 됩니다. Apex의 구문은 다음과 유사합니다. Java. Salesforce에 등록 CRM 작동 방식을 알아보려면

Apex 프로그래밍 언어의 특징

Salesforce Apex의 중요한 기능은 다음과 같습니다.

  • Apex는 대소문자를 구분하지 않는 언어입니다.
  • apex를 사용하여 sObject 레코드에서 INSERT, UPDATE, UPSERT, DELETE와 같은 DML 작업을 수행할 수 있습니다.
  • apex에서는 SOQL(salesforce 개체 쿼리 언어) 및 SOSL(salesforce 개체 검색 언어)을 사용하여 sObject 레코드를 쿼리할 수 있습니다.
  • 생성할 수 있습니다. 단위 테스트 그리고 이를 실행하여 확인합니다. 코드 커버리지 정점의 코드 효율성.
  • Apex는 다중 테넌트 환경에서 실행됩니다. 세일즈 포스 사용자가 공유 리소스를 제어하지 못하도록 하는 일부 관리자 제한을 정의했습니다. Salesforce 총재 제한을 초과하는 모든 코드는 실패하고 오류가 표시됩니다.
  • Salesforce 개체는 apex에서 데이터 유형으로 사용될 수 있습니다. 예를 들어 -
    Account acc = new Account();

    ,여기서 계정은 표준 Salesforce 개체입니다.

  • Apex는 모든 Salesforce 릴리스마다 자동으로 업그레이드됩니다.

개발자는 언제 Apex를 선택해야 할까요?

Apex 코드는 비즈니스 시나리오가 너무 복잡하여 Salesforce에서 제공하는 사전 구축된 기능을 사용하여 구현할 수 없는 경우에만 작성해야 합니다.

정점 코드를 작성해야 하는 몇 가지 시나리오는 다음과 같습니다.

  • Salesforce를 다른 응용 프로그램과 통합하는 웹 서비스를 만듭니다.
  • sobject에 대한 사용자 정의 유효성 검사를 구현합니다.
  • DML 작업이 수행될 때 사용자 지정 정점 논리를 실행합니다.
  • 기존 워크플로 흐름 및 프로세스 빌더 기능을 사용하여 구현할 수 없는 기능을 구현합니다.
  • 설정하기 이메일 서비스, Apex 코드를 사용하여 이메일의 내용, 헤더 및 첨부 파일을 처리해야 합니다.

Apex의 작동 구조

이제 이 Apex 튜토리얼에서는 Apex의 작업 구조에 대해 알아봅니다.

정점 코드에 대한 작업 흐름은 다음과 같습니다.

  • 개발자 작업: 개발자가 작성한 모든 apex 코드는 개발자가 코드를 플랫폼에 저장할 때 apex 런타임 해석기가 이해할 수 있는 명령 세트로 컴파일되며 이러한 지침은 메타데이터로 플랫폼에 저장됩니다.
  • 최종 사용자 작업: 사용자 이벤트가 apex 코드를 실행할 때 플랫폼 서버는 메타데이터에서 컴파일된 지침을 가져와 결과를 반환하기 전에 apex 해석기를 통해 실행합니다.
Apex의 작동 구조
Apex의 작동 구조

Apex 구문

변수 선언

Apex는 강력한 유형의 언어이므로 Apex에서 데이터 유형을 사용하여 변수를 선언하는 것이 필수입니다.

예 :

contact con = new contact(); 

여기서 con 변수는 contact 데이터 유형으로 선언됩니다.

SOQL 쿼리

SOQL은 Salesforce 개체 쿼리 언어를 나타냅니다. SOQL은 Salesforce 데이터베이스에서 sObject 레코드를 가져오는 데 사용됩니다. 예를 들어-

Account acc = [select id, name from Account Limit 1]; 

위 쿼리는 Salesforce 데이터베이스에서 계정 레코드를 가져옵니다.

루프 문

루프 문은 목록의 레코드를 반복하는 데 사용됩니다. 반복 횟수는 목록의 레코드 수와 같습니다. 예를 들어:

list<Account>listOfAccounts = [select id, name from account limit 100];
// iteration over the list of accounts
for(Account acc : listOfAccounts){
	//your logic
}

위의 코드 조각에서 listOfAccounts는 목록 데이터 유형의 변수입니다.

흐름 제어 문

흐름 제어 문은 일부 조건에 따라 코드의 일부 줄을 실행하려는 경우 유용합니다.

예 :

list<Account>listOfAccounts = [select id, name from account limit 100];
// execute the logic if the size of the account list is greater than zero
if(listOfAccounts.size() >0){
	//your logic
}

위의 코드 조각은 데이터베이스에서 계정 레코드를 쿼리하고 목록 크기를 확인하는 것입니다.

DML 문

DML은 데이터 조작 언어를 의미합니다. DML 문은 Salesforce 데이터베이스의 데이터를 조작하는 데 사용됩니다. 예를 들어 -

Account acc = new Account(Name = ‘ Test Account’);
Insert acc; //DML statement to create account record.

Apex 개발 환경

이제 이 Apex 프로그래밍 튜토리얼에서는 Apex 개발 환경에 대해 알아봅니다.

Apex 코드는 Salesforce의 Sandbox 및 개발자 에디션에서 개발할 수 있습니다.

샌드박스 환경에서 코드를 개발한 다음 프로덕션 환경에 배포하는 것이 가장 좋습니다.

Apex 개발 환경

Apex 코드 개발 도구: 다음은 Salesforce의 모든 에디션에서 Apex 코드를 개발하는 데 사용할 수 있는 세 가지 도구입니다.

  • Force.com 개발자 콘솔
  • Force.com IDE
  • Salesforce 사용자 인터페이스의 코드 편집기

Apex의 데이터 유형

apex에서 지원하는 데이터 유형은 다음과 같습니다.

원시적 인

정수, Double, Long, Date, Date Time, String, ID 및 Boolean은 기본 데이터 유형으로 간주됩니다. 모든 기본 데이터 유형은 참조가 아닌 값으로 전달됩니다.

Collections

Apex에서는 세 가지 유형의 컬렉션을 사용할 수 있습니다.

  • 목록: 인덱스를 기반으로 하는 기본 요소, sObject, 컬렉션 또는 Apex 개체의 순서가 지정된 컬렉션입니다.
  • 세트: 고유한 프리미티브의 순서가 지정되지 않은 컬렉션입니다.
  • 맵: 기본 요소, sObject, 컬렉션 또는 Apex 개체일 수 있는 단일 값에 매핑되는 고유한 기본 키 컬렉션입니다.

객체

이는 Salesforce의 특수 데이터 유형입니다. 의 테이블과 비슷합니다. SQL SQL의 열과 유사한 필드를 포함합니다.

열거 형

Enum은 지정된 식별자의 유한한 집합 중 하나의 값을 저장하는 추상 데이터 유형입니다.

클래스

사물

Apex에서 지원되는 모든 데이터 유형을 나타냅니다.

인터페이스

Apex 액세스 지정자

apex가 지원하는 액세스 지정자는 다음과 같습니다.

공공 영역

이 액세스 지정자는 네임스페이스 내 Apex에서 사용할 클래스, 메서드, 변수에 대한 액세스를 제공합니다.

프라이빗 투어

이 액세스 지정자는 로컬로 사용되거나 코드 섹션 내에서 정의되는 클래스, 메서드, 변수에 대한 액세스를 제공합니다. 정의된 액세스 지정자가 없는 모든 기술, 변수에는 기본 액세스 지정자가 private입니다.

보호

이 액세스 지정자는 Apex 클래스 정의 내의 모든 내부 클래스에서 사용할 변수인 메서드에 대한 액세스를 제공합니다.

글로벌

이 액세스 지정자는 네임스페이스 내부 및 네임스페이스 외부의 Apex에서 사용할 클래스, 메서드, 변수에 대한 액세스를 제공합니다. 필요할 때까지 전역 키워드를 사용하지 않는 것이 가장 좋습니다.

Apex의 키워드

공유와 함께

이 키워드를 사용하여 클래스를 정의하면 현재 사용자에게 적용되는 모든 공유 규칙이 적용되고, 이 키워드가 없으면 코드가 시스템 컨텍스트에서 실행됩니다.

예를 들면 :

public with sharing class MyApexClass{
// sharing rules enforced when code in this class execute
}

공유하지 않고

이 키워드를 사용하여 클래스를 정의하면 현재 사용자에게 적용되는 모든 공유 규칙이 적용되지 않습니다.

예를 들면 :

public without sharing class MyApexClass{
// sharing rules is not enforced when code in this class execute
}

정적인

static 키워드로 정의된 변수인 Method는 한 번 초기화되고 클래스와 연결됩니다. 정적 변수, 메서드는 클래스의 인스턴스를 만들지 않고도 클래스 이름으로 직접 호출할 수 있습니다.

final 키워드로 정의된 상수 Method는 재정의될 수 없습니다. 예를 들어:

public class myCls {
static final Integer INT_CONST = 10;
}

이 INT_CONST 변수의 값을 재정의하려고 하면 예외가 발생합니다. System.FinalException: Final 변수가 이미 초기화되었습니다.

반품

이 키워드는 메소드에서 값을 반환합니다. 예를 들어:

public String getName() {
return  'Test' ;
}

null로

이는 null 상수를 정의하며 변수에 할당될 수 있습니다. 예를 들어

 Boolean b = null;

온라인

클래스가 가상 키워드로 정의되면 확장 및 재정의가 가능합니다.

추상

클래스가 abstract 키워드로 정의된 경우 abstract 키워드가 있는 메서드가 하나 이상 포함되어야 하며 해당 메서드에는 시그니처만 있어야 합니다.

예를 들어

public abstract class MyAbstrtactClass {
abstract Integer myAbstractMethod1();
}

Apex 문자열

문자열은 문자 제한이 없는 문자 집합입니다. 예를 들어:

String name = 'Test';

Salesforce의 String 클래스에서 제공하는 내장 메서드는 여러 가지가 있습니다. 다음은 자주 사용되는 몇 가지 함수입니다.

약어(maxWidth)

이 메서드는 문자열을 지정된 길이로 자르고 주어진 문자열의 길이가 지정된 길이보다 길면 반환합니다. 그렇지 않으면 원래 문자열을 반환합니다. maxWidth 변수의 값이 4보다 작으면 이 메서드는 런타임 예외를 반환합니다. – System.StringException: 최소 약어 너비는 4입니다.

예 :

String s = 'Hello World';
String s2 = s.abbreviate(8);
System.debug('s2'+s2); //Hello...

자본화 ()

이 메서드는 문자열의 첫 글자를 제목 케이스로 변환하여 반환합니다.

예 :

String s = 'hello;
String s2 = s.capitalize();
System.assertEquals('Hello', s2);

포함(하위 문자열)

이 메서드는 메서드를 호출하는 문자열에 지정된 하위 문자열이 포함된 경우 true를 반환합니다.

String name1 = 'test1';
String name2 = 'test2';
Boolean flag = name.contains(name2);
System.debug('flag::',+flag); //true

같음(stringOrId)

이 메서드는 전달된 매개 변수가 null이 아니고 메서드를 호출하는 문자열과 동일한 이진 문자 시퀀스를 나타내는 경우 true를 반환합니다.

ID 값을 비교하는 동안 ID 길이가 동일하지 않을 수 있습니다. 예를 들어 15자의 ID를 나타내는 문자열을 18자의 ID를 나타내는 객체와 비교하면 이 메서드는 true를 반환합니다. 예를 들어:

Id idValue15 = '001D000000Ju1zH';
Id idValue18 = '001D000000Ju1zHIAR';
Boolean result4 = stringValue15.equals(IdValue18);
System.debug('result4', +result4); //true

위의 예에서 equals 메소드는 15자의 객체 ID를 18자의 객체 ID와 비교하고 두 ID가 모두 동일한 이진 시퀀스를 나타내는 경우 true를 반환합니다.

대소문자를 구분하여 비교하려면 이 방법을 사용하십시오.

escapeSingleQuotes(stringToEscape)

이 메서드는 문자열의 작은따옴표 앞에 이스케이프 문자(\)를 추가하고 이를 반환합니다. 이 방법은 동적 SOQL 쿼리를 생성하는 동안 SOQL 주입을 방지합니다. 이 방법을 사용하면 모든 작은따옴표가 데이터베이스 명령 대신 묶는 문자열로 간주됩니다.

예 :

String s = 'Hello Tom';
system.debug(s); // Outputs 'Hello Tom'
String escapedStr = String.escapeSingleQuotes(s);
// Outputs \'Hello Tom\'

제거(하위 문자열)

이 메서드는 해당 메서드를 호출하는 문자열에서 언급된 하위 문자열을 모두 제거하고 결과 문자열을 반환합니다.

예를 들어

String s1 = 'Salesforce and force.com';
String s2 = s1.remove('force');
System.debug( 's2'+ s2);// 'Sales and .com'

하위 문자열(startIndex)

이 메소드는 startIndex의 문자부터 시작하여 문자열의 마지막 부분까지 확장되는 하위 문자열을 반환합니다.

예를 들면 :

String s1 = 'hamburger';
String s2 = s1.substring(3);
System.debug('s2'+s2); //burger

역전()

이 메서드는 문자열의 모든 문자를 반전하여 반환합니다. 예를 들어:

String s = 'Hello';
String s2 = s.reverse();
System.debug('s2::::'+s2);// olleH  // Hello

Trim(): 이 메서드는 문자열에서 선행 공백을 모두 제거하고 반환합니다.

valueOf(toConvert)

이 메소드는 객체에 전달된 문자열 표현을 반환합니다.

Apex 거버너 제한

Apex Governor 제한은 Apex 런타임 엔진에서 적용하는 제한으로, 모든 활주로 Apex 코드와 프로세스가 공유 리소스를 제어하지 않고 멀티테넌트 환경에서 다른 사용자의 처리를 위반하지 않도록 보장합니다. 이러한 제한은 각 Apex 트랜잭션에 대해 검증됩니다. 다음은 Salesforce에서 각 Apex 트랜잭션에 대해 정의한 Governor 제한입니다.

상품 설명 한도
동기 트랜잭션에서 수행할 수 있는 SOQL 쿼리 100
비동기 트랜잭션에서 수행할 수 있는 SOQL 쿼리 200
SOQL 쿼리로 검색할 수 있는 레코드 50000
Database.getQueryLocator로 검색할 수 있는 레코드 10000
Apex 트랜잭션에서 수행할 수 있는 SOSL 쿼리 20
SOSL 쿼리로 검색할 수 있는 레코드 2000
Apex 트랜잭션에서 수행할 수 있는 DML 문 150
DML 문, Approval.process 또는 Database.emptyRecycleBin의 결과로 처리될 수 있는 레코드입니다. 10000
Apex 트랜잭션에서 수행할 수 있는 콜아웃입니다. 100
Apex 트랜잭션에서 수행되는 모든 콜아웃에 대한 누적 시간 초과 제한 120 초
System.enqueueJob을 사용하여 대기열에 추가할 수 있는 Apex 작업에 대한 제한 50
각 Apex 트랜잭션의 실행 시간 제한 10 분
Apex 클래스 및 트리거에서 사용할 수 있는 캐릭터 제한 1 만
동기 트랜잭션에 대한 CPU 시간 제한 10,000 밀리 초
비동기 트랜잭션에 대한 CPU 시간 제한 60,000 밀리 초

Apex 게터 및 세터

Apex 속성은 apex 변수와 유사합니다. Apex 속성에는 Getter와 Setter가 필요합니다. Getter 및 Setter는 속성 값에 액세스하거나 변경하기 전에 코드를 실행하는 데 사용할 수 있습니다. get 접근자의 코드는 속성 값을 읽을 때 실행됩니다. set 접근자의 코드는 속성 값이 변경될 때 실행됩니다. get 접근자가 있는 모든 속성은 읽기 전용으로 간주되고, set 접근자가 있는 모든 속성은 get 및 set 접근자가 모두 있는 모든 속성을 쓰기만 하는 것으로 간주되며 읽기-쓰기로 간주됩니다. Apex 속성의 구문:

public class myApexClass {
// Property declaration
	access_modifierreturn_typeproperty_name {
	get {
			//code  
		}
		set{
			//code
		}
	}

여기서 access_modifier는 속성의 액세스 한정자입니다. return_type은 속성의 dataType입니다. property_name은 속성의 이름입니다.

다음은 get 및 set 접근자가 모두 있는 apex 속성의 예입니다.

public class myApex{
	public String name{
		get{ return name;}
		set{ name = 'Test';}
	}
}

여기서 속성 이름은 name이고 공용 속성이며 문자열 dataType을 반환합니다.

get 및 set 블록에 일부 코드가 있어야 하는 것은 필수가 아닙니다. 자동 속성을 정의하려면 이러한 블록을 비워 둘 수 있습니다. 예를 들어:

public double MyReadWriteProp{ get; set; } 

Get 및 set 접근자는 해당 액세스 한정자를 사용하여 정의할 수도 있습니다. 접근자가 수정자로 정의된 경우 해당 속성에 대한 액세스 수정자를 재정의합니다. 예를 들어:

public String name{private get; set;}// name is private for read and public to write.

에이펙스 클래스

Apex 클래스는 개체가 생성되는 청사진 또는 템플릿입니다. 객체는 클래스의 인스턴스입니다.

Salesforce에서 Apex 클래스를 생성하는 방법에는 세 가지가 있습니다.

개발자 콘솔

Force.com IDE

Apex 클래스 세부 정보 페이지.

apex에서는 최상위 클래스라고도 하는 외부 클래스를 정의할 수 있고, 내부 클래스라는 외부 클래스 내에 클래스를 정의할 수도 있습니다.

외부 클래스 선언에는 global 또는 public과 같은 접근 한정자를 반드시 사용해야 합니다.

내부 클래스 선언에는 액세스 수정자를 사용할 필요가 없습니다.

Apex 클래스는 class 키워드 뒤에 클래스 이름을 사용하여 정의됩니다.

Extends 키워드는 Apex 클래스로 기존 클래스를 확장하는 데 사용되며, Implements 키워드는 Apex 클래스로 인터페이스를 구현하는 데 사용됩니다.

Salesforce Apex는 다중 상속을 지원하지 않습니다. apex 클래스는 기존 apex 클래스 하나만 확장할 수 있지만 여러 인터페이스를 구현할 수 있습니다.

Apex 클래스에는 사용자 정의 생성자가 포함될 수 있으며, 사용자 정의 생성자를 사용할 수 없는 경우 기본 생성자가 사용됩니다. 생성자의 코드는 클래스의 인스턴스가 생성될 때 실행됩니다.

Apex 클래스 예의 구문:

public class myApexClass{
// variable declaration
//constructor
	public myApexClass{
	}
//methods declaration
}

new 키워드는 apex 클래스의 인스턴스를 생성하는 데 사용됩니다. 다음은 apex 클래스의 인스턴스를 생성하는 구문입니다.

myApexClass obj = new myApexClass();

에이펙스 트리거

Apex 트리거를 사용하면 DML 작업이 수행되기 전과 후에 사용자 정의 Apex를 실행할 수 있습니다.

Apex는 다음 두 가지 유형의 트리거를 지원합니다.

트리거 전: 이 트리거는 레코드가 데이터베이스에 저장되기 전에 필드 값을 확인하고 업데이트하는 데 사용됩니다.

트리거 이후: 이 트리거는 레코드가 데이터베이스에 커밋된 후 시스템에서 설정한 필드(레코드 ID, LastModifiedDate 필드)에 액세스하는 데 사용됩니다. 이러한 필드 값은 다른 레코드를 수정하는 데 사용될 수 있습니다. 트리거 이후에 ​​실행되는 레코드는 읽기 전용입니다.

부피가 큰 트리거를 작성하는 것이 가장 좋습니다. 대용량 트리거는 단일 레코드뿐만 아니라 여러 레코드를 한 번에 처리할 수 있습니다.

Apex 트리거 구문:

trigger TriggerName on ObjectName (trigger_events) {
	//Code_block
 }

여기서 TriggerName은 트리거의 이름이고, ObjectName은 트리거가 기록될 개체의 이름이며, Trigger_events는 쉼표로 구분된 이벤트 목록입니다.

Apex 트리거에서 지원하는 이벤트는 다음과 같습니다. 삽입 전, 업데이트 전, 삭제 전, 삽입 후, 업데이트 후, 삭제 후, 삭제 취소 후.

Apex 트리거에서는 정적 키워드를 사용할 수 없습니다. 내부 클래스에 적용 가능한 모든 키워드를 Apex 트리거에서 사용할 수 있습니다.

런타임 컨텍스트를 반환하는 모든 트리거에는 암시적 변수 정의가 있습니다. 이러한 변수는 시스템에서 정의됩니다. 트리거 클래스. 이러한 변수를 컨텍스트 변수라고 합니다. 아래 스크린샷은 apex 트리거에서 지원되는 컨텍스트 변수를 보여줍니다.

에이펙스 트리거

에이펙스 트리거

정점 트리거의 컨텍스트 변수에 대한 고려 사항은 다음과 같습니다.

  • DML 작업에서 trigger.new 및 trigger.old를 사용하지 마세요.
  • Trigger.new는 삭제할 수 없습니다.
  • Trigger.new는 읽기 전용입니다.
  • Trigger.new는 트리거 이전에만 동일한 객체의 필드 값을 변경하는 데 사용할 수 있습니다.

아래 스크린샷에는 다양한 트리거 이벤트의 특정 작업에 대한 고려 사항이 나열되어 있습니다.

에이펙스 트리거

에이펙스 트리거

Apex의 배치 클래스

Salesforce의 Batch 클래스는 정상적으로 처리하면 Apex Governor 제한을 초과하는 많은 수의 레코드를 처리하는 데 사용됩니다. Batch 클래스는 코드를 비동기적으로 실행합니다.

배치 클래스의 장점은 다음과 같습니다.

  • Batch 클래스는 데이터를 청크 단위로 처리하며, 청크 처리에 실패하면 성공적으로 처리된 청크는 모두 롤백되지 않습니다.
  • 배치 클래스의 모든 데이터 청크는 코드가 거버너 실행 제한 내에서 실행되도록 보장하는 새로운 거버너 제한 세트로 처리됩니다.
  • 데이터 베이스. 배치 클래스로 사용하려면 배치 가능한 인터페이스를 Apex 클래스로 구현해야 합니다. 배치 클래스에서 구현해야 하는 세 가지 메서드를 제공합니다.

다음은 Database.Batchable 인터페이스에서 제공하는 세 가지 방법입니다.

1.시작()

이 메서드는 인터페이스 메서드 execute에 의해 처리될 레코드 또는 객체의 범위를 생성합니다. 배치 실행 중에 한 번만 호출됩니다. 이 메서드는 Database.QueryLocator 객체 또는 Iterable을 반환합니다. Database.QueryLocator 객체를 사용하여 SQL 쿼리에서 검색한 레코드 수는 50천만 개이지만 iterable을 사용하면 SQL 쿼리에서 검색할 수 있는 총 레코드 수는 50000개에 불과합니다. Iterable은 배치 클래스에 대한 복잡한 범위를 생성하는 데 사용됩니다.

시작 방법의 구문:

global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {}

2.실행()

이 방법은 각 데이터 청크를 처리하는 데 사용됩니다. 각 레코드 청크에 대해 실행 메소드가 호출됩니다. 실행을 위한 기본 배치 크기는 200개 레코드입니다. Execute 메소드는 두 개의 인수를 취합니다:

Database.BatchableContext 객체에 대한 참조,

List와 같은 sObject 목록 또는 매개변수화된 유형의 목록입니다. 실행 메소드의 구문:

global void execute(Database.BatchableContext BC, list<P>){}

3.마무리()

finish 메서드는 배치 클래스 실행 중에 한 번 호출됩니다. 사후 처리 작업은 finish 메서드에서 수행할 수 있습니다. 예를 들어, 확인 이메일을 보내는 경우입니다. 이 메서드는 모든 배치가 처리될 때 호출됩니다. Finish 메서드의 구문:

global void finish(Database.BatchableContext BC){}

Database.BatchableContext 객체

데이터베이스의 각 메소드. Batchable 인터페이스에는 Database.BatchableContext 개체에 대한 참조가 있습니다.

이 개체는 일괄 작업의 진행 상황을 추적하는 데 사용됩니다.

BatchableContext가 제공하는 인스턴스 메서드는 다음과 같습니다.

  • getChildJobId(): 현재 처리 중인 일괄 작업의 ID를 반환하는 메서드입니다.
  • getJobId(): 이 메서드는 일괄 작업의 ID를 반환합니다.

다음은 배치 클래스의 구문입니다.

global class MyBatchClass implements Database.Batchable<sObject> {
	global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {
// collect the batches of records or objects to be passed to execute
}
global void execute(Database.BatchableContextbc, List<P> records){
// process each batch of records
}
global void finish(Database.BatchableContextbc){
// execute any post-processing operations
}
}

Database.executeBatch 메서드

Database.executeBatch 메소드는 배치 클래스를 실행하는 데 사용됩니다.

이 메소드는 처리할 배치 클래스의 인스턴스, 배치 크기를 지정하는 옵션 매개변수(지정되지 않은 경우 기본 크기 200)라는 두 가지 매개변수를 사용합니다.

Database.executeBatch 구문:

Database.executeBatch(myBatchObject,scope)

배치 클래스 이름 MyBatchClass 실행:

MyBatchClassmyBatchObject = new MyBatchClass(); 
Id batchId = Database.executeBatch(myBatchObject,100);

데이터베이스.상태 저장

배치 클래스는 기본적으로 상태 비저장입니다. 실행 메소드가 호출될 때마다 객체의 새 복사본이 수신되며 클래스의 모든 변수가 초기화됩니다.

Database.stateful은 배치 클래스를 상태 저장으로 만들기 위해 구현됩니다.

배치 클래스가 다음을 구현한 경우 데이터베이스 , 상태 저장 인터페이스의 모든 인스턴스 변수는 해당 값을 유지하지만 정적 변수는 트랜잭션 간에 재설정됩니다.

요약

  • Apex는 강력한 형식의 객체 지향형입니다. 프로그래밍 언어 force.com 플랫폼에서 컴파일 및 실행됩니다.
  • Apex 프로그래밍 언어는 대소문자를 구분하지 않는 언어입니다.
  • Apex의 두 가지 작업 흐름 유형은 1) 개발자 작업 2) 최종 사용자 작업입니다.
  • Apex는 Salesforce를 다른 응용 프로그램과 통합하는 웹 서비스를 생성하는 데 도움이 됩니다.
  • apex에서 지원되는 데이터 유형은 다음과 같습니다. 1).Primitive 2) 컬렉션 3) sObject, Enums, 4) 클래스, 5) 개체 및 인터페이스
  • Public, Private, Protected 및 Global은 Apex의 지원으로 지정됩니다.
  • Apex에서 사용하는 키워드는 1) 공유 있음, 2) 공유 없음, 3) 정적, 4) 최종 5) 반환, 6) Null, 7) 가상, 8) 추상입니다.
  • 문자열은 문자 제한이 없는 문자 집합입니다.
  • Apex 거버너 제한은 모든 활주로 Apex 코드 및 프로세스가
  • 속성 값에 액세스하거나 변경하기 전에 Getter 및 Setter를 사용하여 코드를 실행할 수 있습니다.
  • Salesforce에서 Apex 클래스를 생성하는 방법에는 1)Developer Console 2)Force.com IDE 및 3) Apex 클래스 세부 정보 페이지의 세 가지 방법이 있습니다.
  • Apex 트리거를 사용하면 DML 작업이 수행되기 전과 후에 사용자 정의 Apex를 실행할 수 있습니다.
  • Salesforce의 Batch 클래스는 정상적으로 처리될 경우 Apex Governor 제한을 초과하는 많은 수의 레코드를 처리하는 데 사용됩니다.

데일리 구루99 뉴스레터

지금 바로 전달되는 최신의 가장 중요한 AI 뉴스 기사로 하루를 시작하세요.