본 포스트에서는 지난 포스트 [SFDC] Salesforce 기초1) 무료판 계정 가입 및 HelloWorld 화면 표시 이어
Visualforce과 Apex를 연동하는 방법에 대해 설명하겠습니다.

 

※ 참고로, Salesforce는 일반적으로 MVC 모델을 사용하여 개발합니다.

즉, Visualforce 페이지View 가 되고, Apex 클래스에서 나머지인 ControllerModel을 개발합니다.

 

본 포스트에서는 지난 포스트에서 알려드린 개발 방법 중 Salesforce의 개발자 콘솔을 이용하는 방법을 사용하겠습니다.


# 목차

  • Salesforce 로그인 및 개발자 콘솔창 열기(복습)

  • Apex 클래스, Visualforce 페이지 만들기

  • Apex 클래스의 변수를 Visualforce 페이지에서 사용하기

  • Apex 클래스 내의 메서드를 통한 화면 전환


# Salesforce 로그인 및 개발자 콘솔창 열기(복습)

 

 Salesforce에 로그인하기 위해 http://login.salesforce.com에 접속합니다.

※위 주소는 개발이나 데모 환경에 로그인할 때 사용하는 로그인 주소입니다.

  실제 현장에서 제품을 제공하기 위해서 대용량의 환경(ex: sandbox 등)의 환경을 사용하는 경우에는 https://test.salesforce.com을 사용하지만, 현재는 신경 쓸 필요가 없습니다.

 

위 사이트에서 로그인을 하면 Salesforce의 설정 화면이 표시됩니다.
초기 화면으로 표시할 화면은 따로 설정 가능합니다.

 

표시된 화면 상단에서 로그인 유저의 이름을 클릭, [Developer Console] 링크를 눌러 개발자 콘솔을 표시합니다.


# Apex 클래스, Visualforce 페이지 만들기

 

1) Apex 클래스 만들기

개발자 콘솔에서 [File - New - Apex Class] 선택합니다.

그 후 표시되는 New Apex class 창에서 클래스명을 입력한 후, [OK] 버튼을 눌러 클래스를 생성합니다.

 

똑같은 방법으로, Apex 클래스의 메서드를 통한 화면 전환에 이용할 "CntrlPageRefB" 라는 명칭의 Apex클래스를 하나 더 만들어 줍니다.

 

2) Visualforce 페이지 만들기

개발자 콘솔에서 [File - New - Visualforce Page] 를 선택합니다.

그 후 표시되는 New Apex Page 창에서 페이지명을 입력한 후, [OK] 버튼을 눌러 페이지를 생성합니다.

 

똑같은 방법으로, "PageRefB" 라는 명칭의 페이지를 하나 더 만들어 줍니다.


# Apex 클래스의 변수를 Visualforce 페이지에서 사용하기

 

Apex는 Java를 베이스로 만들어졌기 때문에, 변수의 데이터 타입도 Java와 많이 닮아있습니다.

기본적으로 기본적으로 사용되는 변수의 데이터 타입은 다음과 같습니다.

  • 문자열 : String

  • 정수형 : Integer

  • 실수형 : Decimal

  • 논리형 : Boolean

이 외에도 Long, 클래스 변수, 오브젝트(개체) 변수 등이 있습니다.

 

그럼 각각의 변수를 사용해보도록 하겠습니다.

아래의 코드를 Apex 클래스 "CntrlPageRefA" 에 입력해주세요.

※ 개발자 콘솔의 텍스트 사이즈는 [Help - Preference - Editor Font size] 에서 변경 가능합니다만,
   개발자 콘솔을 새로고침 하거나 껐다가 다시 열었을 경우, 설정은 원래대로 돌아갑니다.(불-편)

/**
 * @description 변수 데이터타입 사용법 및 화면 전환 테스트용 클래스
 */
public class CntrlPageRefA {
	
    /**
     * @description 화면 표시용 변수 정의 
     */
    public String dspStr { get; set;}			// 문자열 변수
    public Integer dspInt { get; set; }			// 정수형 변수
    public Decimal dspDec { get; set; }			// 실수형 변수
    public Boolean dspBool { get; set; }		// 논리형 변수

    /**
     * @description 화면 입력용 변수 정의 
     */
    public String inputStr { get; set;}			// 문자열 변수
    public Integer inputInt { get; set; }		// 정수형 변수
    public Decimal inputDec { get; set; }		// 실수형 변수
    public Boolean inputBool { get; set; }		// 논리형 변수

    /**
     * @description 생성자
     */
    public CntrlPageRefA() {

        dspStr = '화면 표시용 문자열 변수 입니다.';
        dspInt = 10;
        dspDec = 10.00;
        dspBool = true;
    }

    /**
     * @description 화면 입력 변수 표시용 버튼 처리 메서드
     */
    public void dspInputData() {

        // 입력 데이터 화면 표시
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, '[inputStr] : ' + inputStr));
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, '[inputInt] : ' + inputInt));
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, '[inputDec] : ' + inputDec));
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, '[inputBool] : ' + inputBool));
    }
}

참고로 Apex에서의 문자열은 큰 따옴표("") 가 아닌 작은 따옴표('')로 표시합니다.
큰 따옴표를 사용할 경우 에러가 발생합니다.

 

또한, 화면과 연동할 변수는 반드시 get, set 변수로 만들어 주어야 합니다.

 

