Apex ์์ํ๊ธฐ
ํ์ต ๋ชฉํ
์ด ์ ๋์ ์๋ฃํ๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- Apex ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ค๋ช
ํ ์ ์์ต๋๋ค.
- Apex ํด๋์ค๋ฅผ ์ ์ฅํ๊ณ Anonymous.Apex๋ก ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
- Developer Console์ ์ฌ์ฉํ์ฌ ๋๋ฒ๊ทธ ๋ก๊ทธ๋ฅผ ๊ฒ์ฌํ ์ ์์ต๋๋ค.
์์ํ๊ธฐ ์ ์
์ฌ๋ฌ๋ถ๊ณผ ํจ๊ป Apex ๋ชจํ์ ์์ํ๊ฒ ๋์ด ๋๋จํ ๊ธฐ์ฉ๋๋ค. ์ด ๋ชจ๋์์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ๊ธฐ๋ณธ ์ฌํญ์ ๋ค๋ฃจ์ง๋ง, ๊น์ด ์๋ ๋ด์ฉ๋ ํจ๊ป ์ดํด๋ณผ ์์ ์ ๋๋ค. ์ด ๋ชจ๋์ด Apex์ ๋ํ ์ฒซ ๋ฒ์งธ ํ์ต์ธ ๊ฒฝ์ฐ ๋จผ์ ๋น ๋ฅธ ์์: Apex ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ ํ์ ๋ค์ ๋์์ค์ธ์. ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ฒ ์ต๋๋ค!
Apex๋ ๋ฌด์์ธ๊ฐ์?
Apex๋ Java์ ์ ์ฌํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ ํ๋ก์์ ์ ๊ฐ์ด ์๋ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. Apex๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ฒํผ ํด๋ฆญ, ๊ด๋ จ ๋ ์ฝ๋ ์ ๋ฐ์ดํธ ๋ฐ Visualforce ํ์ด์ง์ ๊ฐ์ ์์คํ ์ด๋ฒคํธ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ธ์ด๋ก์์ Apex๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
ํธ์คํ
๋จ - Apex๋ ์๋ฒ์ธ Salesforce Platform์์ ์ ์ฅ, ์ปดํ์ผ ๋ฐ ์คํ๋ฉ๋๋ค.
-
๊ฐ์ฒด - ์งํฅ - Apex๋ ํด๋์ค, ์ธํฐํ์ด์ค ๋ฐ ์์์ ์ง์ํฉ๋๋ค.
-
๊ฐ๋ ฅํ ํ์ - Apex๋ ์ปดํ์ผ ํ์์ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํฉ๋๋ค.
-
๋ฉํฐ ํ
๋ํธ ์ธ์ - Apex๋ ๋ฉํฐ ํ
๋ํธ ํ๋ซํผ์์ ์คํ๋๋ฏ๋ก ๊ณต์ ๋ฆฌ์์ค๋ฅผ ๋
์ ํ๋ ์ฝ๋๋ฅผ ๋ฐฉ์งํ๋ ์ ํ์ ์ ์ฉํ์ฌ ๋ฐ์ด์จ์ด ์ฝ๋๋ฅผ ์ฒ ์ ํ ๋ณดํธํฉ๋๋ค.
-
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํตํฉ - ๋ ์ฝ๋์ ์ก์ธ์คํ๊ณ ์ด๋ฅผ ์กฐ์ํ๋ ๊ฒ์ด ๊ฐ๋จํฉ๋๋ค. Apex๋ ๋ ์ฝ๋ ๋ฐ ํด๋น ํ๋์ ๋ํ ์ง์ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๊ณ ํด๋น ๋ ์ฝ๋๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ๋ฌธ ๋ฐ ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
-
๋ฐ์ดํฐ ์ค์ฌ - Apex๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ํธ๋์ญ์
์ก์ธ์ค๋ฅผ ์ ๊ณตํ์ฌ ์์
์ ๋กค๋ฐฑํ ์ ์๋๋ก ํฉ๋๋ค.
-
์ฌ์ฉ ์ฉ์ด์ฑ - Apex๋ ์น์ํ Java ๊ด์ฉ๊ตฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
-
ํ
์คํธ ์ฉ์ด์ฑ - Apex๋ ์ ๋ ํ
์คํธ ์์ฑ, ์คํ ๋ฐ ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง์ ๋ํ ๊ธฐ๋ณธ ์ ๊ณต ์ง์์ ์ ๊ณตํฉ๋๋ค. Salesforce๋ ํ๋ซํผ ์
๊ทธ๋ ์ด๋ ์ ์ ๋ชจ๋ ์ ๋ ํ
์คํธ๋ฅผ ์คํํ์ฌ ๋ชจ๋ ์ฌ์ฉ์ ์ ์ Apex ์ฝ๋๊ฐ ์์๋๋ก ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
-
๋ฒ์ ๊ด๋ฆฌ - ์ฌ์ฉ์ ์ ์ Apex ์ฝ๋๋ API์ ์ฌ๋ฌ ๋ฒ์ ์ ๋ง๊ฒ ์ ์ฅํ ์ ์์ต๋๋ค.

