Apex Class ์ž‘์„ฑ

๋ฐ์ดํ„ฐ์†Œ์Šค ๊ณ ๊ธ‰ ์„ค์ •์—์„œ ์‚ฌ์šฉํ•  Apex ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ SBLS.DataSourceService.Fetchable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” execute ๋ฉ”์„œ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ๋ฉ”์„œ๋“œ์— ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋กœ์ง ๊ตฌํ˜„ ํ›„ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ์™€ ๋ฆฌ์ŠคํŠธ ๊ฐ„์˜ ๋งคํ•‘ ์ •๋ณด๋ฅผ ๋‹ด์€ SBLS.DataSourceService.Result ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ธ ์˜ˆ์‹œ ์ฝ”๋“œ

ํ•ด๋‹น ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ์™ธ๋ถ€ API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ œํ’ˆ ์ฝ”๋“œ๋ณ„ ์žฌ๊ณ  ์ˆ˜๋Ÿ‰์„ ๊ฐ€์ ธ์˜จ ํ›„, ๋ฆฌ์ŠคํŠธ์— ๊ฐ€์ƒ ์—ด๋กœ ์ƒ์„ฑํ•œ ์žฌ๊ณ  ์—ด(SBLS_Virtual1)์— ๋งคํ•‘ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

DataSourceInventory.cls
global class DataSourceInventory implements SBLS.DataSourceService.Fetchable {
    global SBLS.DataSourceService.Result execute(SBLS.DataSourceService.Parameter params) {
        // ๋ฆฌ์ŠคํŠธ์— ๊ฒ€์ƒ‰๋œ ๋ ˆ์ฝ”๋“œ
        List<SObject> records = params.gets();
    
        // ์™ธ๋ถ€ API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ (์˜ˆ: ์žฌ๊ณ  ์ •๋ณด)
        // ํ‚ค: ์ œํ’ˆ ์ฝ”๋“œ, ๊ฐ’: ์žฌ๊ณ  ์ˆ˜๋Ÿ‰
        Map<String, Integer> inventoryData = new Map<String, Integer>(); 
        inventoryData.put('Product001', 10);
        inventoryData.put('Product002', 20);

        // ๊ฒฐ๊ณผ ๊ฐ์ฒด ์ƒ์„ฑ
        SBLS.DataSourceService.Result result = new SBLS.DataSourceService.Result();

        // ๋ฆฌ์ŠคํŠธ ๊ฐœ์ฒด์™€ ๋ฐ์ดํ„ฐ์†Œ์Šค ๋งคํ•‘
        for (String productCode : inventoryData.keySet()) {
            SBLS.DataSourceService.Action action = new SBLS.DataSourceService.Action();
            action.setKeyValue(productCode); // ๋ฆฌ์ŠคํŠธ ๋ ˆ์ฝ”๋“œ์™€ ๋งคํ•‘ํ•  Key ๊ฐ’ ์„ค์ •
            action.putSourceToTargetField(
                inventoryData.get(productCode), // ๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’: ์žฌ๊ณ  ์ •๋ณด
                'SBLS_Virtual1'                 // ๋ฆฌ์ŠคํŠธ ๊ฐ€์ƒ ์—ด API๋ช…
            );
            result.addAction(action); // Action ์ถ”๊ฐ€
        }
        
        return result; // ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
    }
}
1

๋ฆฌ์ŠคํŠธ์— ๊ฒ€์ƒ‰๋œ ๋ ˆ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ

params.gets()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ์˜ ๊ฒ€์ƒ‰๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

2

๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’ ์ค€๋น„

  • ์™ธ๋ถ€ API ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์žฌ๊ณ  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ์‹œ์—์„œ๋Š” ์ œํ’ˆ ์ฝ”๋“œ(ProductCode)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์žฌ๊ณ  ์ •๋ณด๋ฅผ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

<String, Integer> inventoryData = new Map<String, Integer>(); 
inventoryData.put('Product001', 10);
inventoryData.put('Product002', 20);
3

๊ฒฐ๊ณผ ์ƒ์„ฑ

  • SBLS.DataSourceService.Action ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’(์žฌ๊ณ  ์ •๋ณด)์„ ๊ฐ€์ƒ ์—ด ์žฌ๊ณ (SBLS_Virtual01)์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒ์„ฑ๋œ Action ๊ฐ์ฒด๋ฅผ SBLS.DataSourceService.Result์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

// ๊ฒฐ๊ณผ ๊ฐ์ฒด ์ƒ์„ฑ
SBLS.DataSourceService.Result result = new SBLS.DataSourceService.Result();

// ๋ฆฌ์ŠคํŠธ ๊ฐœ์ฒด์™€ ๋ฐ์ดํ„ฐ์†Œ์Šค ๋งคํ•‘
for (String productCode : inventoryData.keySet()) {
    SBLS.DataSourceService.Action action = new SBLS.DataSourceService.Action();
    action.setKeyValue(productCode); // ๋ฆฌ์ŠคํŠธ ๋ ˆ์ฝ”๋“œ์™€ ๋งคํ•‘ํ•  Key ๊ฐ’ ์„ค์ •
    action.putSourceToTargetField(
        inventoryData.get(productCode), // ๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’: ์žฌ๊ณ  ์ •๋ณด
        'SBLS_Virtual1'                 // ๋ฆฌ์ŠคํŠธ ๊ฐ€์ƒ ์—ด API๋ช…
    );
    result.addAction(action); // Action ์ถ”๊ฐ€
}
4