다음은 각 변수를 표시할 페이지(PageRefA)를 아래와 같이 작성합니다.

<!-- 변수 사용법 및 화면 전환 테스트용 화면 -->
<apex:page controller="CntrlPageRefA" sidebar="false">

    <!-- 화면에 표시할 메시지 표지란 -->
    <apex:pageMessages id="messagearea" showDetail="false"/>

    <apex:form id="form">
    	<!-- 화면 표시용 변수 사용 -->
    	<apex:pageBlock title="화면 표시용">
            <apex:outputText value="[String]: {!dspStr}"/>
            <br/>
            <apex:outputText value="[Integer]: {!dspInt}"/>
            <br/>
            <apex:outputText value="[Decimal]: {!dspDec}"/>
            <br/>
            <apex:outputText value="[Boolean]: {!dspBool}"/>
        </apex:pageBlock>

	<!-- 화면 입력용 변수 사용 -->
        <apex:pageBlock title="화면 입력용">
            <apex:outputText value="[String]: "/>
            <apex:inputText value="{!inputStr}"/>
            <br/>
            <apex:outputText value="[Integer]: "/>
            <apex:inputText value="{!inputInt}"/>
            <br/>
            <apex:outputText value="[Decimal]: "/>
            <apex:inputText value="{!inputDec}"/>
            <br/>
            <apex:outputText value="[Boolean(CheckBox)]: "/>
            <apex:inputCheckbox value="{!inputBool}"/>
            <br/><br/>

            <!-- 입력한 데이터의 값을 화면에 표시하기 위한 버튼 -->
            <apex:commandButton value="입력 데이터 표시" action="{!dspInputData}"/>
        </apex:pageBlock>
    </apex:form>
</apex:page>

위 코드에서 첫 번째 태그 <apex:page> 에서는 controller 속성을 통해 페이지에 사용할 컨트롤러를 지정해 주어야 합니다. 컨트롤러를 사용하지 않는 경우에는 생략 가능합니다.

sidebar 속성은 단순히 Salesforce의 표준 사이드 바의 표시 여부를 설정하는 속성입니다.

 

화면에서 컨트롤러 클래스의 변수나 메서드를 사용할 경우 "{![변수명]}" 또는 "{![메서드명]}" 형식으로 사용합니다.

 

그 외의, 버튼이나 링크에서 이벤트 처리를 설정하기 위해서는 "action" 속성을 사용합니다.

 

페이지 작성까지 마쳤다면, [설정 - 빌드 - 개발 - Visualforce 페이지] 로 이동하여 "PageRefA" 참조 화면을 표시,
[미리 보기] 버튼을 눌러 화면을 표시해주세요.

※이전 포스트에서 했던 방법대로 Tab을 추가해주셔도 됩니다.

 

작성한 페이지가 표시되면, 컨트롤러(CntrlPageRefA)에서 정의한 화면 표시용 변수의 값이 제대로 표시되는지 확인합니다.

또한, 화면 입력용 세션에 있는 각 항목에 값을 넣고 [입력 데이터 표시] 버튼을 눌러 입력한 값이 제대로 저장, 출력되는지 확인합니다.

※ 데이터 타입에 맞지 않는 값을 입력하면 에러 메시지가 표시됩니다. 

 

위 화면에서 Messages라고 나오는 노란 박스가 <apex:pageMessage> 태그입니다.


# Apex 클래스 내의 메서드를 통한 화면 전환

이전 포스트에서는 Visualforce 페이지 내부에서 URLFOR를 이용해 화면 전환하는 방법을 사용했습니다.

하지만 실제 개발을 하다 보면, Visualforce 페이지만으로 화면 전환을 구성하는 것에는 어려움이 따르기 마련입니다.

 

그때 사용하는 것이 컨트롤러 클래스 내부의 메서드를 통해 화면을 전환하는 방법입니다.

 

여기서는 1) Visualforce 에서 화면 전환 및 데이터를 전달하는 방법2) 컨트롤러의 메서드를 통해 화면 전환 및 데이터를 전달하는 방법 두 가지를 전부 설명하겠습니다.

즉, 두 방법 다 유용하게 사용될 수 있기 때문에, 편의에 맞춰서 사용하면 됩니다.

 

여기서 주의할 점은 화면 전환을 할 때 데이터도 같이 전달하기 위해는 URL에 "[파라미터명]=[값]" 형식으로 파라미터를 추가해주어야 합니다.

이것은 Apex, Visualforce 둘 다 똑같습니다.

 

방금 전에 사용했던 "CntrlPageRefA" 클래스에 아래의 메서드를 추가해줍니다.

    /**
     * @description 화면 전환 버튼 처리 메서드
     */
    public PageReference moveToPageRefB() {

        // 전환 대상 화면(페이지)를 지정
        PageReference nextPage = Page.PageRefB;

        // 화면에서 입력한 값을 URL 파라미터에 저장
        // 문자열 형식으로 전달해야만 하기 때문에, String.valueOf로 형변환
        nextPage.getParameters().put('inputStr', inputStr);
        nextPage.getParameters().put('inputInt', String.valueOf(inputInt));
        nextPage.getParameters().put('inputDec', String.valueOf(inputDec));
        nextPage.getParameters().put('inputBool', String.valueOf(inputBool));

        // 지정한 화면으로 전환
        return nextPage;
    }

추가로, URL 파라미터를 저장할 때에는 반드시 문자열 형태로 전달해야 합니다.