Apex ์ธ์ด ํ์ด๋ผ์ดํธ
๋ค๋ฅธ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์์ Apex๊ฐ ์ง์ํ๋ ์ธ์ด ๊ตฌ์ฑ ์ค ์ผ๋ถ์ ๋๋ค.
- ํด๋์ค, ์ธํฐํ์ด์ค, ์์ฑ, ์ปฌ๋ ์
(๋ชฉ๋ก, ๋งต, ์ธํธ)
- ๊ฐ์ฒด ๋ฐ ๋ฐฐ์ด ํ๊ธฐ๋ฒ
- ํํ์, ๋ณ์ ๋ฐ ์์
- ์กฐ๊ฑด๋ฌธ(if-then-else) ๋ฐ ์ ์ด ํ๋ก ๋ฌธ(for ๋ฃจํ ๋ฐ while ๋ฃจํ)
๋ค๋ฅธ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌ๋ฆฌ Apex๋ ๋ค์์ ์ง์ํฉ๋๋ค.
- Apex๋ก์์ ํด๋ผ์ฐ๋ ๊ฐ๋ฐ์ ํด๋ผ์ฐ๋์์ ์ ์ฅ, ์ปดํ์ผ ๋ฐ ์คํ๋จ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ ํธ๋ฆฌ๊ฑฐ์ ์ ์ฌํ ํธ๋ฆฌ๊ฑฐ.
- ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๊ณ ๊ฒ์ํ๊ธฐ ์ํด ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์ถ ๋ฐ ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ๋ง๋ค ์ ์๋ Database ๋ฌธ.
- ํธ๋์ญ์
๋ฐ ๋กค๋ฐฑ.
-
public์์ ์๋ณด๋ค ๊ถํ์ด ๋ ์๋global์ก์ธ์ค ์์ ์๋ก, ๋ค์์คํ์ด์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ ์ก์ธ์ค๋ฅผ ํ์ฉํจ.
- ์ฌ์ฉ์ ์ ์ ์ฝ๋์ ๋ฒ์ ๊ด๋ฆฌ.
๋ํ Apex๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ์ธ์ด์ ๋๋ค.
๊ฐ๋ฐ ๋๊ตฌ
Visual Studio Code์ฉ Salesforce ํ์ฅ์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์ปดํจํฐ์์ Apex๋ฅผ ์์ฑํ๊ณ ๋๋ฒ๊น ํ ์ ์์ต๋๋ค. Salesforce ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ์ฝ๊ฒ ๊ฐ๋ฐํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ํ Salesforce ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์ง์ Apex๋ฅผ ์์ฑํ๊ณ ๋๋ฒ๊น
์ ๋ณด์ ์ก์ธ์คํ ์ ์์ต๋๋ค. Your Name(์ด๋ฆ)์์ Developer Console์ ์ด๊ฑฐ๋ ๋น ๋ฅธ ์ก์ธ์ค ๋ฉ๋ด(
)๋ฅผ ์ฝ๋๋ค.
๋ฐ์ดํฐ ํ์ ๊ฐ์
Apex๋ Salesforce์ ํน์ ํ ๋ฐ์ดํฐ ํ์์ธ sObject ๋ฐ์ดํฐ ํ์์ ํฌํจํ์ฌ ๋ค์ํ ๋ฐ์ดํฐ ํ์์ ์ง์ํฉ๋๋ค.
Apex๋ ๋ค์ ๋ฐ์ดํฐ ํ์์ ์ง์ํฉ๋๋ค.
- Integer, Double, Long, Date, Datetime, String, ID, Boolean ๋ฑ๊ณผ ๊ฐ์ ํ๋ฆฌ๋ฏธํฐ๋ธ.
- ์ผ๋ฐ sObject ๋๋ ๊ณ์ , ์ฐ๋ฝ์ฒ ๋๋ MyCustomObject__c์ ๊ฐ์ ํน์ sObject๋ก์์ sObject. (sObject์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ดํ ์ ๋์์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.)
- ๋ค์์ ํฌํจํ๋ ์ปฌ๋ ์
.
- ๊ธฐ๋ณธ ์์ ์งํฉ, sObject, ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด, Apex ํด๋์ค์์ ์์ฑ๋ ๊ฐ์ฒด ๋๋ ์ปฌ๋ ์
์ ์ค์
- ํ๋ฆฌ๋ฏธํฐ๋ธ์์ ํ๋ฆฌ๋ฏธํฐ๋ธ, sObject ๋๋ ์ปฌ๋ ์
์ผ๋ก์ ๋งต
- ํ์ํ๋ ๊ฐ ๋ชฉ๋ก(์ด๊ฑฐํ์ด๋ผ๊ณ ๋ ํจ)
- ์ฌ์ฉ์ ์ ์ Apex ํด๋์ค
- ์์คํ
์ ๊ณต Apex ํด๋์ค
Apex ์ปฌ๋ ์ : ๋ชฉ๋ก
๋ชฉ๋ก์๋ ๋์ผํ ์ ํ์ ์ ๋ ฌ๋ ๋ฐ์ดํฐ ์ปฌ๋ ์ ์ด ํฌํจ๋ฉ๋๋ค.
๋ค์ ๋ ์ ์ธ์ ๋์ผํฉ๋๋ค. colors ๋ณ์๋ List ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ ์ธ๋ฉ๋๋ค.
List<String> colors = new List<String>();
colors ๋ณ์๋ ๋ฐฐ์ด ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์ ์ธํ ์๋ ์์ต๋๋ค.
String[] colors = new List<String>();
List.add() ๋ฉ์๋๋ก ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ์ฌ ํ์์ ๋ฐ๋ผ ์ปฌ๋ ์
์ ๋๋ฆฝ๋๋ค. ๋๊ดํธ ๋ฐฐ์ด ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์ธ๋ฑ์ค๋ก ์ปฌ๋ ์
์ ๊ธฐ์กด ์์๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋๊ดํธ ๋ฐฐ์ด ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
์ด ์๋ ๋ชฉ๋ก์ ๋ง๋ค ๋ ๋ชฉ๋ก์ ์์๋ฅผ ์ถ๊ฐํ๊ณ , add() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.ย
// Create a list and add elements to it in one step
List<String> colors = new List<String> { 'red', 'green', 'blue' };
// Add elements to a list after it has been created
List<String> moreColors = new List<String>();
moreColors.add('orange');
moreColors.add('purple');๋ชฉ๋ก ์์๋ ๋๊ดํธ ์ฌ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ์ฌ ์ฝ์ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ๋ฐฐ์ด ํ๊ธฐ๋ฒ์ด๋ผ๊ณ ํฉ๋๋ค. ๋ํ get() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชฉ๋ก ์์๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ์ด ์์ ๋ ์ด์ ์์ ์์ ๋ง๋ ๋ชฉ๋ก์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชฉ๋ก ์์๋ฅผ ์ฝ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ด ์์ ๋ ๋ชฉ๋ก ์์๋ฅผ ๋ฐ๋ณตํ๋ ๋ฐฉ๋ฒ๋ ๋ณด์ฌ์ค๋๋ค.
// Get elements from a list
String color1 = moreColors.get(0);
String color2 = moreColors[0];
System.assertEquals(color1, color2);
// Iterate over a list to read elements
System.debug('Print out the colors in moreColors:');
for(String color : moreColors) {
// Write value to the debug log
System.debug(color);
}์ถ๊ฐ ๊ธฐ๋ณธ ์ ๋ณด
Apex๋ Set ๋ฐ Map์ ๋ ๊ฐ์ง ๋ค๋ฅธ ์ปฌ๋ ์ ์ ํ์ ์ง์ํฉ๋๋ค. Apex ๊ฐ๋ฐ์ ๊ฐ์ด๋์ ์ปฌ๋ ์ ์น์ ์์ ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค.
Apex ํด๋์ค
Apex ํด๋์ค์ ์ด์ ์ค ํ๋๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ ๋๋ค. Class ๋ฉ์๋๋ ํธ๋ฆฌ๊ฑฐ ๋ฐ ๊ธฐํ ํด๋์ค์์ ํธ์ถํ ์ ์์ต๋๋ค. ๋ค์ ํํ ๋ฆฌ์ผ์์๋ ์กฐ์ง์ ์์ ํด๋์ค๋ฅผ ์ ์ฅํ๊ณ ์ด ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฉ์ผ์ ๋ณด๋ด๊ณ ๋๋ฒ๊ทธ ๋ก๊ทธ๋ฅผ ๊ฒ์ฌํ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
Apex ํด๋์ค ์ ์ฅ
์กฐ์ง์์ EmailManager ํด๋์ค๋ฅผ ์ ์ฅํฉ๋๋ค.
- Your Name(์ด๋ฆ)์์ Developer Console์ ์ด๊ฑฐ๋ ๋น ๋ฅธ ์ก์ธ์ค ๋ฉ๋ด(
)๋ฅผ ์ฝ๋๋ค.
- Developer Console์์ File(ํ์ผ) | New(์๋ก ๋ง๋ค๊ธฐ) | Apex Class(Apex ํด๋์ค)๋ฅผ ํด๋ฆญํ๊ณ ํด๋์ค ์ด๋ฆ์ ๋ํด EmailManager๋ฅผ ์
๋ ฅํ ๋ค์ OK(ํ์ธ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๊ธฐ๋ณธ ํด๋์ค ๋ณธ๋ฌธ์
EmailManagerํด๋์ค ์๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์ด๋ฉ์ผ์ ์ ์กํ๊ณ Apex ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ณธ ์ ๊ณต Messaging ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋EmailManagerํด๋์ค์๋ ๊ณต๊ฐ ๋ฉ์๋(sendMail())๊ฐ ์์ต๋๋ค. ๋ํ ์ด ํด๋์ค์๋ ๋น๊ณต๊ฐ ๋์ฐ๋ฏธ ๋ฉ์๋(inspectResults())๊ฐ ์์ผ๋ฉฐ ์ด๋ ๋น๊ณต๊ฐ์ด๋ฏ๋ก ์ธ๋ถ์์ ํธ์ถํ ์ ์์ง๋ง ํด๋์ค ๋ด์์๋ง ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋์ฐ๋ฏธ ๋ฉ์๋๋ ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ ํธ์ถ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฌํ๊ณsendMail()์์ ํธ์ถ๋ฉ๋๋ค.public class EmailManager { // Public method public void sendMail(String address, String subject, String body) { // Create an email message object Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); String[] toAddresses = new String[] {address}; mail.setToAddresses(toAddresses); mail.setSubject(subject); mail.setPlainTextBody(body); // Pass this email message to the built-in sendEmail method // of the Messaging class Messaging.SendEmailResult[] results = Messaging.sendEmail( new Messaging.SingleEmailMessage[] { mail }); // Call a helper method to inspect the returned results inspectResults(results); } // Helper method private static Boolean inspectResults(Messaging.SendEmailResult[] results) { Boolean sendResult = true; // sendEmail returns a list of result objects. // Iterate through the list to inspect results. // In this class, the methods send only one email, // so we should have only one result. for (Messaging.SendEmailResult res : results) { if (res.isSuccess()) { System.debug('Email sent successfully'); } else { sendResult = false; System.debug('The following errors occurred: ' + res.getErrors()); } } return sendResult; } } -
File(ํ์ผ) | Save(์ ์ฅ)๋ฅผ ํด๋ฆญํ์ฌ ํด๋์ค๋ฅผ ์ ์ฅํฉ๋๋ค.
์ฐธ๊ณ : ์ฝ๋์ ๊ตฌ๋ฌธ์ด ์ฌ๋ฐ๋ฅด์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ Problems(๋ฌธ์ ) ํญ์ ํ์๋ฉ๋๋ค. ์ค๋ฅ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ฌ์ฉํด ์ฝ๋๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
Salesforce๋ ํด๋์ค๋ฅผ ์ ์ฅํ ๋ ํด๋์ค๋ฅผ ์ปดํ์ผํฉ๋๋ค.
์ถ๊ฐ ๊ธฐ๋ณธ ์ ๋ณด
์ ์ฅํ ํด๋์ค๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ ์ฌ์ฉํฉ๋๋ค. ์ด ํด๋์ค๋ ์ด๋ฉ์ผ ๊ด๋ฆฌ์ ๊ด๋ จ๋ ๋ฉ์๋๋ฅผ ์บก์ํํฉ๋๋ค. OOP์ ์๋ฒฝํ ์๊ฐ ๋๊ธฐ ์ํด ํด๋์ค์๋ ํด๋น ์์ฑ์ ์ก์ธ์คํ๊ธฐ ์ํ ๊ตฌ์ฑ์ ๋ณ์(์์ฑ) ๋ฐ ์ ๊ทผ์ ๋ฉ์๋๋ ํฌํจ๋์ง๋ง ๊ฐ์ํํ๊ธฐ ์ํด ํด๋์ค์๋ ์ด๋ฌํ ์์๊ฐ ์์ต๋๋ค.
์ด๋ฉ์ผ์ ๋ณด๋ด๋ ๋ฉ์๋ ํธ์ถ
๊ณต๊ฐ ๋ฉ์๋๋ฅผ ํธ์ถํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฅผ ์ํด ์ต๋ช Apex ์คํ์ ์ฌ์ฉํฉ๋๋ค. ์ต๋ช Apex๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ ์ค์ ์ฆ์์์ ์คํํ ์ ์์ผ๋ฉฐ ํนํ ๊ธฐ๋ฅ์ ํ ์คํธํ๊ธฐ ์ํด Apex๋ฅผ ํธ์ถํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ค๋ฅธ Apex ์คํ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋๋ฒ๊ทธ ๋ก๊ทธ ๊ฒฐ๊ณผ๊ฐ ์์ฑ๋ฉ๋๋ค.
- Developer Console์์ Debug(๋๋ฒ๊ทธ) | Open Execute Anonymous Window(์ต๋ช
์คํ ์ฐฝ ์ด๊ธฐ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆฌ๋ ์ฐฝ์์ ๋ค์์ ์
๋ ฅํฉ๋๋ค. 'Your email address'๋ฅผ ์ด๋ฉ์ผ ์ฃผ์๋ก ๋ณ๊ฒฝํฉ๋๋ค.
EmailManager em = new EmailManager(); em.sendMail('Your email address', 'Trailhead Tutorial', '123 body'); -
Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด์ ๋ฐ์ ํธ์งํจ์ ์ด๋ฉ์ผ์ด ์์ ๋์์ ๊ฒ์ ๋๋ค. ์ด๋ฉ์ผ์ ํ์ธํ์ธ์.
๋๋ฒ๊ทธ ๋ก๊ทธ ๊ฒ์ฌ
๋๋ฒ๊ทธ ๋ก๊ทธ๋ ์ฝ๋ ๋๋ฒ๊น
์ ์ ์ฉํฉ๋๋ค. Apex ๋ฉ์๋๊ฐ ์คํ๋๋ฉด ํธ์ถ์ด ๋๋ฒ๊ทธ ๋ก๊ทธ์ ๊ธฐ๋ก๋ฉ๋๋ค. ๋ํ ๋ก๊ทธ์ ๊ณ ์ ํ ๋๋ฒ๊ทธ ๋ฉ์์ง๋ฅผ ์์ฑํ ์ ์์ผ๋ฏ๋ก ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ๋๋ฒ๊น
ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. sendMail()์์ ํธ์ถ๋๋ inspectResults() ๋์ฐ๋ฏธ ๋ฉ์๋๋ System.debug() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ ๋ฉ์์ง๋ฅผ ์จ์ ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ ์์
์ด ์ฑ๊ณตํ๋์ง ๋๋ ์ค๋ฅ๊ฐ ์์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ฉ์๋์
๋๋ค. ๋ฉ์๋๋ฅผ ์คํํ ๋ ์์ฑ๋ ๋๋ฒ๊ทธ ๋ก๊ทธ์์ ์ด๋ฌํ ๋ฉ์์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
- Developer Console์์ Logs(๋ก๊ทธ) ํญ์ ํด๋ฆญํ๊ณ ๋ชฉ๋ก์์ ๊ฐ์ฅ ์ต๊ทผ ๋ก๊ทธ๋ฅผ ๋ ๋ฒ ํด๋ฆญํฉ๋๋ค.
-
Debug Only(๋๋ฒ๊ทธ ์ ์ฉ)๋ฅผ ์ ํํ์ฌ ๋ก๊ทธ๋ฅผ ํํฐ๋งํ๋ฉด
System.debug()๋ฌธ์ ๋ํ ๋ก๊ทธ ํ๋ง ํ์๋ฉ๋๋ค.
์ด๋ฉ์ผ์ด ์ค๋ฅ ์์ด ์ ์ก๋์๋ค๊ณ ๊ฐ์ ํ๋ฉด ํํฐ๋ง๋ ๋ก๊ทธ ๋ณด๊ธฐ์ ๋ค์ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
DEBUG|Email sent successfully
์ ์ ๋ฉ์๋ ํธ์ถ
ํด๋์ค์ sendMail() ๋ฉ์๋๋ ํด๋์ค ๊ตฌ์ฑ์ ๋ณ์์ ์ก์ธ์คํ์ง ์์ผ๋ฉฐ ์ธ์คํด์ค ๋ฉ์๋์ผ ํ์๊ฐ ์์ต๋๋ค. static ํค์๋๋ฅผ ํด๋น ์ ์ธ์ ์ถ๊ฐํ์ฌ ์ ์ ๋ฉ์๋๋ก ๋ณ๊ฒฝํด ๋ณด๊ฒ ์ต๋๋ค. ์ ์ ๋ฉ์๋๋ ํด๋์ค์ ์ธ์คํด์ค์์ ํธ์ถํ ํ์๊ฐ ์์ง๋ง ํด๋์ค ์ด๋ฆ์์ ์ง์ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค ๋ฉ์๋๋ณด๋ค ํธ์ถํ๊ธฐ ์ฝ์ต๋๋ค.
- Developer Console์์
EmailManagerํด๋์ค์ ๋ํด ์ด๋ ค ์๋ ํญ์ ์ฐพ๊ณsendMail()๋ฉ์๋ ์ ์์ ์ฒซ ๋ฒ์งธ ์ค์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํฉ๋๋ค(์ ์ผํ ๋ณ๊ฒฝ ์ฌํญ์staticํค์๋์ ์ถ๊ฐ๋ฉ๋๋ค.).public static void sendMail(String address, String subject, String body) { -
File(ํ์ผ) | Save(์ ์ฅ)๋ฅผ ํด๋ฆญํ์ฌ ํด๋์ค๋ฅผ ์ ์ฅํฉ๋๋ค.
- Execute Anonymous(์ต๋ช
์คํ) ์ฐฝ์์ ๋ฌธ์ ์์ ํ์ฌ ํด๋์ค ์ด๋ฆ์ ๋ํ ์ ์ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
EmailManager.sendMail('Your email address', 'Trailhead Tutorial', '123 body'); -
Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค. ์ด์ ์ด ๋ฉ์๋๊ฐ ์คํ๋์์ผ๋ฏ๋ก ์ด์ ๋จ๊ณ์์์ ๊ฐ์ด ์ด๋ฉ์ผ์ ํ์ธํ๊ณ ์ ํ์ ์ผ๋ก ๋๋ฒ๊ทธ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋ฆฌ์์ค
- Apex ๊ฐ๋ฐ์ ๊ฐ์ด๋: Apex ์๊ฐ
- Apex ๊ฐ๋ฐ์ ๊ฐ์ด๋: ๋ฃจํ
- Trailhead: Developer Console ๊ธฐ์ด
