Создание приложения ColdFusion с контролем версий - PullRequest
1 голос
/ 23 ноября 2010

У нас есть CMS, построенная полностью в доме.Я новичок в веб-разработчике с 4-х недельным опытом ColdFusion.Я хочу добавить контроль версий на наши динамические страницы.Что-то вроде того, что делает Wordpress.Когда вы изменяете страницу в Wordpress, она создает базу данных и сохраняет копию каждой страницы при ее сохранении.Таким образом, если вы создаете страницу и модифицируете ее 6 раз, все за один день у вас будет 7 разных версий для отката в случае необходимости.Есть ли простой способ сделать что-то подобное в Coldfusion?

Обратите внимание, что я не говорю об управлении исходным кодом или управлении версиями реальных файлов CFM, все страницы выполняются в бэкэнде динамически с использованием SQL.

Ответы [ 4 ]

4 голосов
/ 23 ноября 2010

уверен, что можете. просто спрятать содержимое страницы в другой таблице базы данных. Вы можете сделать это с помощью ColdFusion или с помощью триггера в базе данных.

2 голосов
/ 23 ноября 2010

Один из способов (есть много) для этого - добавить столбец с именем «version» и столбец с именем «live» в таблицу, где вы храните все свои страницы cms.

Столбец с именем live является опцией, но он может несколько облегчить вашу работу при запуске.

В столбце «версия» будет указано, какой номер редакции документа в CMS у вас есть.По процессу исключения вы можете сказать, что самая новая версия (самая высокая версия #) будет самой последней и активной.Тем не менее, вам может потребоваться переопределить это некоторое время и перевести старую страницу в режим реального времени, что может быть установлено для параметра «вживую».

Так что, когда вы нажимаете «изменить» на странице, вы должны принятьту версию, на которую нажали, и скопируйте ее в новый более высокий номер версии.Он остается черновиком до тех пор, пока вы не нажмете «Опубликовать» (тогда он будет написан как «живой») ..

Надеюсь, это поможет.Такой подход должен хорошо работать с большинством схем, но я не могу сказать наверняка, даже не увидев его.

0 голосов
/ 24 ноября 2010

Для генерации страниц в реальном времени из базы данных лучше всего использовать таблицы «вживую» и «версионные». Причина, по которой все данные хранятся в одной и той же таблице в реальном времени, будет негативно влиять на производительность. Таким образом, если при генерации страницы используется один запрос SELECT из действующей таблицы, вы можете легко создать версию результирующего набора, используя формат обмена веб-данными ColdFusion (wddx) через тег <<a href="http://livedocs.adobe.com/coldfusion/8/Tags_u-z_2.html" rel="nofollow"> cfwddx >. WDDX - это сериализованный формат данных, который особенно хорошо работает с данными ColdFusion (что-то вроде огурца Python, хотя и без возможности работать с объектами).

Версионная таблица может быть такой:

PageID
Created 
Data

Где данные - это столбец, в котором хранится WDDX.

Обратите внимание, что вы также можете использовать встроенную поддержку JSON для сериализации версий (serializeJSON & deserializeJSON), но cfwddx имеет тенденцию быть более стабильным.

0 голосов
/ 24 ноября 2010

Решение Jas работает хорошо, если большинство изменений относятся к одному полю, например, к полному тексту страницы содержимого.

Однако, если у вас много полей, и люди имеют тенденцию менять только одно или два за один раз, новая запись в таблице для каждой версии может быстро выйти из-под контроля со многими почти идентичными версиями в истории.

В этом случае я хотел бы сохранить изменения для каждого поля в таблице ChangeHistory. Я включаю имя таблицы, идентификатор строки, имя поля, предыдущее значение, новое значение, а также кто и когда внес изменения.

Это действует как полная история изменений для любого поля в любой таблице. Я также могу просматривать изменения по записи, по пользователю или по полю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...