그렇기 때문에 "String.valueOf"를 사용하여 값을 형 변환을 시켜줍니다.

 

다음으로 "PageRefA"메서드를 사용할 버튼Visualforce 화면에서 화면 전환을 하기 위한 버튼을 추가해줍니다.

물론 버튼 이외에 이전 포스트에서 사용했던 <apex:commandLink>, <apex:outputLink> 등도 사용 가능합니다.

<!-- 화면 전환 -->
<apex:pageBlock title="화면 전환용">
	<!-- 컨트롤러의 메서드를 사용할 버튼 -->
	<!-- URL파라미터 지정형식 : [파라미터명]=[값],[파라미터명]=[값], ...  -->
	<apex:commandButton value="메서드로 화면전환" action="{!moveToPageRefB}"/>

	<!-- Visualforce 내에서 화면 전환 및 데이터 전달하기위한 버튼 -->
	<apex:commandButton value="Visualfoce내에서 화면전환" 
			    action="{!URLFOR($Page.PageRefB, null, [inputStr=inputStr, inputInt=inputInt, inputDec=inputDec, inputBool=inputBool])}"/>
</apex:pageBlock>

위와 같이, Apex 컨트롤러에서 데이터를 전달하기 위해 파라미터를 지정하는 방법Visualforce 내에서 파라미터를 지정하는 방법이 다르기 때문에 상황에 맞게 더 편한 쪽을 선택하여 사용하는 것이 좋습니다.

 

다음으로 URL 파라미터로 전달받은 값을 화면에 표시하기 위해 Apex 클래스 "CntrlPageRefB" 와 Visualforce 페이지 "PageRefB" 를 간단히 작성해봅시다.

 

"CntrlPageRefB"는 아래와 같이 작성합니다.

/**
 * @description PageRefA에서 전달받은 데이터를 표시할 페이지의 컨트롤러
 */
public class CntrlPageRefB {

    public String paramStr { get; set; }		// 문자열 
    public Integer paramInt { get; set; }		// 정수형
    public Decimal paramDec { get; set; }		// 실수형
    public Boolean paramBool { get; set; }		// 논리형

    /**
     * @description 생성자
     */
    public CntrlPageRefB() {

        // 현재 페이지의 URL에서 각 파라미터에 저장된 값을 습득, 변수에 저장
        // 문자열 형태로 전달되었기 때문에, 각 변수에 맞는 데이터 타입으로 형변환
        paramStr = ApexPages.currentPage().getParameters().get('inputStr');
        paramInt = Integer.valueOf(ApexPages.currentPage().getParameters().get('inputInt'));
        paramDec = Decimal.valueOf(ApexPages.currentPage().getParameters().get('inputDec'));
        paramBool = Boolean.valueOf(ApexPages.currentPage().getParameters().get('inputBool'));
    }
}

 

페이지 "PageRefB"는 각 변수를 표시하도록 간단하게 작성하겠습니다.

<!-- 화면 전환시에 전달 받은 데이터를 표시하기 위한 페이지 -->
<apex:page controller="CntrlPageRefB" sidebar="false">
    <apex:form id="form">
        <apex:outputText value="[paramStr]: {!paramStr}"/>
        <br/>
        <apex:outputText value="[paramInt]: {!paramInt}"/>
        <br/>
        <apex:outputText value="[paramDec]: {!paramDec}"/>
        <br/>
        <apex:outputText value="[paramBool]: {!paramBool}"/>
        <br/>
        <apex:outputText value="[paramBool(checkbox)]: "/>
        <apex:inputCheckbox value="{!paramBool}"/>
    </apex:form>
</apex:page>

 

작성이 완료되었다면, 다시 한번 "PageRefA" 화면을 표시한 후, 각 항목을 입력합니다.

입력이 끝난 후, [메서드로 화면전환] 또는 [Visualforce내에서 화면전환] 버튼을 눌러 화면 전환이 되는지 확인합니다.

그리고, "PageRefA"에서 입력한 값이 "PageRefB"화면에서 제대로 표시되는지 확인합니다.

 

< PageRefA >

 

< PageRefB >


이상으로 Apex와 Visualforce를 연동하여 개발하는 방법에 대해 알아보았습니다.

 

다음에는 오브젝트(개체)를 작성하는 방법과 사용하는 방법에 대해 알아보겠습니다.

 

 

 

참고1) https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_variables.htm - Apex 개발자 가이드_데이터 타입

 

 

 

 

 

 

 

 

본 포스트에서는 Salesforce의 무료 체험판(30일) 계정 등록 및 화면을 표시하는 방법에 대해 설명하겠습니다.


# 목차 

  • Salesforce 계정 등록

  • 페이지(화면) 작성 및 표시(브라우저)

  • 페이지(화면) 작성 및 표시(개발자 콘솔)

  • 작성한 페이지를 표시할 탭을 생성 및 탭 표시


# Salesforce 계정 등록

 

원래 회사 같이 Salesforce로 제품을 만들어 판매하기 위해선, 에디션을 구매해야 합니다.

※ 에디션 종류에 대해선 여기를 참조해주세요.

 

그리고 에디션을 구매한 경우, 개발 환경이나 데모 환경을 만들 수 있는 관리용 계정을 Salesforce로 부터 받습니다.

(현재 회사에서는 CRM환경이라 칭하는데 정확한 명칭인지는 잘 모르겠다)

 

