티스토리 뷰

1.     sObject ( Salesforce Object )

-       sObjectOrgSalesforce Object에 해당하는 Apex 데이터 유형이다.

-       sObject는 하나의 변수에 여러 값을 보유하는 복합 데이터 유형이다.

-       Account, Contact, Opportunity와 같은 Salesforce Object의 단일 데이터 레코드를 보유한다.

-       sObject에는 문자열, 날짜, 정수, Boolean과 같은 다양한 데이터 유형을 지닐 수 있다.

-       Salesforce의 모든 레코드는 기본적으로 Apex에서 sObject로 표시된다.

-       sObject를 생성하기 위해서는 변수를 선언한 후, 변수에 sObject 인스턴스를 할당해야 한다.

-       Ex. Account acc = new Account ( Name = ‘Acme’ );

-       Ex. Account acc = new Account(Name='Acme', Phone='(415)555-1212', Number=100);

 

 

2.     SOQL

-       SOQL이란 Salesforce 데이터베이스에서 레코드 데이터를 가져오는 언어이다.

-       SOQL에서 필수로 작성해야 하는 절은 SELECT, FROM이다.

-       선택적으로 작성할 수 있는 절은 조건을 달 수 있는 WHERE, 반환할 최대 레코드의 개수를 설정할 수 있는 LIMIT, 정렬방향을 지정할 수 있는 OEDER BY가 있다.

-       쿼리 결과를 list에 할당하기 위해서는, 쿼리가 대괄호 [ ]로 감싸져 있으며, 명령문 끝에는 세미콜론 ;이 붙어야 한다.

-       쿼리에서 바인드 변수는 :로 쿼리 내에서 구분해줘야 한다.

-       Bind( 바인드 )SOQL문 내에서 지역변수를 사용하는 것을 의미한다.

 

 

3.     Flow Type

-       1) Screen Flow

-        : Screen Flow는 비지니스 프로세스를 통해 사용자를 안내하는 UI를 제공한다.

-       2) Autolaunched Flow

-        : Autolaunched FlowUI가 없는 비지니스 프로세스를 자동화한다.

-        : Trigger가 없으며, 백그라운드에서 실행된다.

-       3) Triggered Flow

-        : 지정한 트리거에 의해 자동 실행되며, 백그라운드에서 실행된다.

-        : TriggerFlow를 시작하는 항목을 식별한다.

-        : Criteria는 트리거의 특성을 정의한다.

-        : ActionFlow가 수행하는 작업을 결정합니다.

 

 

4.     Trigger Types

-       1) Schedule : 지정한 시간과 빈도로 실행된다.

-       2) Platform Event : 특정 플랫폼 이벤트 메시지 수신 시 실행된다.

-       3) Record : 레코드가 생성, 업데이트 또는 삭제될 때 실행된다.

 

 

5.     Record Trigger Flows

-       Record Trigger Flows는 가장 일반적으로 사용되는 자동화이다.

-       Record Trigger Flows의 역할은 어떤 일이 발생하면 다른 작업을 합니다.’이다.

-       Record Trigger Flows의 경우, TriggerFlow가 작동하는 Object와 실행시기를 결정한다. ( 생성/업데이트/삭제 )

-       Record Trigger Flows을 생성하여, 다른 레코드를 업데이트하거나 알림을 보내거나 프로세스를 시작하거나 데이터 일관성을 유지할 수 있다.

 

 

6.     Record Trigger Flows 옵션

-       1) Fast Field Update

-        : Flow를 트리거한 레코드 업데이트 중이거나 해당 업데이트가 저장되기 전에 실행

-        : 트랜잭션을 트리거한 레코드를 업데이트할 수 있다.

-        : Trigger Record 업데이트로 제한되기에 최적의 성능을 낼 수 있다.

-       2) Related Records and Actions ( 관련 레코드 및 액션 )

-        : Flow를 트리거한 레코드가 업데이트하는 동안과 업데이트 후에 저장

-        : 다른 레코드를 생성, 업데이트하거나 삭제할 수 있다.

-        : 하위 Flow를 호출할 수 있다.

-        : 이메일 알림 보내기 또는 Chatter에 게시하는 등의 호출 작업을 할 수 있다.

-        : 레코드 변경에 의해 트리거 되는 일반 프로세스를 자동화해준다.

-       3) Run Asynchronously ( 비동기적으로 실행 )

-        : Flow를 트리거한 레코드 업데이트가 완료된 직후 실행된다.

-        : 외부 시스템에 요청을 보내거나 다른 장기 실행 프로세스를 수행하는 것과 같은 고급 시나리오를 실행한다.

-        : Flow을 트리거한 레코드 업데이트의 속도 저하 또는 차단을 방지할 수 있다.

-       4) Scheduled Paths ( 예정된 경로 )

