應(yīng)用程序生命周期管理
一個(gè)Salesforce系統(tǒng)可以有多個(gè)版本,最常見的有:
- production版本:終端用戶實(shí)際使用的版本
- sandbox版本:沙盒環(huán)境,用于開發(fā)、測(cè)試等
在對(duì)Salesforce系統(tǒng)的功能持續(xù)開發(fā)的過程中,有些功能可以直接在production版本中直接更新,比如增減報(bào)表、建立視圖等,不用擔(dān)心對(duì)整個(gè)系統(tǒng)造成潛在的風(fēng)險(xiǎn)。而有些功能或應(yīng)用程序則必須通過復(fù)雜的步驟來實(shí)現(xiàn),比如增減自定義對(duì)象、字段、添加Apex類等。這些功能在開發(fā)之后必須經(jīng)過詳細(xì)的測(cè)試,并且如果沒有對(duì)用戶進(jìn)行合適的培訓(xùn),新的功能可能造成用戶的誤解,從而對(duì)系統(tǒng)造成潛在的風(fēng)險(xiǎn)。
對(duì)于Salesforce應(yīng)用程序生命周期合理的管理,有助于將風(fēng)險(xiǎn)減小至最低,這一點(diǎn)在商業(yè)邏輯復(fù)雜的大企業(yè)系統(tǒng)的開發(fā)中尤其重要。
應(yīng)用程序生命周期
一個(gè)應(yīng)用程序的生命周期大體可以分為以下幾部分:
- 計(jì)劃:在開發(fā)之前對(duì)于需求進(jìn)行詳細(xì)的規(guī)劃設(shè)計(jì)
- 開發(fā):開發(fā)相應(yīng)的應(yīng)用程序或功能,最好使用sandbox版本進(jìn)行
- 測(cè)試:測(cè)試開發(fā)出的功能,將問題反饋給開發(fā)者進(jìn)行修復(fù),最好使用sandbox版本進(jìn)行
- 部署:當(dāng)開發(fā)的應(yīng)用程序或功能經(jīng)過完整的測(cè)試之后,可以部署上線,比如從sandbox版本部署到production版本中,供終端用戶使用
大型開發(fā)環(huán)境的構(gòu)建
對(duì)于大型開發(fā)環(huán)境,需要多個(gè)開發(fā)者共同開發(fā),每一個(gè)開發(fā)者都有自己的sandbox開發(fā)環(huán)境。
當(dāng)開發(fā)者完成功能后,可以通過版本控制軟件將功能整合到質(zhì)量管理的sandbox環(huán)境中。
開發(fā)者的功能整合后,可以上傳到用戶測(cè)試的環(huán)境中。
當(dāng)測(cè)試通過后,可以上傳到真正的production環(huán)境中。
沙盒的類型
沙盒(sandbox)可以看作是production環(huán)境的一個(gè)拷貝,供開發(fā)和測(cè)試使用。沙盒可以刷新,即從production中重新拷貝一次,得到最新的系統(tǒng)和數(shù)據(jù),而此前在沙盒中的任何更改都將丟失。
沙盒分為多種類型:
- Developer:只包含系統(tǒng)的設(shè)置,不包含數(shù)據(jù)庫(kù)。開發(fā)者可以在其中添加或載入不多于200MB的數(shù)據(jù)用于開發(fā)和測(cè)試。每天可以刷新一次。
- Developer Pro:和Developer類似,不過可存儲(chǔ)的數(shù)據(jù)量達(dá)到了1GB。每天可以刷新一次。
- Partial Copy:是一種特殊的Developer類型的沙盒,可以在其中預(yù)定義一些存在于production環(huán)境中的數(shù)據(jù)作為樣例數(shù)據(jù)。在預(yù)定義樣例數(shù)據(jù)時(shí),只能選擇哪些類型的對(duì)象會(huì)存在樣例數(shù)據(jù)中,無法選擇具體的記錄??纱鎯?chǔ)的數(shù)據(jù)量是5GB,每個(gè)對(duì)象可容納的樣例數(shù)據(jù)最多10000條記錄。每5天可以刷新一次。
- Full:從production環(huán)境的完全拷貝,系統(tǒng)功能、設(shè)置、數(shù)據(jù)都完全一樣。每29天可以刷新一次。
在production環(huán)境中的設(shè)置界面,可以設(shè)置此系統(tǒng)的沙盒。
當(dāng)沙盒被創(chuàng)建成功之后,其中的用戶的登錄名會(huì)在后面加上“.沙盒名”。比如一個(gè)用戶在production環(huán)境中的用戶名是“user1@test.com”,那么在一個(gè)名為“dev”的沙盒中,其用戶名變?yōu)椤?a target="_blank" rel="nofollow">user1@test.com.dev”。其密碼不變。
同樣的對(duì)象記錄可以從production環(huán)境被拷貝到沙盒中,但是要注意:它們的ID已經(jīng)改變了。所以在代碼或其他地方要讀取某記錄時(shí),要盡量避免使用寫死的ID值,而要使用其他方法來查詢、讀取。
更改集(Change Sets)
如果要將設(shè)置的改變從一個(gè)系統(tǒng)拷貝到另一個(gè)系統(tǒng),可以使用更改集。
關(guān)于更改集:
- 更改集只包括能從“設(shè)置”界面中做出的更改,而非所有的更改。
- 在兩個(gè)系統(tǒng)間發(fā)送和接收更改集需要它們擁有“部署鏈接”(Deployment Connection)。
- 在兩個(gè)系統(tǒng)間發(fā)送和接收更改集需要它們使用更改集的權(quán)限。
- 使用更改集的兩個(gè)系統(tǒng)必須從屬于同一個(gè)production環(huán)境,比如同一個(gè)production環(huán)境下的不同沙盒系統(tǒng),或者某沙盒和production環(huán)境。
改變部署的最佳實(shí)踐
當(dāng)開發(fā)者在開發(fā)用的沙盒中完成了功能的開發(fā)和其他設(shè)置之后,就需要將這些改變部署在生產(chǎn)環(huán)境中。
在這個(gè)過程中,有以下幾點(diǎn)最佳實(shí)踐:
- 不允許在生產(chǎn)環(huán)境中進(jìn)行任何改變。生產(chǎn)環(huán)境中的改變必須始終從開發(fā)沙盒中部署。
- 使用Metadata API來部署各組件的改變。
- 只允許一個(gè)管理員在生產(chǎn)環(huán)境中進(jìn)行“設(shè)置”界面的更改。
- 對(duì)于需要經(jīng)常向生產(chǎn)環(huán)境中部署的情況,制定定期的計(jì)劃任務(wù)。