그 후, 관리용 계정을 이용해 개발용 환경(계정) 이나 데모용 환경(계정)을 만들도록 되어 있지만, 본 블로그에서는 무료판 계정을 만들어 사용하겠습니다.

※ 복수 개의 계정을 만들 수 있기 때문에 무료 기간이 끝난다면 새로 만들어서 사용하면 됩니다.

 

먼저, Salesforce 개발자용 사이트에 접속합니다.

https://developer.salesforce.com/signup?d=70130000000td6N

 

그 후, 아래의 사진과 같이 정보를 입력합니다.

 ※ [Username] 항목이 로그인 ID가 될 것이니 잘 기억해 두시길 바랍니다.

 

입력이 끝난 후, 맨 밑에 있는 [Sign me up] 버튼을 누르면 [Email] 항목에 입력한 메일 주소로 계정 확인 메일이 날아옵니다.

 

메일을 왔다면, 메일에 있는 [계정 확인] 버튼을 눌러주세요.

계정 확인 버튼을 누르면 비밀 번호를 설정하기 위한 Salesforce 브라우저가 열립니다.

여기서 비밀 번호를 설정한 후, [암호 변경] 버튼을 눌러주세요.

이렇게 해서, Salesforce의 무료판 계정 등록이 완료되었습니다.

 

계정 등록이 완료된 후, 처음으로 표시되는 Salesforce의 페이지는 Lightning Experience 화면이기 떄문에, Salesforce Classic 으로 전환해 주겠습니다.

 

화면 오른쪽 위에 있는 아이콘 모양을 눌러 [Salesforce Classic으로 전환] 링크를 눌러줍니다.

 

아래의 화면이 Salesforce Classic의 홈 화면입니다.

 

이것으로 Salesforce의 개발용 무료 계정 등록이 완료되었습니다.


# 페이지(화면) 작성 및 표시(브라우저)

 

화면 상단에 있는 [설정] 링크를 눌러 Salesforce 설정 화면을 표시합니다.

 

그 후, 화면 왼쪽에 있는 메뉴에서 [개발 -> Visualforce 페이지] 를 클릭하거나 또는 [빠른 찾기/검색] 란에서 "Visualforce 페이지" 를 입력한 후 표시되는 [Visualfoce 페이지] 링크를 클릭해 "VIsualforce 페이지" 화면을 표시합니다.

빠른 검색을 할 경우, Enter를 누르면 다른 화면으로 전환되기 때문에, 절대 Enter를 누르지 말아주세요.

 

그 후, Visualforce 페이지 화면에서 [새로 만들기] 버튼을 눌러 페이지 편집 화면을 표시합니다.

 

Visualforce 페이지 편집 화면에서 아래의 코드를 입력한 후 [저장] 버튼을 눌러줍니다.

물론, 필수 입력 항목인 레이블과 이름 항목도 입력해줍니다.

※ 필수 입력 항목

  • 레이블 : 페이지의 타이틀
  • 이름 : 페이지의 API 참조명 (소스코드에서 화면을 참조할 때 사용되는 명칭)

     

<apex:page>
  <h1>Hello World!</h1>
  <br/>
  <apex:outputText value="Apex outputText 테스트"/>
  <br/>
  <apex:outputLink value="https://developer.salesforce.com/docs/atlas.en-us.224.0.pages.meta/pages/pages_compref.htm">Visualforce Developer Guide</apex:outputLink>
</apex:page>

 

저장한 후에 표시되는 페이지의 상세화면에서 [미리보기] 버튼을 눌러 작성한 화면이 잘 표시되는지 확인합니다.

 

위의 코드에서 알 수 있듯이, Salesforce의 화면을 구성하는 Visualforce에서는 HTML태그도 사용할 수 있습니다.

또한 javascript도 사용할 수 있으므로, Salesforce에서 제공되는 태그(ex: apex:outputText)의 기능만으로 구현할 수 없는 기능도 html, javascript, visualforce를 혼합하여 만들어낼 수 있습니다.

 

여기까지가 Salesforce의 브라우저 환경에서 페이지를 만드는 방법이었습니다.


# 페이지(화면) 작성 및 표시(개발자 콘솔)

 

Salesforce에는 브라우저 상에서도 개발할 수 있는 환경이 제공된다는 장점이 있습니다.

 

하지만, 방금 전에 생성한 페이지와 같이, 브라우저 상에서 소스코드를 작성하다 보면 상당히 불편한 점이 생기는 경우도 있습니다.

 

이러한 불편함을 조금이나마 덜어주기 위해 Salesforce에서는 [개발자 콘솔] 이라는 기능을 제공하고 있습니다.

개발자 콘솔을 이용해 또 다른 페이지를 작성해 보도록 하겠습니다.

 

먼저, 화면 상단부에서 설정 왼쪽에 있는 로그인 유저명을 클릭한 후, [개발자 콘솔] 또는 [Developer Console] 을 클릭해줍니다.

 

그러면 아래와 같은 팝업창이 표시되며, 이것이 개발자 콘솔입니다.

개발자 콘솔창이 열렸다면 [File - New - Visualforce Page]를 누른 후, 페이지명을 입력하고 [OK]버튼을 눌러줍니다.

 

이것으로 페이지가 생성되었습니다.

아까와 같이 코드를 작성한 후, [File - Save] 버튼을 누르거나, [CTRL + S]를 눌러 소스코드를 저장해줍니다.