-        : 종료 날짜와 같이 Flow를 트리거한 레코드의 날짜를 기반으로 미리 알림 또는 후속 조치를 예약할 수 있다.

-        : 트리거 실행과 자동화 실행 사이에 지정된 기간 동안 기다릴 수 있다.

 

 

7.     SOQL과 SOSL 사용 시기

-       1) SOQL ( Salesforce Object Query Language )

-        : 데이터가 있는 Object 또는 field를 알고 있고, 다음 작업을 수행하려는 경우 사용

-        : 단일 Object 또는 서로 관계가 있는 다중 Object에서 데이터를 검색

-        : 쿼리의 일부로 결과를 정렬

-        : 숫자, 날짜 또는 확인란 field에서 데이터를 검색

-       2) SOSL ( Salesforce Object Search Language )

-        : 데이터가 상주하는 Object 또는 field를 모르는 상태로 다음 작업을 수행하려는 경우 사용

-        : field 내에 존재하는 특정 용어에 대한 데이터를 검색

-        : SOSL의 경우 field 내에서 여러 용어를 토큰화하고 이로부터 검색 인덱스를 구축할 수 있기에, 더 빠르고 관련성이 있는 결과를 반환할 수 있다.

-        : 여러 Objectfield를 효율적으로 검색하고, Object는 서로 관련이 있을 수도 없을 수도 있다.

-        : 부서( division ) 기능을 사용하여 조직의 특정 부서에 대한 데이터를 검색하고 가장 효율적인 방법으로 데이터를 찾는다.

 

 

8.     프로토콜로 쿼리 보내기

-       1) Query ( REST ) and query() ( SOAP )

-        : 지정한 Object에 대해 SOQL 쿼리를 실행하고, 기준과 일치하는 데이터를 반환

-       2) Search ( REST ) and search() ( SOAP )

-        : 조직의 데이터에 대해 SOSL 텍스트 문자열 검색을 실행

 

 

9.     SOQL VS SOSL

  SOQL SOSL
명칭 Salesforce Object Query Language Salesforce Object Search Language
사용 List Views, Reports, Apex (Global, Sidebar, Advanced) Search, Apex
인덱싱 동기식
( 사용자 지정 인덱스 / 표준 인덱스 사용 )
비동기식
( 보통 2-3분에 한번 9000이상의 레코드가 로드 되면 초과분은 대기열로 이동 -> 느림 )
검색기준 정확성 관련성 및 속도
검색범위 한번에 하나의 Object 검색 한번에 여러 Object 검색
조건 WHERE IN SearchGroup
반환 값 SELECT Returning FieldSpec
정렬 ORDER BY, LIMIT, OFFESET ORDER BY, LIMIT, OFFESET
필터링 WITH DATA CATEGORY WITH DATA CATEGORY

 

 

10.  SOSL - 단일 Object 내에서의 검색

-       FIND { 검색 단어 } RETRUNING ObjectTypeName

 

 

11.  SOSL - 다중 Object 내에서의 검색

-       FIND { 검색 단어 } RETRUNING ObjectTypeName1, ObjectTypeName2

-       FIND {A} IN ALL FIELDS RETURNING Account(Name), Contact(Department)

 

 

12.  APEX 언어의 특징

-       1) Hosted ( 호스팅 )

-        : Apex는 서버인 Lightning Platform에서 저장, 컴파일 및 실행된다.

-       2) Object oriented ( 객체 지향 )

-        : Apex는 클래스, 인터페이스 및 상속을 지원한다.

-       3) Strongly typed ( 강력한 유형 )

-        : Apex는 컴파일 시간에 Object에 대한 참조를 확인한다.

-       4) Multitenant aware ( 다중 테넌트 인식 )

-        : Apex는 다중 테넌트 플랫폼에서 실행되기에 코드가 공유 리소스를 독점하는 것을 방지하여 제한을 적용하여 런어웨이 코드를 면밀히 보호한다.

-       5) Integrated with the database ( 데이터베이스와의 통합 )

-        : Apex는 레코드 및 해당 필드에 대한 직접적인 액세스를 제공하고 해당 레코드를 조작하기 위한 명령문 및 쿼리 언어를 제공한다.

-       6) Data focused ( 데이터 중심 )

-        : Apex는 데이터베이스에 대한 트랜잭션 액세스를 제공하므로 작업을 롤백이 가능

-       7) Easy to use ( 사용하기 쉬움 )

-        : Apex는 친숙한 언어인 Java 문법을 기반으로 한다.

-       8) Easy to test ( 테스트하기 쉬움 )

-        : Apex는 단위 테스트 생성, 실행 및 코드 적용 범위에 대한 기본 지원을 제공한다.

-        : Salesforce는 플랫폼 업그레이드 전에 모든 단위 테스트를 실행하여 모든 사용자 정의 Apex 코드가 예상대로 작동하는지 확인한다.

