Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

세일즈포스 서울 어드민 그룹 Trigger 연재 강의 (반복문/조건문)

145 views

Published on

2020년 9월 24일에 세일즈포스 서울 어드민 그룹에서 클로비스 손창주님이 진행 하신 "Apex Trigger 연재강의 (반복문/조건문)"에 대한 슬라이드 입니다.
https://sfdc.co/url/SFKR_ADMIN

Published in: Education
  • Be the first to comment

세일즈포스 서울 어드민 그룹 Trigger 연재 강의 (반복문/조건문)

  1. 1. 손창주
  2. 2. 목차 Collection Set, List, Map Grammer1: Condition 조건문 Grammer2: Loop 반복문 Trigger Context
  3. 3. Collection (Set, List, Map)
  4. 4. Collection ● 어떤 정보를 담는 것, 하나의 데이터가 아닌 여러 데이터를 담는 것 (자료 수집 대상: Integer, String, Salesforce Record, 등)
  5. 5. Collection(Set, List, Map: 특징) Collection Set List Map 1. Set : 순서가 존재X, 중복 허용 X 2. List : 순서 존재O, 중복 허용 O 3. Map : key와 value가 한쌍으로 이루어진 자료구조
  6. 6. Collection(Set, List, Map: 특징) Set List Map 재원님 배 다솜님 사과
  7. 7. Set List Map Collection(Set, List, Map: Sample Code) String banana1 = 'banana'; String banana2 = 'banana'; String apple = 'apple'; String pear = 'pear’; Set<String> fruits = new Set<String>(); fruits.add(banana1); fruits.add(banana2); fruits.add(apple); fruits.add(pear); System.debug(fruits); String banana1 = 'banana'; String banana2 = 'banana'; String apple = 'apple'; String pear = 'pear'; String[] fruits1 = new String[4]; fruits1[0] = banana1; fruits1[1] = banana2; fruits1[2] = apple; fruits1[3] = pear; System.debug('fruits1(' + fruits1.size() + '): ' + fruits1); List<String> fruits2 = new List<String>(); fruits2.add(banana1); fruits2.add(banana2); fruits2.add(apple); fruits2.add(pear); System.debug('fruits2(' + fruits2.size() + '):' + fruits2); String[] fruits3 = new String[4]; fruits3.add(banana1); fruits3.add(banana2); fruits3.add(apple); fruits3.add(pear); System.debug('fruits3(' + fruits3.size() + '):' + fruits3); String banana1 = 'banana'; String banana2 = 'banana'; String apple = 'apple'; String pear = 'pear'; Map<String, String> fruits1 = new Map<String, String>(); fruits1.put('재원님', banana1); fruits1.put('다솜님', banana2); fruits1.put('재원님', apple); fruits1.put('다솜님', pear); System.debug(fruits1); System.debug('재원님 과일: ' + fruits1.get('재원님')); System.debug('다솜님 과일: ' + fruits1.get('다솜님')); Map<String, List<String>> fruits2 = new Map<String, List<String>>(); fruits2.put('재원님', new List<String>()); fruits2.put('다솜님', new List<String>()); fruits2.get('재원님').add(banana1); fruits2.get('다솜님').add(banana2); fruits2.get('재원님').add(apple); fruits2.get('다솜님').add(pear); System.debug(fruits2); System.debug('재원님 과일: ' + fruits2.get('재원님')); System.debug('다솜님 과일: ' + fruits2.get('다솜님'));
  8. 8. Grammer1: Conditions (if/else if/else, switch) 다솜님 과일바구니에 서 사과가 있을 때, 사 과의 개수를 어떻게 셀 까? 고객 유형 중 VIP 고객 에게 특별한 혜택을 주 고 싶을 때 어떻게 하 지? 재원님 과일바구니에 는 사과가 있을까?
  9. 9. Conditions(if, if-else, if-else if-else) ● 조건에 따른 제어 ○ if(조건1){ 처리1; }else if(조건2){ 처리2; }else{ 처리3; } 시작 조건1 조건2 처리1 처리2 종료 거짓 참 참 거짓 처리3
  10. 10. Conditions(if, if-else, if-else if-else) ● 조건에 따른 제어 ○ switch on 대상(변수){ when 조건값1{ 처리1; } when 조건값2{ 처리2; } when else{//나머지 처리2; } } 시작 조건1 조건2 처리1 처리2 종료 처리3 else
  11. 11. Grammer2: Loop (for, for-each, while, do-while) 과일바구니에는 어떤 과일이 있는지 모두 확 인해보고 싶어! 1부터 10까지 로그를 남기려면 어떻게 할 까? 과일바구니에 있는 과일을 특정한 기준에 따라 재원 님과 다솜님에게 나눠주고, 실제로 뭘 가지고 있는지 확인하고 싶어!
  12. 12. Loop(for, for-each, while) • for: 일정 횟수에 기반한 반복 • for (Integer i = 1; i <=5; i++) { 처리; …… } 시작 조건 종료 참 거짓 증감식 처리반복 • for-each: 컬랙션에 있는 데이터를 기반한 반복 • for (데이터 : 컬랙션) { 처리; …… } • while: 조건에 기반한 반복 • while (조건식) { 처리; …… }
  13. 13. Loop(do-while) • do-while: 우선 처리 후 조건에 기반한 반복 • do{ 처리1; }while(조건식); 시작 조건 종료 참 거짓 증감식 처리2 처리1 반복
  14. 14. Loop(continue, break) • break: 반복문에서 벗어나기 • continue: 반복문 내에서 continue; 뒤에 있는 처리는 진행하지 않고, 다음 반복문으로 이동 • for( Integer i = 1; i<=5; i++ ){ System.debug( i + '번째 반복’ ); } • for( Integer i = 1; i<=5; i++ ){ System.debug( i + '번째 반복’ ); if( i < 3 ){ continue; } System.debug( 'continue 뒤 ' + i + '번째 반복’ ); } • for( Integer i = 1; i<=5; i++ ){ System.debug( i + '번째 반복’ ); if( I == 3 ){ break; } System.debug('break 뒤 ' + I + '번째 반복'); } 시작 조건 종료 참 거짓 증감식 처리반복
  15. 15. Exercise Map 재원님 배 다솜님 사과 ● 과일바구니에 곶감 2개, 사과 2개, 배 1개가 담겨있습니다. 이 때, 재원님에게 곶감 2개와 배 1개를 주고, 나머지는 다솜님에게 주었습니다. 다솜님은 어떤 과일을 가지고 있을까요? ○ 참고: Map의 keySet()을 활용할 수 있습니다. keySet()은 Map이 가지고 있는 Key 값들을 Set에 담는 것입니다. Ex. Map<String, String> sample = new Map<String, String>(); sample.put(‘다솜님’, ‘사과’); sample.put(‘재원님’, ’배’); Set<String> keys = sample.keyset(); System.debug(‘keys: ‘ + keys); 재원님 곶감1 재원님 곶감2 다솜님 사과2
  16. 16. Trigger Context
  17. 17. Trigger Context 데이터 이벤트 발생 Before Trigger Validation Rule, Duplicate Rule After Trigger Assignment Rule System Validation Event: Insert, Update, Delete, Undelete Trigger.isBefore Trigger.isAfter 레이아웃에 정의된 값인지 사용자 프로필 권한에 맞는 필드인지 유효한 필드 형식인지 필드에 정의된 범위(길이)가 맞는지 Auto-response Rule Workflow Rule . . .
  18. 18. Trigger Context 이벤트 시점 이벤트 유형 이벤트 대상 레코드 isBefore isInsert new isAfter isUpdate newMap isDelete old isUndelete oldMap size • trigger.new와 trigger.old를 데이터베이스 명령어를 쓸 수 없습니다. (insert, update, delete) • 무한 반복을 발생할 수 있으며, 이때 Runtime Exception이라는 오류가 발생합니다. • before trigger에서 trigger.new를 활용해서 필드 값을 변경할 수 있습니다. • Before trigger → event → after trigger • after trigger에서 trigger.new는 저장되지 않으며, trigger.old는 읽기만 가능합니다. • trigger.new는 삭제할 수 없습니다.
  19. 19. Thank You

×