※ 이번 코드에서는 VIsualforce 에서 다른 페이지로 이동하는 링크를 추가했습니다. (이후에 따로 포스팅 할 예정)

<apex:page>
  <h1>Hello World2</h1>
  <br/>
  <apex:outputText value="개발자 콘솔 테스트"/>
  <br/>
  <!-- 처음에 만든 HelloWorld화면으로 이동하는 링크 -->
  <apex:outputLink value="{!URLFOR($Page.HelloWorld)}">
      <apex:outputText value="HelloWorld 페이지에 이동"/>
  </apex:outputLink>
</apex:page>

 

저장이 완료되면 아까와 같이 [설정 - 개발 - Visualforce 페이지] 을 클릭해 Visualforce 페이지로 이동한 후, 방금 작성한 "Hello World2" 페이지의 상세 화면을 표시합니다.

 

그 후, [미리보기] 버튼을 눌러 화면을 표시합니다.

 

위 화면에서 "HelloWorld 페이지에 이동" 링크를 누르면 처음에 만든 HelloWorld 페이지로 이동되는 것을 확인할 수 있습니다.

 

여기까지가 개발자 콘솔을 사용해서 Visualforce 페이지를 만드는 방법이었습니다.


# 작성한 페이지를 표시할 탭 생성 및 표시

 

여기서 탭이란 홈, Chatter, 라이브러리 등이 표시되어 있는 부분을 탭이라고 합니다.

 

작성한 페이지를 탭으로 만들어서 추가해두면 페이지를 표시하는 것이 편리해집니다.

 

그럼 생성을 위해 [설정 - 빌드 - 만들기 - 탭] 링크를 클릭하거나, [빠른찾기/검색] 에서 탭을 입력하여 [탭] 링크를 클릭합니다.

 

그 후, 사용자 정의 탭 화면의 Visualforce 탭 세션에 있는 [새로 만들기] 버튼을 클릭해 "새 Visualforce 탭" 화면을 표시합니다.

 

새 Visualforce 탭 화면이 표시되면 아래와 같이 입력한 후 [다음] 버튼을 누릅니다.

※ 입력 항목 정보

  • Visualforce 페이지 : 탭을 생성할 페이지

  • 탭 레이블 : 화면에 표시될 탭 명칭

  • 탭 이름 : 소스코드에서 참조할 수 있는 API 참조명

  • 탭 스타일 : 탭으로 표시한 화면의 스타일

 

그 다음에 표시되는 "2단계: 프로필에 추가" 는 이 탭을 사용할 수 있는 권한을 지정하는 화면입니다.

현재에는 아무것도 설정할 필요 없이 [다음] 버튼을 눌러줍니다.

 

그 다음에 표시되는 "3단계: 사용자 정의 앱에 추가" 는 이 탭을 표시할 애플리케이션을 지정하는 화면입니다.

현재에는 아무것도 설정할 필요가 없기 떄문에 그대로 [저장] 버튼을 눌러 탭을 저장합니다.

 

위와 같이 탭이 생성된 것을 확인할 수 있습니다.

탭을 생성하면 자동적으로 탭 리스트에 추가가 되지만, 탭의 표시/비표시를 직접 설정하는 방법을 설명하겠습니다.

 

탭 리스트의 가장 오른쪽에 있는 [+] 버튼을 눌러 "모든 탭" 화면을 표시합니다.

그 후, 화면 우측에 있는 [내 탭 사용자 정의] 버튼을 눌러 "내 탭 사용자 정의" 화면을 표시합니다.

 

"내 탭 사용자 정의" 화면에서 표시하고 싶은 탭을 [선택한 탭] 으로 이동시켜 탭 리스트에 추가, 또는 반대로 제거할 수 있습니다.


이상으로 Salesforce 개발환경 계정 등록 및 Visualforce 페이지 작성 방법에 대해 알아보았습니다.

 

이후에는 Salesforce 개발의 기본이 될 Apex코드와 Visualforce 코드를 연동하여 개발하는 방법에 대해 알아보겠습니다.

 

 

 

참고1) https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_outputLink.htm - Salesforce 개발자 가이드(outputLink)

 

 

 

 

본 포스트에서는 Salesforce란 무엇인가에 대해 간단하게 설명하겠습니다.


# 목차

  • Salesforce란?

  • Salesforce의 특징

  • Salesforce 내의 협업 도구


# Salesforce란?

 

Salesforce란 salesforce.com, inc. (세일즈 포스 닷컴 회사)이 개발 · 제공하고있는 클라우드 기반의 CRM (Customer Relationship Management) 솔루션입니다.

 

현재, 전세계 클라우드 컴퓨팅 시장에서 세계 No.1의 점유율을 자랑하고 있으며,
마케팅, 영업, 지원 등 각 업무를 지원하는 소프트웨어가 Web에서 서비스 이른바 SaaS (Software as a Service)로 제공되고 있기 때문에 인터넷 환경이 있으면 언제 어디서나 사용할 수 있습니다.

 

또한, Salesforce 는 SaaS의 편의를 더 높이기 위해 PaaS (Platform as a Service) 에 의한 어플리케이션 개발을 실현 시킨 Force.com도 있습니다.

 

PaaS (Platform as a Service)애플리케이션 개발 플랫폼 (소프트웨어를 실행하는 OS 나 개발 환경)를 Web상에서 서비스로 제공하는 방법입니다.

 