-       9) Versioned ( 버전관리 )

-        : 사용자 정의 Apex 코드를 API의 여러 버전에 대해 저장할 수 있다.

-       + Apex는 고유한 API 이름을 사용하여 Standard 또는 Customer sObject 및 해당 필드를 참조한다.

-       + 사용자 정의일 경우 API 이름의 마지막이 __C로 끝나며,

-       + 사용자 정의 관계필드의 경우에는 마지막이 __r로 끝난다.

 

 

13.  Apex와 다른 객체 지향언어와 다르게 지원하는 기능

-       Apex로서의 클라우드 개발은 클라우드에서 저장, 컴파일 및 실행된다.

-       데이터베이스 시스템의 Trigger와 유사한 Trigger을 지원한다.

-       트랜잭션 및 롤백이 가능하다.

-       사용자 지정 코드의 버전 관리가 가능하다.

-       데이터를 쿼리하고 검색하기 위해 직접 데이터베이스 호출 및 쿼리 언어를 만들 수 있다.

-       Public보다 더 허용적이고 네임스페이스와 애플리케이션 전체의 액세스를 허용하는 global을 지원한다.

 

 

14.  Apex 언어에서 사용할 수 있는 DML문

-       INSERT / UPDATE / UPSERT / DELETE / UNDELETE / MERGE

-       DML문은 sObject 또는 sObject List를 반환할 수 있다.

-       이 중 UPSERTMERGESalesforce 내에서만 사용이 가능하다.

-       UPSERT는 새 레코드를 생성하고 단일 문 내에서 sObject 레코드를 업데이트한다.

-       UPSERT는 지정된 필드를 사용하여 기존 개체의 존재를 확인하거나 필드를 지정되지 않는 경우 ID 필드를 사용한다.

-       MERGE는 동일한 sObject 유형의 최대 3개 레코드를 하나의 레코드에 병합하고 나머지 레코드는 삭제한 후 관련 레코드의 부모를 다시 지정한다.

 

 

15.  Database 메소드

-       Database.SaveResult [ ] results = Database.insert(recordList, false);문을 통해 각 레코드에 대한 성공 또는 실패 정보가 포함된 결과 개체를 반환한다.

 

 

16.  SOSL의 기본 쿼리문

-       FIND { SearchQuery } [ IN SearchGroup ] [ RETURNING ObjectsAndFields ]

-       SearchGroup은 선택 사항으로, ALL FIELDS / NAME FIELDS / PHONE FIELDS / EMAIL FIELDS / SIDEBAR FIELDS 중 하나를 사용할 수 있다.

 

 

17.  트리거 ( Trigger )

-       Apex에서 Trigger를 사용하면 삽입, 업데이트 또는 삭제와 같은 Salesforce의 레코드에 대한 이벤트 전후에 사용자 정의 작업을 수행할 수 있다.

-       트리거의 구문은 다음과 같다.

-       trigger TriggerName on ObjectName ( trigger_events ) {

-          // code_block

-       }

-       트리거에서 지정해줄 수 있는 이벤트로는 Before insert / Before update / Before delete / After insert / After update / After delete / After undelete가 있다.

 

 

18.  Types of Triggers ( 트리거의 유형 )

-       1) Before triggers

-        : 레코드 값이 데이터베이스에 저장되기 전에 레코드 값을 업데이트하거나 유형성을 검사하기 전에 실행한다.

-       2) After triggers

-        : 시스템에서 설정한 필드 값에 액세스하고 다른 레코드의 변경 사항에 영향을 주는데 사용된다.

-        : After trigger를 실행하는 레코드는 read-only이다.

 

 

19.  List of context Variable available for trigger

-       1) isExecuting

-        : Apex 코드의 현재 컨텍스트가 Visualforce 페이지, 웹 서비스 또는 API 호출이 아니라 트리거인 경우 true를 반환한다.

-       2) isInsert

-        : Salesforce 사용자 인터페이스, Apex 또는 API에서 insert로 이 트리거가 실행된 경우 true가 반환된다.

-       3) isUpdate

-        : Salesforce 사용자 인터페이스, Apex 또는 API에서 Update로 이 트리거가 실행된 경우 true가 반환된다.

-       4) isDelete

-        : Salesforce 사용자 인터페이스, Apex 또는 API에서 Delete로 이 트리거가 실행된 경우 true가 반환된다.

-       5) isBefore

-        : 레코드가 저장되기 전에 이 트리거가 실행되었는지에 대한 여부를 반환한다.

-       6) isAfter

-        : 모든 레코드가 저장된 후에 이 트리거가 실행되었는지에 대한 여부를 반환한다.

-       7) isUndelete

-        : 휴지통에서 레코드가 복구된 후 트리거가 실행되었는지에 대한 여부를 반환한다.

-       8) new

