Необходимо сделать управление версиями существующей системы - PullRequest
2 голосов
/ 26 апреля 2011

Я работаю в системе, которая теперь требует поддержки версий.Кратко объясню вам проект.У нас есть CMS, в которой есть три пользователя: 1. Super Admin, 2. Editor, 3. Approver.Редактор добавляет данные из CMS и отправляет их утверждающему, если он утверждает данные только в том случае, если они видны во внешнем интерфейсе.Теперь, если редактор отредактирует те же данные, затем они будут отклонены и удалены из интерфейса и agian, он отправит их утверждающему, и тот же процесс будет следовать.Вот как это работает сейчас.

Теперь клиент изменил требование, и теперь он хочет, чтобы после того, как данные были утверждены и видны на сайте, т. Е. Интерфейс и редактор теперь редактирует данные, он не долженудалены из внешнего интерфейса, и новые отредактированные данные должны быть отправлены на утверждение, а когда утверждающий утверждает данные, старый должен быть заменен новым во внешнем интерфейсе.

Дизайн базы данных очень плохой, поэтому он собираетсяТрудно добиться этого.

Решение, о котором мы думали, это ... Например, редактор может добавить какие-то новости в интерфейс.Все данные по новостям добавляются в таблицу новостей.Редактор добавляет, что новость отправляет его на утверждение, а затем он утверждает.До сих пор нет проблем.Теперь предположим, что по какой-то причине он хочет отредактировать ту же новость, которая одобрена.В тот момент, когда он нажимает кнопку редактирования, она удаляется из внешнего интерфейса, поэтому мы думаем, что поддерживаем другую таблицу, например, temp_news с той же структурой, и в тот момент, когда он нажимает на редактирование новостей после их утверждения, новая запись должна быть вставлена ​​в таблицу temp_news.со значениями из таблицы новостей, добавленных в эту таблицу.До этого момента во внешнем интерфейсе мы будем отображать новости из таблицы новостей.Так что теперь у нас одинаковые новости в двух таблицах.Теперь утверждающий и редактор могут вносить все изменения, и мы обновим таблицу temp_news.В тот момент, когда утверждающий одобрит эти измененные данные, мы обновим таблицу новых значениями из таблицы temp_news.так что теперь в передней части у нас есть обновленные новые.Проблема с этим решением состоит в том, что после утверждения изменения обе таблицы news и temp_news содержат самые последние данные.Это не управление версиями.Нужно решение для этого.

Я только начинающий.

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

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

news
----
ID           int
newsItem     int
dateCreated  datetime
IsApproved   boolean
content      text

Затем для отображения на внешнем интерфейсе.Просто

SELECT top(1) * FROM news where IsApproved = true orderby dateCreated desc  

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

и более новая версия получит новый идентификатор и dateCreated, но isApproved будет иметь значение false, так что если бы вы имели3 версия той же новости.это будет выглядеть как

ID    newsitem    dateCreated    IsApproved  
1         1        2011-4-26        false
2         1        2011-3-20        true
3         1        2011-1-6         true
1 голос
/ 26 апреля 2011

Как насчет системы контроля версий, такой как Git? Сохраните версии, включая версию, которая будет утверждена в Git, и версию, утвержденную в таблице базы данных (только одну). Когда новая версия будет утверждена, переместите ее в базу данных. Поскольку вы используете C # и ASP.NET, вам может пригодиться что-то вроде git #

Люди уже делают это:

Это веб-сайт Django с изюминкой: Весь контент хранится в текстовых файлах. я управляйте этими файлами с помощью git. Немного скрипт загружает эти файлы в базы данных, а затем Django обслуживает их.

На самом деле, весь контент и его история на самом деле общедоступна (но вам не нужно делать история доступна для того, чтобы использовать это система). Вы все можете увидеть это пример использования django-gitcms.

http://luispedro.org/software/git-cms

http://nestacms.com/docs/creating-content/publishing-articles-with-git

Управление контентом на основе Git?

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