Salesforce에서 사용되는 개발 언어는 크게 2가지가 있습니다.

  • Apex : JAVA를 베이스로 만든 Salesforce 자체 개발 언어
  • Visualforce : 화면을 구성하는데에 사용되는 자체 개발 언어 (HTML과 유사)

# Salesforce의 특징

 

1) 복잡한 환경 구축이나 유지 보수 필요X, 애플리케이션 바로 사용 가능

 

 SaaS (Software as a Service) 형태라는 것의 장점은, 복잡한 서버 환경이나 네트워크 환경의 구축, 구성, 관리, 유지 보수 등의 작업이 필요없고, 계약만 하면, 간편하게 사용할 수 있다는 것입니다.

 

특히, 보안 위협과 재해 비즈니스 연속성 (BCP : Business Continuity Plan)에 대해서도 세일즈 포스 닷컴 사가 지원해 주고 있기 때문에 사용자는 응용 프로그램을 사용하는 데에만 집중할 수 있습니다.

 

또한, 필요한 기능을 선택하고 필요한 만큼의 요금만 지불하면 이용할 수 있기 때문에 유지 보수가 필요하지 않다는 점을 합쳐도 전체 비용의 절감으로 이어집니다.

 

그렇다 하더라도, 기밀 정보인 고객 정보를 클라우드에 저장하는 것에 대한 불안을 갖고 있는 사람도 있으리라 생각됩니다만, 세일즈 포스 닷컴 사는 미 국방부를 비롯한 각종 제삼자 기관이 정하는 보안 요구 사항을 클리어하고 있습니다.

 

따라서, 업종이나 사업의 규모를 불문하고 사용할 수 있으며, 특히, 소규모 사업자나 중소기업이 저렴한 비용으로 고효율을 낼 수 있습니다.

 

2) PaaS (Platform as a Service)를 제공, 독자적인 응용 프로그램 개발 가능

 

 Salesforce에서 제공되는 표준 응용 프로그램과 표준 기능만으로는 불충분 한 경우, 또는 Salesforce를 더욱 사용하기 쉽게하고 싶다는 요구에도 대응할 수 있도록 애플리케이션 개발 플랫폼인 PaaS (Platform as a Service) 환경을 제공하고 있습니다. 

 

Salesforce의 다양한 기능을 부품으로 이용할 수있는 「Lightning Platform (구 Force.com) '과
다국어를 대응하고 독자적인 애플리케이션을 개발할 수 있는 "Heroku"두 PaaS를 제공하고 있습니다.

 

인터넷만 연결되어 있다면, 응용 프로그램 개발에 필요한 OS 나 데이터베이스, Web 서버, 개발 환경 등을 언제 어디서나 사용할 수 있습니다. 

 

또한, 이러한 운용도 Salesforce에서 다 해주기 때문에 개발자는 애플리케이션 개발에만 전념 할 수 있습니다.

 

3) 다른 시스템과의 통합이 가능

 

Salesforce는 파트너가 되고 있는 타사 제품과의 연계가 가능합니다.

 

예를 들어, "Salesforce for Google Apps" 기능을 사용하면 Salesforce 응용 프로그램상에서 Google, Inc.의 Gmail (이메일)과 Google Calendar 등의 Google Apps를 연계하여 사용할 수 있습니다.

 

즉, 지금까지 다른 시스템과는 따로 관리하던 정보를 Salesforce와 연계하는 것을 통해서 통합 관리 할 수 있습니다.

 

※ Google Drive, Google Calendar와 연계하여 사용하는 방법에 대해서는 추후 기술 포스트를 올릴 예정입니다.


# Salesforce 내의 협업 도구

 

1) 사내 정보 공유를 위한 SNS Chatter

 

"Chatter'은 사내 정보 공유 SNS입니다. 

 

고객 및 파트너 커뮤니티 등에서 얻은 정보를 신속하게 부서 · 부문간에 공유 할 수 있습니다.

 

Salesforce의 어떤 응용 프로그램과도 연계하고 있으며, 스마트 폰 및 모바일에도 대응하고 있기 때문에, 언제 어디서나 정보 교환을 할 수 있습니다.

 

2) 팀의 생산성을 향상시키는 Quip

 

"Quip"는 문서나 스프레드 시트, 슬라이드를 온라인에서 작성, 공동 편집 할 수 있는 협업 도구입니다.

 

Microsoft Office 또는 G Suite와 비슷하다고 생각하시면 됩니다.

 

또한, 이 응용 프로그램은 스마트 폰과 모바일에 대응하고 언제 어디서나 액세스 할 수 있으므로 생산성 향상에도 연결됩니다.

 

3) 「AppExchange」를 통해 다양한 애플리케이션을 사용 가능

 

AppExchange는 Salesforce를 보완하는 구성 요소와 다양한 비즈니스 응용 프로그램을 추가하거나 사용할 수 있는 온라인 마켓 플레이스입니다.

 

Salesforce Platform에서 개발 공개되고있는 다양한 응용 프로그램을 몇 번의 클릭만으로 설치할 수 있기 때문에 자사의 Salesforce를 쉽게 확장 할 수 있습니다.

 

공개 된 애플리케이션 중에는 유료인 것과 무료인 것이 있으며, 예산과 요구에 맞는 최적의 응용 프로그램을 선택하여 이용할 수 있습니다.

 

