μΈλΆ API μλ²μμ λ°μ΄ν°λ₯Ό μ‘°ννκ±°λ, λ°μ΄ν° μ‘°ν λ° κ²°ν© μ 볡μ‘ν λ‘μ§μ΄ μꡬλλ κ²½μ°μ μ¬μ©λ©λλ€. λ°μ΄ν°μμ€ κ³ κΈμ μ€μ νλ €λ©΄ Apex ν΄λμ€λ₯Ό μμ±ν΄μΌ ν©λλ€. Apex ν΄λμ€λ₯Ό μ¬μ©ν΄ ꡬννλ―λ‘, λ°μ΄ν°μμ€ κΈ°λ³Έλ³΄λ€ λ°μ΄ν°λ₯Ό λ μμ λ‘κ² κ°μ Έμ¬ μ μλ€λ μ₯μ μ΄ μμ΅λλ€.
λ°μ΄ν°μμ€ κ³ κΈ μ€μ μμ μ¬μ©ν Apex ν΄λμ€λ₯Ό μμ±νλ €λ©΄ λ°λμ SBLI.DataSourceService.Fetchable
μΈν°νμ΄μ€λ₯Ό ꡬνν΄μΌ ν©λλ€.
μ΄ μΈν°νμ΄μ€μλ execute
λ©μλκ° ν¬ν¨λμ΄ μμΌλ©°, ν΄λΉ λ©μλμ λ°μ΄ν° μ²λ¦¬λ₯Ό μν λ‘μ§ κ΅¬ν ν μ²λ¦¬λ λ°μ΄ν°μ μ‘°ν λλ λΌμΈ μμ΄ν
κ°μ 맀ν μ 보λ₯Ό λ΄μ SBLI.DataSourceService.Result
κ°μ²΄λ₯Ό λ°νν΄μΌ ν©λλ€.
ν΄λΉ μμ μ½λλ μΈλΆ APIλ₯Ό νΈμΆνμ¬ μ ν μ½λλ³ μ¬κ³ μλμ κ°μ Έμ¨ ν, μ‘°ν λλ λΌμΈ μμ΄ν
μ μ¬κ³ νλ(Inventory__c
)μ 맀ννλ€κ³ κ°μ νμμ΅λλ€.
SBLI.DataSourceService.Fetchable
μΈν°νμ΄μ€λ ν¨ν€μ§μμ μ 곡λλ μΈν°νμ΄μ€μ΄λ―λ‘, ν¨ν€μ§ μΈλΆμμ μ κ·Όνλ €λ©΄ Apex ν΄λμ€μ μ 곡λλ λ©μλ λͺ¨λ global
λ‘ μ μΈν΄μΌ ν©λλ€.
params.getParentRecord()
: λΆλͺ¨ κ°μ²΄μ λ μ½λλ₯Ό κ°μ Έμ΅λλ€.
params.getLookupRecords()
: μ‘°ν κ°μ²΄μ λ μ½λ λͺ©λ‘μ κ°μ Έμ΅λλ€.
SBLI.DataSourceService.Action
κ°μ²΄λ₯Ό μμ±νμ¬ λ°μ΄ν°μμ€ κ°(μ¬κ³ μ 보)κ³Ό μ‘°ν νλ(Inventory__c
)λ₯Ό 맀νν©λλ€.
μμ±λ Action κ°μ²΄λ₯Ό SBLI.DataSourceService.Result
μ μΆκ°ν©λλ€.
λΉλμμ μ€μ ν λΆλͺ¨μ μ‘°ν νλΌλ―Έν° μ 보λ₯Ό κ°μ§ κ°μ²΄μ λλ€.
SObject getParentRecord()
λΆλͺ¨ λ μ½λλ₯Ό λ°νν©λλ€. λΉλμμ μΆκ°ν λΆλͺ¨ νλΌλ―Έν°κ° μλ κ²½μ°, κ°μ λΉμ΄ μμ΅λλ€.
List<SObject> getLookupRecords()
μ‘°ν λ μ½λλ₯Ό λ°νν©λλ€. λΉλμμ μΆκ°ν μ‘°ν νλΌλ―Έν°κ° μλ κ²½μ°, κ°μ λΉμ΄ μμ΅λλ€.
μ‘°ν λλ λΌμΈ μμ΄ν
κ³Ό λ°μ΄ν°μμ€ κ°μ 맀ν μ 보λ₯Ό λ΄μ νΈμ§κΈ°λ‘ λ°ννλ κ°μ²΄μ
λλ€. 맀ν μ 보λ SBLI.DataSourceService.Action
κ°μ²΄μ μ μ₯ν λ€, SBLI.DataSourceService.Result
κ°μ²΄μ μΆκ°νμ¬ λ°νν©λλ€.
addAction(SBLI.DataSourceService.Action action)
맀ν μ λ³΄κ° λ΄κΈ΄ Action κ°μ²΄λ₯Ό Result κ°μ²΄μ μΆκ°ν©λλ€.
action
μ‘°ν λλ λΌμΈ μμ΄ν κ³Ό λ°μ΄ν°μμ€ κ°μ 맀νν μ 보λ₯Ό λ΄μ κ°μ²΄μ λλ€.
μ‘°ν λλ λΌμΈ μμ΄ν κ³Ό λ°μ΄ν°μμ€ κ°μ 맀νν μ 보λ₯Ό λ΄μ κ°μ²΄μ λλ€.
setKeyValue(Object keyValue)
μ‘°ν λλ λΌμΈ μμ΄ν μ Keyμ μΌμΉνλ λ°μ΄ν°μμ€μ Key κ°μ μ€μ ν©λλ€.
keyValue
Object
λ°μ΄ν°μμ€μ Key κ°μ λλ€.
putSourceToTargetField(Object sourceValue, String targetFieldApiName)
λ°μ΄ν°μμ€ κ°μ μνλ μ‘°ν λλ λΌμΈ μμ΄ν νλμ ν λΉν©λλ€.
sourceValue
Object
λ°μ΄ν°μμ€ κ°μ λλ€.
targetFieldApiName
String
μ‘°ν λλ λΌμΈ μμ΄ν μ νλ APIλͺ μ λλ€.
Apex ν΄λμ€λ₯Ό μ νν ν, ν΄λμ€μμ λΆλͺ¨μ μ‘°ν μ λ³΄κ° νμν κ²½μ° νλΌλ―Έν°λ‘ μ λ¬ν νλλ€μ μ νν©λλ€.
λ°μ΄ν°μμ€λ₯Ό μ€μ νκΈ° μ μ Apex ν΄λμ€λ₯Ό λ¨Όμ μμ±νμΈμ.
Apex Class
λ°μ΄ν°μμ€μ μ¬μ©ν Apex ν΄λμ€λ₯Ό μ νν©λλ€.
β
Key νλ
λ°μ΄ν°μμ€λ₯Ό ν΅ν΄ κ°μ Έμ¨ λ°μ΄ν°λ₯Ό μ‘°ν λλ λΌμΈ μμ΄ν λ μ½λμ 맀ννκΈ° μν΄ Key νλλ₯Ό μ€μ ν©λλ€.
β
νλΌλ―Έν° - λΆλͺ¨ κ°μ²΄ νλ
λ°μ΄ν°μμ€λ₯Ό ꡬνν Apex ν΄λμ€μμ νμν λΆλͺ¨ κ°μ²΄μ νλ κ°μ΄ μλ κ²½μ°, ν΄λΉ νλλ₯Ό νλΌλ―Έν°λ‘ μΆκ°ν©λλ€.
νλΌλ―Έν° - μ‘°ν κ°μ²΄ νλ
λ°μ΄ν°μμ€λ₯Ό ꡬνν Apex ν΄λμ€μμ νμν μ‘°ν κ°μ²΄μ νλ κ°μ΄ μλ κ²½μ°, ν΄λΉ νλλ₯Ό νλΌλ―Έν°λ‘ μΆκ°ν©λλ€.
νκ° μ΄λ²€νΈ
λ°μ΄ν°μμ€μ μ€ν μμ μ μ€μ ν©λλ€.
μ΄κΈ°ν μ(On Initialization): λΌμΈ μμ΄ν λ μ½λκ° μλ‘ μΆκ°λ λ μ€νλ©λλ€.
λ‘λ© μ(On Loading): λΌμΈ μμ΄ν νλ©΄μ΄ λ‘λλ λλ§λ€ μ€νλ©λλ€.
μ μ₯ μ (Before Save): λΌμΈ μμ΄ν λ μ½λκ° μ μ₯λκΈ° μ μ μ€νλ©λλ€.
νμ±ν
λ°μ΄ν°μμ€λ₯Ό νμ±νν©λλ€. νμ±νλμ§ μμΌλ©΄ μλνμ§ μμ΅λλ€.
β
μ‘°ν λλ λΌμΈ μμ΄ν κ³Ό κ΄λ ¨λ κ°μ²΄λ μΈλΆ API μλ²μμ νμν λ°μ΄ν°λ₯Ό μ‘°ννκ±°λ, 볡μ‘ν λ‘μ§μ΄λ κ³μ°μμ μ¬μ©ν΄ μ²λ¦¬λ λ°μ΄ν°λ₯Ό ν¨κ» νμνκ±°λ μΌλΆ νλμ κΈ°λ³Έκ°μΌλ‘ μ€μ ν λ μ¬μ©ν©λλ€.
μ‘°ν μ νκΈ°μ λ°μ΄ν°μμ€λ₯Ό μ€μ νλ κ²½μ°: μ‘°ν μ νκΈ° μ€μ (Setup Lookup Selector) λ¨κ³λ‘ μ΄λν©λλ€.
λΌμΈ μμ΄ν μ λ°μ΄ν°μμ€λ₯Ό μ€μ νλ κ²½μ°: λΌμΈ μμ΄ν νΈμ§κΈ° μ€μ (Setup Line Item Editor) λ¨κ³λ‘ μ΄λν©λλ€.
λ°μ΄ν°μμ€ μΆκ° λ²νΌμ λλ¬ λ°μ΄ν°μμ€ νΈμ§ λ μ΄μμμ μ΄μ΄μ€λλ€.
λΌμΈ μμ΄ν νΈμ§κΈ°λ νκ° μ΄λ²€νΈ(Evaluation Event)λ₯Ό νμλ‘ μ€μ ν΄μ£Όμ΄μΌ ν©λλ€. νκ° μ΄λ²€νΈ(Evaluation Event)λ μλμ κ°μ΄ μ 곡λ©λλ€.
μ΄κΈ°ν μ(On Initialization): λΌμΈ μμ΄ν λ μ½λκ° μλ‘ μΆκ°λμμ λ μ€νλ©λλ€.
λ‘λ© μ(On Loading): λΌμΈ μμ΄ν νλ©΄μ΄ λ‘λλ λλ§λ€ μ€νλ©λλ€.
μ μ₯ μ (Before Save): λΌμΈ μμ΄ν λ μ½λλ€μ΄ μ μ₯λκΈ° μ μ€νλ©λλ€.
λ¨μν κ΄λ ¨λ κ°μ²΄λ₯Ό μ‘°ννλ €λ κ²½μ°, λ°μ΄ν°μμ€ κΈ°λ³Έ μ€μ μ μ¬μ©ν΄λ³΄μΈμ. μ‘°ν λλ λΌμΈ μμ΄ν κ³Ό κ΄λ ¨λ κ°μ²΄λ₯Ό μ ννκ³ , λ°μ΄ν°μμ€λ₯Ό ν΅ν΄ κ°μ Έμ¨ κ°μ²΄μ νλ κ°μ μ‘°ν λλ λΌμΈ μμ΄ν νλμ 맀νν μ μμ΅λλ€.
μΈλΆ API μλ²μμ λ°μ΄ν°λ₯Ό μ‘°ννκ±°λ, λ°μ΄ν° μ‘°ν λ° κ²°ν© μ 볡μ‘ν λ‘μ§μ΄ μꡬλλ κ²½μ°μ μ¬μ©λ©λλ€. λ°μ΄ν°μμ€ κ³ κΈμ μ€μ νλ €λ©΄ Apex ν΄λμ€λ₯Ό μμ±ν΄μΌ ν©λλ€. Apex ν΄λμ€λ₯Ό μ¬μ©ν΄ ꡬννλ―λ‘, λ°μ΄ν°μμ€ κΈ°λ³Έλ³΄λ€ λ°μ΄ν°λ₯Ό λ μμ λ‘κ² κ°μ Έμ¬ μ μλ€λ μ₯μ μ΄ μμ΅λλ€.
λ°μ΄ν°μμ€λ κΈ°λ³Έ(Basic)μ΄ λ¨Όμ μ€νλ ν, κ³ κΈ(Advanced)μ΄ μ€νλ©λλ€.
λ¨μν κ΄λ ¨λ κ°μ²΄λ₯Ό μ‘°ννλ €λ κ²½μ°, λ°μ΄ν°μμ€ κΈ°λ³Έ μ€μ μ μ¬μ©ν΄λ³΄μΈμ. μ‘°ν λλ λΌμΈ μμ΄ν κ³Ό κ΄λ ¨λ κ°μ²΄λ₯Ό μ ννκ³ , λ°μ΄ν°μμ€λ₯Ό ν΅ν΄ κ°μ Έμ¨ κ°μ²΄μ νλ κ°μ μ‘°ν λλ λΌμΈ μμ΄ν νλμ 맀νν μ μμ΅λλ€.
1
μμ€ κ°μ²΄
λ°μ΄ν°λ₯Ό κ°μ Έμ¬ κ°μ²΄λ₯Ό μ νν©λλ€.
β
2
쿼리
쿼리 λ§λ²μ¬ λ²νΌμ ν΄λ¦νμ¬ νν°λ₯Ό μ€μ ν©λλ€. νν°λ SOQLμ WHERE
μ νμμΌλ‘ μ
λ ₯ν©λλ€.
3
νκ° μ΄λ²€νΈ
λ°μ΄ν°μμ€μ μ€ν μμ μ μ€μ ν©λλ€.
μ΄κΈ°ν μ(On Initialization): λΌμΈ μμ΄ν λ μ½λκ° μλ‘ μΆκ°λ λ μ€νλ©λλ€.
λ‘λ© μ(On Loading): λΌμΈ μμ΄ν νλ©΄μ΄ λ‘λλ λλ§λ€ μ€νλ©λλ€.
μ μ₯ μ (Before Save): λΌμΈ μμ΄ν λ μ½λκ° μ μ₯λκΈ° μ μ μ€νλ©λλ€.
4
νμ±ν
λ°μ΄ν°μμ€λ₯Ό νμ±νν©λλ€. νμ±νλμ§ μμΌλ©΄ μλνμ§ μμ΅λλ€.
β
5
λ°μ΄ν°μμ€λ‘ κ°μ Έμ¨ λ°μ΄ν°λ₯Ό μ‘°ν λλ λΌμΈ μμ΄ν νλμ 맀νν©λλ€.
β
λ°μ΄ν°μμ€λ₯Ό ν΅ν΄ κ°μ Έμ¨ λ°μ΄ν°λ₯Ό μ‘°ν λλ λΌμΈ μμ΄ν νλμ 맀ννλ μμ μ λλ€. μ΄ μμ μ ν΅ν΄ λ°μ΄ν°μμ€ κ°μ΄ μ§μ λ νλμ λ°μλ©λλ€.
1
μμ
맀ν μμ μ΄ μ€νλ μμλ₯Ό μ€μ ν©λλ€.
β
2
μμ€ νλ
λ°μ΄ν°μμ€ κ°μ²΄μμ κ°μ Έμ¬ νλλ₯Ό μ νν©λλ€.
β
3
λμ νλ
λ°μ΄ν°λ₯Ό 맀νν μ‘°ν λλ λΌμΈ μμ΄ν μ νλλ₯Ό μ νν©λλ€.
β
4
Key
λ°μ΄ν°μμ€μ μ‘°ν λλ λΌμΈ μμ΄ν κ° λ°μ΄ν° 맀ν μ μ¬μ©ν κ³ μ μλ³ κ°μ λλ€. Keyλ₯Ό κΈ°μ€μΌλ‘ λ°μ΄ν°μμ€ κ°μ΄ 맀νλ λμμ κ²°μ ν©λλ€.
μ΄ μμμμλ κΈ°ν μ νμ λν λΌμΈ μμ΄ν νΈμ§κΈ°λ₯Ό μ€μ νμμ΅λλ€.
λΆλͺ¨: κΈ°ν(Opportunity
)
λΌμΈ μμ΄ν
: κΈ°ν μ ν(OpportunityLineItem
)
μ‘°ν: μ ν(Product2
)
μ‘°ν κ°μ²΄λ₯Ό μ ν(Product2
)μΌλ‘ μ€μ ν κ²½μ°, μ¬μ©μλ€μ μΌλ°μ μΌλ‘ λ¨κ°(UnitPrice
) μ 보λ₯Ό ν¨κ» νμνκ³ μΆμ΄ν©λλ€. νμ§λ§ μΈμΌμ¦ν¬μ€μμλ λ¨κ° μ λ³΄κ° κ°κ²© λͺ©λ‘ νλͺ©(PricebookEntry
) κ°μ²΄μ μ μ₯λμ΄ μμ΅λλ€. κ·Έλ¬λ κ°κ²© λͺ©λ‘ νλͺ©μ μ νμ νμ κ°μ²΄λ‘, λ¨κ° μ 보λ₯Ό μμ νλλ‘ κ°μ Έμ¬ μ μμ΅λλ€. λ°λΌμ μ νκ³Ό μ°κ²°λ κ°κ²© λͺ©λ‘ νλͺ© λ°μ΄ν°λ₯Ό λ°μ΄ν°μμ€λ₯Ό μ΄μ©ν΄ μ‘°ννλ €κ³ ν©λλ€.
λ°μ΄ν°μμ€μμ μμ€ κ°μ²΄(Source Object)λ₯Ό κ°κ²© λͺ©λ‘ νλͺ©(PricebookEntry
)λ‘ μ§μ ν©λλ€.
쿼리 λ§λ²μ¬λ₯Ό λλ¬ μ‘°ν 쑰건μ μ€μ ν©λλ€.
IsActive = true AND Pricebook2Id = {$Parent.Pricebook2Id}
κ° μ νμ ν΄λΉλλ κ°κ²© λͺ©λ‘ νλͺ© λ°μ΄ν°λ₯Ό κ²°ν©νκΈ° μν΄ λ€μκ³Ό κ°μ΄ μ€μ ν©λλ€:
μμ€ κ°μ²΄: Product2Id
λμ κ°μ²΄: Id
Key: true
λ¨κ°λ₯Ό μ ν λ°μ΄ν°μ κ°μ΄ νμνκΈ° μν΄ μμ (Action)μ μΆκ°νμ¬ μ‘°ν νλ(κ°μ μ΄)μ μ§μ ν©λλ€.
μμ€ νλ: UnitPrice
λμ νλ: SBLI_Virtual1
μ‘°ν μ νκΈ°μμ μ νμ λν λ°μ΄ν°μμ€λ₯Ό ν΅ν΄ κ°μ Έμ¨ λ¨κ° μ λ³΄κ° ν¨κ» νμλλ κ²μ νμΈν μ μμ΅λλ€.
Key νλλ μ‘°ν κ°μ²΄μ νλλ₯Ό μ¬μ©ν©λλ€. λΌμΈ μμ΄ν μμ μ‘°ν κ°μ²΄μ νλλ₯Ό Keyλ‘ μ¬μ©νλ μ΄μ λ, λΌμΈ μμ΄ν μ΄ μ μ₯λμ§ μμ λ μ½λμΌ μλ μμ΄ μ μΌν Key κ°μ νλ¨νκΈ° μ΄λ ΅κΈ° λλ¬Έμ λλ€.
λΌμΈ μμ΄ν μμλ§ μ 곡λλ μ€μ μ λλ€.
λΌμΈ μμ΄ν μμλ§ μ 곡λλ μ€μ μ λλ€.