2015-04-30 39 views
0

我有一個SaaS平臺,用戶填寫表單並將輸入表單的數據保存到數據庫。表單UI具有大量配置(源自數據庫但以JavaScript結束)和業務邏輯(以JavaScript)。填寫並保存表單後,用戶可以隨時返回並對其進行編輯。針對數據和業務邏輯構建向後兼容的SaaS

皺紋是一個古老的形式記錄必須表現得像它沒有當它第一次填寫了 - 它需要相同的配置和業務邏輯 - 即使SaaS的已經通過數據架構的變化和更改業務邏輯不見了自那以後。

爲了確認,用戶填寫的新表格當然會使用新的/當前的數據模式和業務邏輯。但之前的表單需要像創建時那樣行事。

所以我需要一個明智的方式來版本配置,業務邏輯和任何依賴項。

我最近想到的是,當用戶保存他們的條目時,將表單的配置保存爲JSON以及條目。當用戶返回編輯舊條目時,我不會從當前數據庫模式加載配置,而只是轉儲與該條目一起保存的JSON配置。

對於業務邏輯,我保存系統版本號以及條目,例如「01」。當用戶加載舊錶單時,我檢查條目的版本,然後從類似「js/main_01.js」的路徑加載表單JavaScript。當我對業務邏輯進行非向後兼容的更改時,我將系統的版本號增加到例如「02」。新表單將使用「js/main_02.js」。我也使用這種便宜的版本控制方法來處理HTML視圖模板,這些模板越來越多了。

這種方法的工作原理,但它似乎有點脆弱或自行發展。我試圖避免像我的業務邏輯if version==2: do this條件。這種方法避免了這一點,但也有它的缺點。

我不認爲堆棧真的很重要這個convo,但以防萬一,我使用django/mysql。

回答

1

您可能會在此獲得大量的「意見」,並且沒有真正明確的答案。

您可以以可能的方式開發一個API到您的配置和邏輯,其版本與提交的數據一起保存,因此需要API-Manager解決方案。但是,您可以將整個DOM對象存儲在存儲數據的記錄中,從而創建一個靜態頁面,該頁面可以隨意調用並重新提交,並在視圖和模型之間分開。