[Salesforce] Interface 기본

hyunsooSong·2023년 1월 17일
0

Salesforce

목록 보기
13/13
post-thumbnail

🚌 Interface

Interface Parameter 형식 : Camel 형식


1. 기본 구조

1) 파라미터 : Client측에서 원하는 데이터를 뽑아내기 위한 Id 값
2) Return Value : Client측에서 원하는 데이터 (JSON 형식)


2. Postman - Test Tool

Salesforce 보안 방식 : OAuth 2.0

  • Authorization 탭에서 토큰을 발급 받아 사용
  • authUserName, authPassword을 설정하여 Salesforce Org와 연결

3. Logger

Interface Test시 log 찍는 방법

logger.add('Test logger');

4. Interface Class 구조

  • Example full code
public Map<String, Object> execute(ValueObject vo, List<String> logger) {
        Map<String, Object> rstMap = new Map<String, Object>();
        ValueRow vrow = vo.getValueRow();

        logger.add('=======================================================================================================================');
        logger.add('Interface ID:Test1, Batch type = SELECT, Execute plan = No Plan(Exception class)');
        logger.add('-----------------------------------------------------------------------------------------------------------------------');
        
        try {
            Date searchFromDate = MetaDataHelper.getDate2String(vo.getString('searchFromDate'));

            // 가져오고자 하는 데이터 Select
            String query = 'SELECT field1, field2 '+
                            ' FROM ObjectName '+
                            'WHERE whereclause '; 

            List<AggregateResult> selectList = Database.query(query);

			// Query 확인
            logger.add('Query:[' + query + '], DML:SELECT, Target table: ObjectName, Result_size:'+selectList.size());


			// 원하는 로직 구현
            Decimal totalCnt = donationList.size();
            Decimal field1Cnt = 0;
            Decimal field2Cnt = 0;
            
            if(totalCnt > 0) {
                for(AggregateResult obj : selectList) {
                    String field1 = MetaDataHelper.getString2Object(obj.get('field1'));
                    String field2 = MetaDataHelper.getString2Object(obj.get('field2'));
                    
                    if(field1Cnt != null) field1Cnt++;
                    if(field2Cnt != null) field2Cnt++;
                }
            }

            rstMap.put('field1Cnt', field1Cnt);
            rstMap.put('field2Cnt', field2Cnt);
        } catch(Exception e) {
            throw e;
        }

        return rstMap;
    }

풀이

  • Map<String, Object> 형식으로 return 값 설정
  • 파라미터로 받은 조건 값은 MetaDataHelper로 풀어야함
  • query문으로 조건 값에 해당하는 데이터 반환
  • 반환된 데이터 원하는 모양으로 설정 후 반환

5. ValueObject

VO는 Id에 따라 개별적인 개체임을 구분하는 것이 아닌,
포함된 정보에 의해 동등성이 전적으로 결정되는 엔터티이다.

  • VO 속성
public void exFun (ValueObject vo) {
	ValueRow vRow = vo.getValueRow();
    String vString = vo.getString('key');
}

💡 Plus 지식

  • System.RoundingMode
  1. HALF_EVEN : 기본 반올림
  2. HALF_UP : 기본 반올림
  3. HALF_DOWN : 기본 반올림 (단, .5는 버림)
  4. CEILING : 양수 -> 올림, 음수 -> 버림
  5. FLOOR : 양수 -> 버림, 음수 -> 올림
  6. UP : 올림
  7. DOWN : 버림
profile
🥕 개발 공부 중 🥕

0개의 댓글