2018-04-10

Salesforce: Record Type and View Model

先前 [1] 用物件導向的觀念分析了一下 Salesforce 中 object, record type, and master-detail object relationships 的特性;就 Salesforce 系統設計而言,是否能表達物件導向並不重要,讓使用者易於設定、儘快進入使用,才是這類 domain-specific service 的重點。

如果用三層式架構中 domain model, data model, and view model 的角度來看,Salesforce 在 data model 原則上採用類似 active record pattern 的作法,設定畫面中的 object 直接對應到 Apex programming 中的 object type 與 SOQL 中的 table,以 1-to-1 的方式呈現。

這時候 record type 很明顯就是為了 view model 而存在,只是多數 Web application development 中,有很多好用的 model mapping libraries 可供使用,view model 與 domain model 之間的關係可以很彈性地為 many-to-many。回到 Saleforce,如果要讓使用者在不需任何程式碼,也能保有 view model 的便利性:
同一個 domain model 可搭配不同的畫面,顯示不同的屬性組合。
這時候就可以透過 record type 的設定,讓 view model 與 domain model 之間達到 many-to-one 之間的關係。

see also:
[1] Salesforce: Objects Generalization and Specialization