마케팅 지원, 영업 지원, 서비스 지원뿐만 아니라 인사 관련 설비 관련 등 다양한 장르의 프로그램이 공개되어 있습니다.


이상으로 Salesforce에 대한 기본적인 지식에 대해 알아보았습니다.

 

물론 이 이외에도 다양한 기능과 특징, 장점들이 많이 있습니다만, 현재 단계에서는 Salesforce라는 것이 무엇인가에 대한 개념 정리만 하였습니다.

 

아직까지 알지 못하는 것과 알고 있다 하더라도 사용해 본 적이 없는 기능들이 많이 있기 때문에, 차근차근 공부해 볼 생각입니다.

'Salesforce.com' 카테고리의 다른 글

[SFDC] 개체 레코드 타입에 따른 사용 방법  (0) 2020.08.03

경고) 글자만 주구장창 써 내려갈 예정이기 떄문에, 읽기 싫으신 분은 살포시 뒤로가기를 눌러주세요.

 

 현재 한국에서 Salesforce를 사용하는 회사가 몇 군데인가 있는 것으로 알고 있습니다만, 

 

아직 Salesforce가 정식으로 한국에 진출하지 않았기 때문에 Salesforce라는 것이 무엇인지 들어보지 못한 분들이 많을 것이라 생각됩니다.

저도 일본에 와서 처음으로 들어봤다는 사실..

 

(여담으로 원래는 올해(2020년)에 진출하려 했으나, 코로나 때문에 무한 연기 중이라는 이야기를 현재 회사 사장한테서 들었습니다.)

 

현재 세계적으로도 Salesforce가 큰 인기를 끌고 있고,
만약 한국에도 진출하게 된다면 Salesforce를 공부하고자 하는 개발자들이 생길 것이라 생각합니다.

 

하지만 제가 일본에 와서 입사했을 당시(약 3~4년 전)에도 그랬지만,
현재에도 Salesforce를 공부하고자 검색해 보아도, 한국어로 된 블로그가 거의 없습니다.
아예 없다고 무방할 정도.

 

애초에 Salesforce가 미국 회사이다 보니, Salesforce Guide기본적으로 영어로 되어 있습니다. 
다행히(?) 몇 년 전부터 이미 일본에 진출해 있었기 때문에 일본어도 지원하고 있습니다.
(물론 제가 모르는 다른 언어도 있을지 모르지만)

 

그렇다 보니, 입사 당시 고작 6개월밖에 공부하지 못했던 일본어 실력과
후회만 가득한 영어 실력을 가지고 Salesforce를 공부하는 데에 정말 고생을 많이 했었습니다.

 

심지어, 특별히 연수가 있는 회사도 아니고, 바로 공부 겸 프로젝트를 하기 시작했기 때문에,
매일 혼나고, 퇴근하고 와서 사용법 공부하고...

 

그렇게 공부를 하던 당시,
'내가 알기론, Salesforce로 개발하고 있는 한국인이 생각보다 있는 걸로 알고 있는데 왜 한국어로 설명하고 있는 블로그가 없는 거지?'라는 의문을 갖고,

'내가 Salesforce 좀 잘하게 되면 한국어로 블로그 하나 만들어볼까?' 라고 생각하게 되었습니다.

 

또한, 아무래도 개발 방법 위주로 독학을 했었기 때문에, 주변 사람들이 "Salesforce가 뭐냐?"라고 물어보면, 어떻게 대답해야 할지 몰라 당황할 정도입니다.
기껏 대답해봐야 "클라우드에서 제품을 개발하고 판매할 수 있는 환경을 제공해주는 회사"라고 밖에 대답을 해주지 못 할 정도..

 

그렇기 때문에, 제 자신도 개념 적인 부분에서 다시 한번 공부 하면서,
내가 알고 있는 기술이나 노하우 등을 공유하고자 하여 이 블로그를 운영하기 시작하게 되었습니다.

 

물론, 아직도 모르는 부분이 많아 계속 공부 중이지만, 제가 알고 있는 것을 최대한 알려드릴 수 있도록 하겠습니다.

 

언제든지 궁금하신 부분이 있다면 댓글이든 방명록이든 물어봐주시면 아는 범위 내에서 최대한 답변해 드리겠습니다.

'잡담' 카테고리의 다른 글

요즘 왜 글을 안올리냐면..  (2) 2021.06.16
[잡담] 요즘 좀..  (0) 2020.07.08

이전 포스트에서는 Git과 GitHub을 사용하는 방법을 간단하게 설명했습니다.

 

이번 포스트에서는 Git을 이용하여 버전 관리 또는 다른 개발자들과 협력하는 방법에 대해서 설명하겠습니다.


# 목차

  • Git을 이용한 협업 워크 플로우

  • Branch를 이용한 협업 방법
    1) master 를 개발용 develop 브랜치에 복제
    2) develop 브랜치를 베이스로 feature 브랜치 생성
    3) 담당 업무 수행 및 수정 내용 commit
    4) Pull Request 송신
    5) 승인 후 병합(Merge)


# Git을 이용한 협업 워크플로우

Master : 배포 이력을 관리하기 위한 브랜치(태그로 관리)

Hotfix : 제품을 배포한 후 발견된 버그 등을 수정하기 위해 임시로 사용하는 브랜치

Release : 제품을 배포하기 위해 준비를 하는데에 사용하는 브랜치

