6. 지난 강의 요약
1~5차 강의 요약
• 7월 Apex Trigger 연재강의 2차 – 이재원(천조), 이재규(풀무원), 정원석(DaeuNextier)
– Summer '20 Release_New Functions 공유
– Apex 개발을 위한 VSCode/IntelliJ
• 8월 Apex Trigger 연재강의 3차 – 김지민(DK BMC)
– 데이터 타입 다루기
• 9월 Apex Trigger 연재강의 4차 – 손창주(Clovis)
– 데이터 컬렉션과 변수/조건/반복문 다루기
• 10월 Apex Trigger 연재강의 5차 – 오비드존(i2Max)
– SOQL, SOSL 소개 및 활용
• 2월 Apex Trigger 연재강의 1차 – 오비드존(i2Max), 정원석(DaeuNextier)
– Apex Trigger 개요
– Use Case 사례발표(승인프로세스 반려처리)
8. Apex Trigger 연재강의 1차
Apex Trigger 개요,
오비드존(i2Max), 정원석(DaeuNextier)
• Apex Trigger ?
– 레코드의 생성/수정/삭제와 함께 동작하게 되는 프로세스/로직
– Trigger Event
Before Insert, Before Update, Before Delete
After Insert, After Update, After Delete, After UnDelete
• 트리거와 프로세스 빌더 비교
– Apex, Flow, Process Builder, Workflow Rule
– 사용목적에 맞게 선택하는 것이 중요
9. Apex Trigger 연재강의 1차
Apex Trigger 개요,
오비드존(i2Max), 정원석(DaeuNextier)
• 샌드박스, 개발자 Org
– 현재의 운영서버를 복제하여 테스트가 가능한 서버 생성
종류별로 리프레시 제한이 있음
- 개발자 Org를 등록하여 무료 사용이 가능
• 개발자 콘솔, 디버그 로그
– Apex Class/Trigger, Aura Components, VF Page
Package, Logs, Test, SOQL, SOSL
10. Apex Trigger 연재강의 2차
Apex 개발을 위한 VSCode/IntelliJ, Summer '20 Release_New Functions 공유
정원석(DaeuNextier), 이재규(풀무원), 이재원(천조)
11. Apex Trigger 연재강의 2차
Apex 개발을 위한 VSCode/IntelliJ, Summer '20 Release_New Functions 공유
정원석(DaeuNextier), 이재규(풀무원), 이재원(천조)
12. Apex Trigger 연재강의 2차
Apex 개발을 위한 VSCode/IntelliJ, Summer '20 Release_New Functions 공유
정원석(DaeuNextier), 이재규(풀무원), 이재원(천조)
13. Apex Trigger 연재강의 3차
데이터 타입 다루기 - 변수의 정의 / 숫자 다루기 / 문자열 다루기 / 날짜 다루기,
김지민(DKBMC)
14. • 데이터 타입
– 자료형, 실수, 정수, Boolean과 같은 데이터를 식별하는 유형
Apex Trigger 연재강의 3차
데이터 타입 다루기 - 변수의 정의 / 숫자 다루기 / 문자열 다루기 / 날짜 다루기,
김지민(DKBMC)
15. Apex Trigger 연재강의 3차
데이터 타입 다루기 - 변수의 정의 / 숫자 다루기 / 문자열 다루기 / 날짜 다루기,
김지민(DKBMC)
16. Apex Trigger 연재강의 4차
데이터 컬렉션과 변수/조건/반복문 다루기,
손창주(Clovis)
Agenda
• 데이터 컬렉션(List, Map, Set)
• 트리거 컨텍스트 변수
• 조건문(If, Switch)
• 반목문(For, While)
17. Apex Trigger 연재강의 4차
데이터 컬렉션과 변수/조건/반복문 다루기,
손창주(Clovis)
• 데이터 컬렉션(List, Map, Set)
– 어떠한 정보를 담는 것
하나의 데이터가 아닌 여러 데이터를 담는 것
Set : 순서 X, 중복허용 X
List : 순서 ○, 중복허용 ○
Map : Key와 Value가 한쌍으로 이루어진 자료구조
20. Apex Trigger 연재강의 5차
Salesforce Data Model, SOQL, SOSL 소개 및 활용
오비드존(i2Max)
Agenda
• Salesforce Data Model
• SOQL
• SOSL
• Demo & Hands-on
21. • 데이터모델
• Standard and Custom Objects,
Custom Settings, Custom Metadata Type
• Schema Builder
• Objects & Fields, Object Relationships
Apex Trigger 연재강의 5차
Salesforce Data Model, SOQL, SOSL 소개 및 활용
오비드존(i2Max)
22. • SOQL
SELECT fields FROM ObjectName [WHERE Condition]
Apex Trigger 연재강의 5차
Salesforce Data Model, SOQL, SOSL 소개 및 활용
오비드존(i2Max)
23. • WHERE
• ORDER BY
• LIMIT
• Related Records
Apex Trigger 연재강의 5차
Salesforce Data Model, SOQL, SOSL 소개 및 활용
오비드존(i2Max)
24. Apex Trigger 연재강의 5차
Salesforce Data Model, SOQL, SOSL 소개 및 활용
오비드존(i2Max)
• WHERE
• ORDER BY
• LIMIT
• Related Records
• Object Collection 리스트가 반환됨
※ Object Collection 리스트를 가지고 있는 Collection ...
25. Apex Trigger 연재강의 5차
Salesforce Data Model, SOQL, SOSL 소개 및 활용
오비드존(i2Max)
SOQL과 SOSL의 차이점과 유사점
SOQL과 마찬가지로 SOSL을 사용하면 조직의 레코드에서 특정 정보를 검색 할 수 있습니다.
한 번에 하나의 표준 또는 사용자 지정 개체 만 쿼리 할 수 있는 SOQL과 달리 단일 SOSL 쿼리는 모든 개체를
검색 할 수 있습니다.
또 다른 차이점은 SOSL은 단어 일치를 기반으로 필드를 일치시키는 반면 SOQL은 기본적으로 정확히 일치를
수행한다는 것입니다 (와일드 카드를 사용하지 않는 경우).
예를 들어 SOSL에서 'Digital'을 검색하면 필드 값이 'Digital'또는 'The Digital Company'인 레코드가
반환되지만 SOQL은 필드 값이 'Digital'인 레코드 만 반환합니다.
27. Apex Trigger 연재강의 6차
지난강의 요약 및 "트리거를 실무에서 어디에 어떻게 사용 하는가?"
이재규(풀무원)
• 레코드가 생성/복제/변경 될 때 특정 필드를 초기화 하거나 업데이트
레코드가 어떠한 조건들을 만족 할 때, 상태/레코드유형/필드 등의 업데이트 및 그에 맞는 처리를 해야 하는 경우
- 승인상태(승인 전/중/후)에 따라 서로 다른 레코드 유형을 적용하거나,
- 상태 값을 초기화, 레코드를 복제하는 경우 입력 값을 초기화(승인자, 지원금액, 코멘트, 지출결의서의 마감여부/지급여부 등),
- 복수의 필드 값을 결합하고, 제거하여 암호화, 고유키로 활용(제품 고유코드 = 레코드ID & 창고ID),
- 입력/수정된 내용에 특정 키워드가 존재하는 경우, 혹은 몇 회 이상 존재하는 경우 알림(메일/Chatter),
- 동기화된 데이터 혹은 입력된 데이터에 대한 조건별 보정(O365 Event 동기화데이터의 본문 내용의 불필요한 Html 태그 제거)
- 변경 이력 혹은 변경 회수를 기록
…
28. Apex Trigger 연재강의 6차
지난강의 요약 및 "트리거를 실무에서 어디에 어떻게 사용 하는가?"
이재규(풀무원)
예) 품의유형(Picklist)의 종류에 따라 레코드 유형, 제목 및 승인경로(사용자 검색) 자동설정
29. Apex Trigger 연재강의 6차
지난강의 요약 및 "트리거를 실무에서 어디에 어떻게 사용 하는가?"
이재규(풀무원)
예) 동기화된 이벤트의 본문 내용중 불필요한 Html 코드를 보정함
30. Apex Trigger 연재강의 6차
지난강의 요약 및 "트리거를 실무에서 어디에 어떻게 사용 하는가?"
이재규(풀무원)
• 데이터 통제
Delete, Update에서 데이터 혹은 시스템 체크 및 DML 통제
- Account Delete 시 Delete Log 레코드 생성(복제),
- 특정 조건(요청을 받아 생성한 레코드, 승인 완료 된 레코드, 정해진 시스템/앱/화면에서의 접속(삭제/수정)이 아닌 경우, Lookup으로
연결된 데이터의 상태 조건, 담당자의 일정 체크, Lock을 걸 수 없는 레코드 등)의 레코드의 입력/수정/삭제 통제
- 레코드가 수정/삭제 되었을 때, 조회 관계의 모든 사용자(제품레코드의 카테고리별 MD 등)에게 관련 내용을 알림(메일, Chatter 등)
- 중복된 데이터 입력 방지(전화번호/휴대폰/팩스/집전화/비서전화 등 상이한 필드, 포맷을 숫자로 변경 후 비교)
- Opportunity 의 Stage의 Downgrade, Opportunity에 여러 Quotes가 생성되는데, Final Quote가 선택되지 않았을 때 수정 불가
…
31. Apex Trigger 연재강의 6차
지난강의 요약 및 "트리거를 실무에서 어디에 어떻게 사용 하는가?"
이재규(풀무원)
예) 특정 권한의 사용자만 삭제가능, 본인의 데이터라도 조건에 따라 삭제 불가, 조건별 수정 가능
조회관계의 사용자의 일정을 확인하여 알림 제공
32. Apex Trigger 연재강의 6차
지난강의 요약 및 "트리거를 실무에서 어디에 어떻게 사용 하는가?"
이재규(풀무원)
• Apex 배치실행, API Callout
- 특정 Apex배치 실행
데이터 삭제, I/F 데이터의 운영데이터 적용, 리드 승인완료시 첨부파일을 포함한 메일발송(외부수신자 추가, 복수의 개체 조합),
- 레코드 생성시 특정 API 실행(Http접속 등)
- 데이터 생성 시 소유자 변경(레코드의 조건(부서, 팀, 제품 카테고리, 파트)에 따라서 사용자 정보와 비교)
…
33. Apex Trigger 연재강의 6차
지난강의 요약 및 "트리거를 실무에서 어디에 어떻게 사용 하는가?"
이재규(풀무원)
예) IF가 완료된 이후 Upsert 배치를 실행하여 사용자 Role 및 후속 배치를 실행
34. Apex Trigger 연재강의 6차
지난강의 요약 및 "트리거를 실무에서 어디에 어떻게 사용 하는가?"
이재규(풀무원)
• UI/UX, 표준기능으로는 처리가 어려운 우회적인 활용방법
- 레코드가 생성 될 때 검색이 용이 하도록 별도의 "검색어 필드“ 생성 후 해놓고 해당 레코드의 특정 필드 값에 따라 문자열을 자르거나
다른 언어로 번역 또는 로마자로 변환하여 "검색어 필드"에 추가 등록, Global Search의 문제점 개선
- Rollup Summary(SUM) 필드가 필요할 때, 계산 (MAX, MIN의 경우, Flow로 가능하지만, SUM의 경우 Trigger로 처리)
- 구매발주 시스템으로 대리점(Agent)의 구매 요청사항을 보낼 때 내부영업담당자(Internal 관리자)의 이름 리스트에서 지정하여
구매발주 시스템으로 송신 (구매요청품목에 해당하는 사업부를 Trigger로 인식하여 처리)
- 여러 개의 확인 규칙을 만드는 것이 아닌 Trigger의 반복문 혹은 변경 전/후 데이터를 확인하여 정합성, 조건별 검증을 진행
- 종료일(CloseDate)을 과거의 날짜로 변경할 수 있도록 함
…