Мне нужно выбрать способ хранения подмножества контента на сайте SharePoint, чтобы при удалении и повторном создании определенных списков в рамках активации функции я мог повторно вставить весь этот контент обратно туда, где он должен принадлежать. У меня есть идея, но я не знаю, является ли это единственным и, что более важно, правильным методом.
Мой клиент заставил меня создать систему SharePoint, чтобы они могли общаться с их клиентами. Бизнес-процесс включает в себя, возможно, 5 этапов (может быть, больше, я даже не знаю, потому что они не рассказывают мне все), и текущая система, которую я написал за последние месяцы, может быть, 2 этапа. Это соответствует нашему крайнему сроку завершения этих систем к понедельнику следующей недели ... но с этого момента мой клиент планирует запустить сайт с этого момента.
По сути, их работа с клиентами будет проходить параллельно с моей работой для них. Завершив свою собственную работу на отдельном тестовом сервере, я перенесу каждый последующий этап процесса на работающий сервер. Запланированные простои в нерабочее время (например, в выходные дни) будут доступны для меня, чтобы выполнить эти действия. Идти в ногу с тем, чтобы моя разработка шла быстрее, чем фактический бизнес-процесс, является моей собственной проблемой и не по теме ... поэтому давайте вернемся к проблеме, о которой я говорил в начале этого поста.
В этой системе у нас есть наборы функций, которые будут создавать списки для связанных с ними типов контента и типов полей при активации и удалять эти списки при отключении этой функции. Большинству обновлений не нужно деактивировать и повторно активировать эти функции, такие как изменения рабочего процесса, настраиваемые действия, настраиваемые формы и тому подобное. Но есть некоторые части, которые требуют этого. На моем тестовом сервере я могу стирать списки, но как только сайт заработает и появятся реальные данные о переписке, это абсолютно недопустимо. Поэтому, когда мне нужно реализовать новое изменение в функциональности, мне нужно иметь возможность хранить текущие данные в нескольких списках, деактивировать функцию, повторно активировать функцию и восстановить все эти данные.
Возможно, я сам поднял свою петарду с системой функций, которую я внедрил. К сожалению, необходимость в дальнейшем создать несколько таких «сайтов проекта» означала, что мне пришлось много писать в своем коде с учетом концепции «Можно многократно развертывать».
Мой текущий план состоит в том, чтобы просматривать списки и библиотеки, которые будут зависеть от конкретной функции, которая должна быть сброшена. Файлы и все их версии будут сохранены в каталоге на сервере. Затем набор текстовых файлов будет использоваться для хранения всех важных значений полей для элементов. Это включает в себя множество перекрестных справочных поисков, которые необходимо будет поддерживать, но это достаточно просто. Затем я деактивирую функцию, развертываю новое решение и снова активирую функцию. Мы загружаем все файлы в порядке, указанном их версиями, и обновляем их сохраненными полями для этих версий, чтобы сохранить структуру версий. При каждой первой загрузке выбирается новый идентификатор и обновляются все соответствующие запросы в остальных файлах (в некотором роде, я уверен, что позже не буду обновлять его с неправильным значением, конечно ). После этого мы просматриваем все остальные элементы в порядке, наиболее подходящем для поддержания правильности реляционных данных. Это примерно подводит итог моего нынешнего плана. К моему преимуществу, в системе нет долго работающих рабочих процессов, на которые это будет влиять, поэтому мне не о чем будет беспокоиться, чтобы убедиться, что ничего не «работает», когда я делаю это.
Я действительно не знаю всех минусов этого подхода ... Я могу представить, что они довольно здоровенные. Но я не уверен, какие еще варианты у меня есть, и мои поиски ничего не дали. Есть ли кто-нибудь, кто может придумать лучшую идею? Или кто-нибудь просто скажет мне, что у меня действительно нет другого выбора? Заранее спасибо!