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

Mais conteúdo relacionado

Mais procurados

Oop design principle
Oop design principleOop design principle
Oop design principleRyan Park
 
Swift extensions
Swift extensionsSwift extensions
Swift extensionswileychoi
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부JiHyung Lee
 
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern대영 노
 
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기SeokhwanMoon
 
OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.Ryan Park
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법Sungchul Park
 
Holub on-patterns-2-1
Holub on-patterns-2-1Holub on-patterns-2-1
Holub on-patterns-2-1정환 임
 
Oop design principle SOLID
Oop design principle SOLIDOop design principle SOLID
Oop design principle SOLIDRyan Park
 

Mais procurados (12)

Oop design principle
Oop design principleOop design principle
Oop design principle
 
Swift extensions
Swift extensionsSwift extensions
Swift extensions
 
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부
 
팀장 잔소리
팀장 잔소리팀장 잔소리
팀장 잔소리
 
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern
 
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
 
OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법
 
Java the good parts
Java the good partsJava the good parts
Java the good parts
 
Holub on-patterns-2-1
Holub on-patterns-2-1Holub on-patterns-2-1
Holub on-patterns-2-1
 
Oop design principle SOLID
Oop design principle SOLIDOop design principle SOLID
Oop design principle SOLID
 

Semelhante a [Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?

Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2plusperson
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQLJAEGEUN YU
 
[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로NHN FORWARD
 
MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로Dongmin Shin
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Gruter
 
김윤환_포트폴리오
김윤환_포트폴리오김윤환_포트폴리오
김윤환_포트폴리오Yun-hwan Kim
 
Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Younghan Kim
 
Daejeon IT Developer Conference Hibernate3
Daejeon IT Developer Conference Hibernate3Daejeon IT Developer Conference Hibernate3
Daejeon IT Developer Conference Hibernate3plusperson
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWSGruter
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들Kivol
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용중선 곽
 
[162] jpa와 모던 자바 데이터 저장 기술
[162] jpa와 모던 자바 데이터 저장 기술[162] jpa와 모던 자바 데이터 저장 기술
[162] jpa와 모던 자바 데이터 저장 기술NAVER D2
 
도서추천서비스-아키텍처-v1.0 2.pdf
도서추천서비스-아키텍처-v1.0 2.pdf도서추천서비스-아키텍처-v1.0 2.pdf
도서추천서비스-아키텍처-v1.0 2.pdfssusera65af0
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드cranbe95
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWSMatthew (정재화)
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)Sang Don Kim
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기Yeonhee Kim
 
Data analysis with Tajo
Data analysis with TajoData analysis with Tajo
Data analysis with TajoGruter
 

Semelhante a [Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가? (20)

Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로
 
MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 
김윤환_포트폴리오
김윤환_포트폴리오김윤환_포트폴리오
김윤환_포트폴리오
 
Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리
 
Daejeon IT Developer Conference Hibernate3
Daejeon IT Developer Conference Hibernate3Daejeon IT Developer Conference Hibernate3
Daejeon IT Developer Conference Hibernate3
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
[162] jpa와 모던 자바 데이터 저장 기술
[162] jpa와 모던 자바 데이터 저장 기술[162] jpa와 모던 자바 데이터 저장 기술
[162] jpa와 모던 자바 데이터 저장 기술
 
도서추천서비스-아키텍처-v1.0 2.pdf
도서추천서비스-아키텍처-v1.0 2.pdf도서추천서비스-아키텍처-v1.0 2.pdf
도서추천서비스-아키텍처-v1.0 2.pdf
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
Java JPA
Java JPAJava JPA
Java JPA
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기
 
Data analysis with Tajo
Data analysis with TajoData analysis with Tajo
Data analysis with Tajo
 

[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?

  • 1.
  • 3. Agenda. 1. 지난 강의 요약(1일차..5일차) 2. Trigger 실무?? 어디에서 어떻게 사용되는가!
  • 4. Thanks Speakers, Leaders, Attendees and Supporters Speakers. Admin Group Leaders Dev Group Leaders
  • 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 사례발표(승인프로세스 반려처리)
  • 7. Apex Trigger 연재강의 1차 Apex Trigger 개요, 오비드존(i2Max), 정원석(DaeuNextier) Agenda • Apex Trigger 개요 • 트리거와 프로세스 빌더 비교 • 샌드박스 개발자 Org • 개발자 콘솔, 디버그 로그 • Apex Trigger Demo & Hands-on
  • 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가 한쌍으로 이루어진 자료구조
  • 18. Apex Trigger 연재강의 4차 데이터 컬렉션과 변수/조건/반복문 다루기, 손창주(Clovis) • Trigger Context
  • 19. Apex Trigger 연재강의 4차 데이터 컬렉션과 변수/조건/반복문 다루기, 손창주(Clovis) • 조건문(If, Switch) • 반목문(For, While)
  • 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'인 레코드 만 반환합니다.
  • 26. 트리거를 실무에서 어디에 어떻게 사용 하는가? Session #2
  • 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)을 과거의 날짜로 변경할 수 있도록 함 …
  • 35. Q & A