Работа с файлами

Платформа Docsvision позволяет загружать в базу данных и извлекать из базы данных пользовательские файлы произвольного формата. Для работы с файлами в системе существует специальная системная карточка — карточка файла, а также набор интерфейсов менеджера объектов для манипуляций с файлами.

Для работы с файлами можно использовать несколько видов объектов:
  • Системный объект — файл — реализует простейшую функциональность для хранения файлов в базе данных Docsvision.

  • Системный объект — версия файла — реализует дополнительные атрибуты для нумерованной версии файла.

  • Системная карточка файла — поддерживают функциональность по хранению нескольких версий файла, комментариев к ним и дополнительных механизмов работы с файлом.

  • Карточка файла из решения Делопроизводство (не рассматривается).

  • Карточка — список файлов из решения Делопроизводство (не рассматривается).

Системный объект — файл

Для работы с простыми файлами в системе предусмотрен объект FileData. Это самый низкоуровневый объект для работы с двоичными данными файла — поэтому у него нет таких понятий как "версия" или "свойства".

Работа со стандартными файлами осуществляется при помощи менеджера файлов, который может быть получен из интерфейса менеджера объектов UserSession.FileManager. Менеджер файлов позволяет выполнять простейшие операции с файлами — создавать, удалять, копировать и осуществлять поиск файлов в системе

В примере, создадим файл с названием NewFile и загрузим в него файл из файловой системы NewFile.doc, после чего присвоим переменной newFileId значение идентификатора созданного файла

FileData file = userSession.FileManager.CreateFile("NewFile"); (1)

file.Upload("C:\\NewFile.doc"); (2)

Guid newFileId = file.Id; (3)
1 Создание нового файла.
2 Загрузка файла из файловой системы.
3 Получение идентификатора для дальнейшего использования.

Внешнее хранение файлов

В системе Docsvision файл имеет две составляющие: информационную и бинарную. В информационной части хранится информация о файле (название, размер и т. п.), в бинарной — бинарное содержимое файла.

Информационная часть файла храниться в БД Docsvision, бинарная может храниться в основной БД или в другом поддерживаемом хранилище.

Подробная информация о внешнем хранении файлов приведена в пункте "Внешние хранилища", Руководстве администратора модуля Платформа и документе "Общее описание системы".

При работе с данными файла следует учитывать следующую особенность: между информационной и бинарной частью файла устанавливается связь один ко многим — несколько информационных частей могут ссылаться на одни бинарные данные. Например, данная ситуация возникает при копировании файла с помощью метода FileData.Copy. После изменения содержимого файла (с использованием стандартного API) оригинал и копия станут ссылаться на собственный (уникальный) экземпляр бинарных данных.

Офлайн режим файла

Для файлов поддерживается офлайн режим, при котором файл перемещается в хранилище, поддерживающее режим офлайн.

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

Изменение оперативного статуса файлов выполняется с помощью методов FileData.TakeOffline и FileData.BringOnline.

Для выполнения операций вытеснения/восстановления файлов из внешнего хранилища требуется наличие привилегии оператора архива (членство в группе DocsVision Power Users).

Текущее состояние файла определяется элементом из перечисления OfflineState — перечисление.

Системный объект — версия файла

Версия файла (объект FileVersion) расширяет функциональность стандартного файла и наследует его интерфейс. Свойства и методы версии файла повторяют аналогичные свойства файла и добавляют к ним собственные.

Объект версии файла не может быть создан разработчиком напрямую и используется только в системной карточке файла с версиями VersionedFileCard.

Системная карточка файла

Системная карточка файла используется для обеспечения удобства работы с файлами и предоставляет дополнительные возможности, такие как:

  • Поддержка неограниченного количества версий каждого файла.

  • Возможность задания комментариев к версиям файла.

  • Обеспечение безопасности при работе с файлом.

  • Поддержка механизма единоличного владения файлом (CheckIn/CheckOut).

Для работы с системной карточкой файла в менеджере объектов предусмотрен объект VersionedFileCard.

Поскольку карточка файла является обычной карточкой Docsvision, то для её создания необходимо прибегнуть к помощи объекта — менеджера карточек (CardManager).

Пример создания и первичной инициализации карточки файла:
VersionedFileCard fileCard = (VersionedFileCard)userSession.CardManager.CreateCard(new Guid("6E39AD2B-E930-4D20-AAFA-C2ECF812C2B3")); (1)

fileCard.Initialize("C:\\NewFile.doc", Guid.Empty, false, false); (2)

FileVersion fileVersion = fileCard.CurrentVersion; (3)

Console.WriteLine(fileVersion.VersionString); (4)
1 Создание карточки файла с версиями, 6E39AD2B-E930-4D20-AAFA-C2ECF812C2B3 — идентификатор такого типа карточек.
2 Первичная инициализация карточки файла.
3 Получение первой версии файла.
4 Вывод номера версии.
Таким образом, для работы с файлами:
  • При использовании системы в качестве хранилища файлов произвольного формата для простоты следует использовать системный объект-файл.

  • При необходимости ведения сложной иерархии версий файла и реализации механизмов CheckIn/CheckOut следует использовать системную карточку файла.