Работа с файлами
Платформа 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
следует использовать системную карточку файла.