Tuesday 26 April 2016

Подробней о технической стороне решения "Работа с проектами документов". Часть 1

Прошлый мой материал имеет краткое описание форм решения "Работа с проектами документов" для SharePoint 2013. Здесь же, как я и обещал ранее, будет описание технической стороны этого проекта.
Следует сразу же оговориться, что данный проект целесообразно было бы сделать в рамках приложения для SharePoint 2013. Здесь же следует описание проекта, который состоит из нескольких изолированный решений Sharepoint 2013 и решений для фермы Sharepoint 2013.

Изолированные решения:

  1. Библиотека документов "Работа с проектами документов"
  2. Настраиваемый список "Участники согласования документов"
  3. Настраиваемый список "mListSP" (Таблица связи)
  4. Список "Обсуждение проектов документов"
  5. Пользовательское действие (CustomAction) 

Решения для фермы

  1. Библиотека. Методы для выполнения на стороне сервера Веб сервисов (WCF and SOAP). Методы этого решения выполняют задачи, которые было сложно сделать в рамках существующих в sharepoint 2013 rest api. Именно сложно, а невозможно. Лично я рекомендую использовать в своих работах методы sharepoint 2013 rest api. Но, к сожалению, сам не всегда следую собственным рекомендациям :). 
  2. Библиотека. Методы для контроля обработчиков событий. Расширение класса SPItemEventReceiver. Методы решения контролируют события - создания, редактирования и удаления строк в библиотеках и списках.
  3. Библиотека. Методы для выполнения заданий по исследованию содержимого проекта. Расширение класса SPJobDefinition
Это первая часть материалов. Далее планируется раскрывать каждую техническую часть подробней. Там же будут выложены ссылки на исходный материал.

Организация процесса согласования проектов документов. Решение для SharePoint 2013.

Поставлена задача написать для Sharepoint 2013 решение которое будет организовывать процесс согласования проектов документов.
При этом, главным условием было наличие в решении двух видов согласования: 
  1. Параллельный
  2. Последовательный
Кроме этого решение должно позволять:
  1. Регулировать уровень доступа к проекту документа индивидуально для каждого документа.
  2. Назначать каждому проекту документа (далее по тексту - Проект) тип согласования индивидуально.
  3. Создавать для каждого Проекта свой индивидуальный список согласующих лиц и предусмотреть возможность для автора Проекта редактировать этот список на любом этапе процесса согласования. Доступ к редакторам списка должен иметь только инициатор процесса согласования. Все остальные пользователи сайта SharePoint, включая участников согласования и администраторов сайта могут видеть только не редактируемый список согласующих лиц.
  4. Предусмотреть систему оповещения авторов Проектов, а так же участников процесса согласования о любых значимых событиях процесса согласования по почте.
  5. Предусмотреть возможность обсуждения Проектов участниками согласования в отдельном решении SharePoint (далее по тексту - Решение по обсуждению Проектов). При этом Решение по обсуждению Проектов должно быть интегрировано в единую систему оповещения о событиях процесса согласования.
  6. Исключить возможность редактирования документов после согласования.  
В итоге получаем единое решение SharePoint 2013, состоящее из
  1. Модернизированная библиотека документов "Проекты документов". Библиотека будет содержать документы.
  2. Настраиваемый список "Список согласующих лиц". Список будет хранить участников согласования.
  3. Настраиваемый список "Связи участников согласования с проектами документов". Список будет хранить информацию о связях библиотеки документов со списком участников согласования. Между библиотекой документов и списком мы организуем отношения "Много ко Многим". Например у конкретного документа будет множество участников согласования, которые принимали по нему решение и наоборот - у одного участника согласования будет множество документов, по которым он принимал решение. 
  4. CustomAction. Для меню проекта.

Некоторые формы решения:

1. Редактор библиотеки документов:


2. Представление библиотеки документов


3. Редактор списка Участников согласования документов 


4. Представление участников согласования

5. Представление списка связей участников согласования документов и документов

6. Редактор связи библиотеки документов и списка участников согласования

7. Форма обсуждения проектов документов


8. Форма на финише согласования документов. Возможность распечатать список согласовавших проект документа

В следующих постах будут раскрыты детали проекта поэтапно. Следите за обновление материалов :)