๋ฐ˜ํ™˜

๋งคํ•‘๋œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์€ Result ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ, ๋ฆฌ์ŠคํŠธ์— ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ธ SBLS.DataSourceService.Parameter

๋ฆฌ์ŠคํŠธ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๋นŒ๋”์—์„œ ์„ ํƒํ•œ ํ•„๋“œ์˜ ๊ฐ’๋งŒ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ฝ”๋“œ

global SBLS.DataSourceService.Result execute(SBLS.DataSourceService.Parameter params) {
    List<SObject> records = params.gets();
    ...
}

Method

List<SObject> gets()

๊ฒ€์ƒ‰๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋”์—์„œ ์ถ”๊ฐ€ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ๊ฐ’์€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ธ SBLS.DataSourceService.Result

๋ฆฌ์ŠคํŠธ์™€ ๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ„์˜ ๋ชจ๋“  ๋งคํ•‘ ์ •๋ณด๋ฅผ ๋‹ด์•„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๋งคํ•‘ ์ •๋ณด๋Š” SBLS.DataSourceService.Action ๊ฐ์ฒด์— ์ €์žฅํ•œ ๋’ค, SBLS.DataSourceService.Result ๊ฐ์ฒด์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ฝ”๋“œ

DataSourceInventory.cls
...
SBLS.DataSourceService.Result result = new SBLS.DataSourceService.Result();
for(String productCode : inventoryData.keySet()) {
    // SBLI.DataSourceService.Action ๊ฐ์ฒด์— ๋งคํ•‘ ์ •๋ณด ์ €์žฅ
    SBLS.DataSourceService.Action action = new SBLS.DataSourceService.Action();
    action.setKayValue(productCode);
    action.putSourceToTargetField(
        inventoryData.get(productCode),
        'SBLS_Virtual1'
    );
    result.addAction(action); // ๋งคํ•‘ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด Action์„ Result์— ์ถ”๊ฐ€
}
return result;

Method

addAction(SBLS.DataSourceService.Action action)

๋งคํ•‘ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด Action ๊ฐ์ฒด๋ฅผ Result ๊ฐ์ฒด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
์œ ํ˜•
๊ฐ’

action

๋ฆฌ์ŠคํŠธ์™€ ๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’์„ ๋งคํ•‘ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.


๐Ÿ”ธ SBLS.DataSourceService.Action

๋ฆฌ์ŠคํŠธ์™€ ๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’์„ ๋งคํ•‘ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ฝ”๋“œ

DataSourceInventory.cls
SBLS.DataSourceService.Result result = new SBLS.DataSourceService.Result();
// ๋ฐ์ดํ„ฐ์†Œ์Šค์—์„œ ๊ฐ ์ œํ’ˆ์ฝ”๋“œ์™€ ์žฌ๊ณ  ์ •๋ณด๋ฅผ ๋ฐ˜๋ณต ์ฒ˜๋ฆฌ
for(String productCode : inventoryData.keySet()) {
    SBLS.DataSourceService.Action action = new SBLS.DataSourceService.Action();
    // ์ œํ’ˆ์ฝ”๋“œ๋ฅผ Key ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์กฐํšŒ/๋ผ์ธ ์•„์ดํ…œ๊ณผ ๋งคํ•‘
    action.setKayValue(productCode);
    
    // ์žฌ๊ณ  ์ •๋ณด๋ฅผ ์กฐํšŒ/๋ผ์ธ ์•„์ดํ…œ์˜ Inventory__c ํ•„๋“œ์— ๋งคํ•‘ 
    action.putSourceToTargetField(
        inventoryData.get(productCode),    // ๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’: ์žฌ๊ณ 
        'SBLS_Virtual1'                   // ๊ฐ€์ƒ ์—ด API๋ช…
    );
    result.addAction(action); // ๋งคํ•‘ ์ •๋ณด ์ถ”๊ฐ€
}
return result; // ์ตœ์ข… ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

Method

setKeyValue(Object keyValue)

๋ฆฌ์ŠคํŠธ์˜ Key์™€ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ์†Œ์Šค์˜ Key ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
์œ ํ˜•
๊ฐ’

keyValue

Object

๋ฐ์ดํ„ฐ์†Œ์Šค์˜ Key ๊ฐ’์ž…๋‹ˆ๋‹ค.

putSourceToTargetField(Object sourceValue, String targetFieldApiName)

๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’์„ ์›ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ ํ•„๋“œ ๋˜๋Š” ๊ฐ€์ƒ ์—ด์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜
์œ ํ˜•
๊ฐ’

sourceValue

Object

๋ฐ์ดํ„ฐ์†Œ์Šค ๊ฐ’์ž…๋‹ˆ๋‹ค.

targetFieldApiName

String

๋ฆฌ์ŠคํŠธ์˜ ํ•„๋“œ ๋˜๋Š” ๊ฐ€์ƒ ์—ด์˜ API๋ช…์ž…๋‹ˆ๋‹ค.

Last updated

Was this helpful?