Develop : 개발이 완성된 기능(Feature)들을 병합하기 위한 브랜치

Feature : 기능을 개발하기 위해 사용하는 브랜치(개발자가 각자 작업을 하는데에 사용)


Branch를 이용한 협업 방법

 

1) master 를 개발용 develop 브랜치에 복제

먼저, master를 복제할 develop용 로컬 저장소를 생성합니다.

 

  mkdir develop    // develop 디렉토리 작성

  cd develop         // develop 디렉토리에 이동

  git init               // 디렉토리를 Git저장소로 변환

 

그 후, Master를 Develop 저장소에 복제(Clone)합니다.

 

  git clone [공유 Master Repository URL]

 

ex) 본 포스트에서는 이전 포스트에서 만들었던 Repository를 마스터로 하겠습니다.

 

  git clone github.com/[유저명]/Test001.git

 

마지막으로, develop 브랜치를 생성하고 저장소에 push해줍니다.

 

  git branch develop                     // develope 브랜치 생성

  git push -u origin develop       // develope 브랜치를 저장소에 push

 

2) develop 브랜치를 베이스로 feature브랜치를 생성

각자 개발자가 본인의 업무를 위해 feature브랜치를 생성합니다. 이 때, master가 아닌 develop 브랜치를 기준으로 브랜치를 따야 합니다.

  

  git branch feature_branch develop    // develop 브랜치를 베이스로 feature_branch를 생성

  git branch                                                // 생성된 브랜치 리스트를 확인

 

결과 화면)

 

3) 담당 업무 수행 및 수정 내용 commit 및 push

작업 할 feature_branch 로 이동한 후, 개발 작업을 수행합니다. 

개발 작업이 끝나면 변경된 내용을 commit 및 push합니다.

 

본 포스트에서는 이전 포스트에서 작성했던 "test.html"파일을 수정하겠습니다.

 

먼저, feature_branch로 이동한 후, 파일을 아래와 같이 수정해줍니다.

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>HelloWorld</title>
  </head>
  <body>
<!-- <h1></h1>태그 추가_start -->
    <h1>Hello?</h1>  
<!-- <h1></h1>태그 추가_end -->
  </body>
</html>

수정이 완료되었다면, 아래의 코드로 수정된 파일을 commit 및 원격 저장소에 push 해줍니다.

 

  git add test.html

  git commit -m "add tag <h1>"

  git push git push --set-upstream origin feature_branch

 

4) Pull Request 송신

수정한 파일이 원격저장소에 성공적으로 push 되었다면, GitHub에서 해당 Repository를 확인합니다.

Repository의 내부를 보면, 노란색 블록으로 feature_branch가 push 되었다고 알려줍니다.

사진과 같은 노란색 블록이 표시되었다면, 오른쪽에 "Compare & pull request" 버튼을 눌러 "Open a pull request"화면을 표시합니다.

 

[1]: develop로 변경해줍니다.

[2]: 변경된 내용을 기입합니다.

[3]: 톱니바퀴 버튼을 눌러, 리뷰를 받을 상대를 선택합니다.

[4]: 톱니바퀴 버튼을 눌러, 본인을 선택합니다.

 ※ 필요에 의해 다른 항목도 추가 입력 해줍니다.

 

입력이 끝났다면, "Create pull request"버튼을 눌러 Pull Request를 요청해줍니다.

 ※ 상황에 따라, "Create pull request"가 아닌, 화살표 버튼을 눌러 "Create draft pull request"를 우선적으로 사용하는 경우가 있습니다. 

이 부분은 사람에 따라, 회사에 따라 사용법이 바뀔 수 있습니다.

 

5) 승인 후 병합(Merge)

상대방으로부터 Pull Request의 승인을 받았다면, feature_branch 브랜치에서 수정한 내용을 develop 브랜치에 병합합니다.

위 화면에서, "Merge pull request"버튼을 눌러줍니다.

이 후에 표시되면 위 화면에서 "Confirm merge"버튼을 눌러 develop브랜치에 병합합니다.

 

병합이 완료되면, "Delete branch"버튼을 눌러 필요가 없어진 feature_merge를 삭제해줍니다.

경우에 따라, 수정 이력을 남기기위해 feature브랜치를 삭제하지 않고 남기는 경우도 있습니다.


이상으로, Git과 GitHub을 이용한 버전 관리 및 협업 방법에 대해 간단히 알아보았습니다.

 

master와 develop를 나누어 사용하는 방법이나 pull request를 사용하는 방법 등, Git 과 GitHub를 이용하여 협업을 하는 방법은 같이 일하는 개발자, 또는 회사의 업무 방법에 따라 전부 달라지기 마련입니다.

 

그 때 그 때 상황에 맞춰 능동적으로 Git · GitHub을 사용할 수 있도록 더 공부를 할 필요가 있을 것 같습니다.

 

p.s) 코로나 때문에 원격으로 GitHub에 대한 지식을 알려준 Hamill 님에게 심심한 감사 인사 남기겠습니다.

(블로그에 박-제)

 

도움1) https://velog.io/@kameals - Hamill

참고1) https://blog.appkr.dev/learn-n-think/comparing-workflows/ - Git을 이용한 협업 워크플로우 배우기

참고2) https://mrw0119.tistory.com/120 - [GitHub] 튜토리얼 - 깃허브 사용법

+ Recent posts