-        : sObject 레코드의 새 버전 목록을 반환한다.

-        : sObject 목록은 오직 insert / update / undelete 트리거에서만 가능하다.

-        : 레코드는 오직 before 트리거로만 수정이 가능하다.

-       9) newMap

-        : 새 버전의 sObject 레코드에 대한 ID맵이다.

-        : Map은 오직 before update / after insert / after update / after undelete 트리거에서만 가능하다.

-       10) old

-        : sObject 레코드의 이전 버전 List를 반환한다.

-        : sObject list는 오직 updatedelete 트리거에서만 가능하다.

-       11) oldMap

-        : sObject 레코드의 이전 버전에 대한 ID Map을 반환한다.

-        : Map의 경우 오직 updatedelete 트리거에서만 가능하다.

-       12) operationType

-        : 현재 작업에서 해당하는 System.TriggerOpperation 형식의 열거형을 반환한다.

-       13) Size

-        : 트리거 호출의 총 레코드 수를 반환한다. ( 이전 및 새로운 모두 )

 

 

20.  Callouts ( 콜아웃 )

-       외부 웹 사이트에 대한 Apex 호출을 콜아웃이라고 부른다.

-       트리거에서 콜아웃을 만들려면, 비동기적으로 실행되는 클래스 메소드를 호출한다.

-       이러한 메소드는 퓨처 메소드라고 하며, @future( callout=true )라는 주석이 붙는다.

 

 

21.  비동기 Apex ( Asynchronous Apex )

-       비동기식 Apex는 나중에 별도의 스레드에서 프로세스를 실행하는데 사용된다.

-       비동기식 프로세스는 사용자가 작업이 완료될 때까지 기다리지 않고 백그라운드에서 작업을 실행하는 프로세스 또는 기능이다.

-       외부 시스템에 대한 콜아웃, 더 높은 제한이 필요한 작업 및 특정 시간에 실행해야 하는 코드에 대해 비동기 Apex를 사용한다.

 

 

22.  비동기식 처리의 장점

-       1) User efficiency ( 사용자 효율성 )

-        : 비동기 처리로 작업을 계속할 수 있고 백그라운드에서 처리를 수행할 수 있다.

-       2) Scalability ( 확장성 )

-        : 미래의 어느 시점에서 리소스를 사용할 수 있을 때 플랫폼의 일부 기능이 실행되도록 허용함으로써 리소스를 신속하게 관리하고 확장할 수 있다.

-       3) Higher Limits ( 상한선 )

-        : 비동기 프로세스는 권한 및 실행 제한이 더 높은 새 스레드에서 시작된다.

 

 

23.  비동기식 Apex ( Asynchronous Apex )의 종류

-       1) Future Methods ( 미래 메소드 )

-        : 자체 스레드에서 실행하고 리소스를 사용할 수 있을 때까지 시작하지 않는다.

-        : 주로 Web Service callout에서 사용된다.

-       2) Bath Apex ( 배치 Apex )

-        : 일반적으로 처리하는데 걸린 제한을 초과하는 대규모 작업을 실행한다.

-        : 주로 데이터 정리나 기록 보관하는데 사용된다.

-       3) Queueable Apex ( 대기 가능 Apex )

-        : 미래 메소드(Future Methods)와 유사하지만 추가 작업을 연결을 제공하고, 더 복잡한 데이터 유형을 사용할 수 있다.

-        : 주로 외부 웹 서비스로 순차적인 처리 작업을 수행하는데 사용된다.

-       4) Scheduled Apex ( 스케줄 Apex )

-        : Apex가 지정된 시간에 실행되도록 예약한다.

-        : 주로 일일 또는 주간 작업에 사용된다.

 

 

24.  비동기 처리 방식의 주의점

-       1) Ensure fairness of processing ( 처리의 공정성 확보 )

-        : 모든 고객이 처리 리소스를 공평하게 공유하도록 한다.

-       2) Ensure fault tolerance ( 내결함성 보장 )

-        : 장비 또는 소프트웨어 오류로 인해 비동기식 요청이 손실되지 않도록 한다.

 

 

25.  비동기식 처리 – 요청 수명 주기

-       1) Enqueue ( 대기열에 넣기 )

-        : 요청이 대기열에 들어간다.

-        : 플랫폼은 요청을 처리하기 위해 적절한 데이터와 함께 요청을 Queue에 넣는다.

-       2) Persistence ( 지속 )

-        : Queue에 넣은 요청은 지속된다.

-        : 요청은 오류 복구 및 트랜잭션 기능 제공을 위해 영구 저장소에 저장된다.

-       3) Dequeue ( 대기열에서 빼기 )

-        : Queue에 넣은 요청은 Queue에서 제거되고 처리된다.

-        : 처리가 실패하면 트랜잭션 제어를 통해 요청이 손실되지 않도록 한다.

 

 

728x90
댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항