Создание нового типа правил добавления в хранилище
Администратор может настроить правила помещения бинарных данных файлов в определённые группы хранилищ, в зависимости от типа файла, его размера или принадлежности к справочникам Docsvision. Разработчику предоставляется возможность реализовать собственные типы правил для настройки условий помещения в хранилища.
Для использования собственного типа правил добавление в хранилище необходима опция лицензии Docsvision модуль интеграции с произвольными файловыми хранилищами. |
Компонент, реализующий правило добавления в хранилище, представляет собой библиотеку .dll
с классом, реализующим интерфейсы IBinaryStorageRule
и IExtensionInitialize
.
Интерфейс IBinaryStorageRule
определяет метод проверки выполнения условий помещения в хранилище. Интерфейс IExtensionInitialize
определяет метод инициализации провайдера (Initialize
), принимающий в сериализованном виде настройки хранилища. Настройки хранилища устанавливаются с помощью графического интерфейса настройки (рассмотрено далее).
Стандартной реализацией интерфейсов IBinaryStorageRule
и IExtensionInitialize
является класс BaseBinaryStorageRule
, который можно использовать в качестве базового класса разрабатываемого компонента с правилом добавления в хранилище.
Также может быть реализован компонент настройки правила, если предполагается предоставлять возможность настройки правила с помощью Консоли настройки Docsvision.
Пример
Далее демонстрируется пример реализации правила помещения в хранилища в зависимости от установленного в настройках шаблона файлов. Исходный код примера доступен по ссылке.
-
Основной класс.
В данном примере основной класс правила базируется на классе
BaseBinaryStorageRule
. Класс должен быть помечен атрибутомSystem.ComponentModel.DisplayName
с указанием отображаемого названия типа правила — отображается в Консоли настройки Docsvision.Реализация компонента правила предполагает возможность его настройки с помощью Консоли настройки Docsvision. Для этого класс должен быть помечен атрибутом
System.ComponentModel.Editor
, в котором нужно указать полное название класс, реализующего форму настройки (описание будет приведено далее).using DocsVision.Platform.StorageServer.BinaryStorages.Rules; using DocsVision.Platform.StorageServer.Files; using System; using System.ComponentModel; using System.Text.RegularExpressions; namespace RuleByFileName { [DisplayName("Шаблон файла")] [Editor( "RuleByFileName.FileNamePatternPropertyControl, RuleByFileName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=774759c67c4f8865, processorArchitecture=MSIL" , "DocsVision.Platform.WinForms.Controls.IExtensionPropertiesControl, DocsVision.Platform.WinForms" )] public class FileNameStorageRule : BaseBinaryStorageRule { string fileNamePattern; public FileNameStorageRule() (1) { } public FileNameStorageRule(IServiceProvider serviceProvider) : base(serviceProvider, null) { } public override bool IsRuleSatisfied(IFileInfo fileInfo) (2) { Regex regex = new Regex(fileNamePattern, RegexOptions.IgnoreCase); (3) return regex.IsMatch(fileInfo.Name); } protected override void ReadSettings() (4) { fileNamePattern = Settings.Replace(@"\", @"\\").Replace(".", @"\.").Replace("*", ".*"); (5) fileNamePattern = "^" + fileNamePattern + "$"; } } }
1 Обязательный конструктор без аргументов. 2 Метод, осуществляющий проверку соответствия файла условиям данного правила. 3 Файл проверяется по маске с помощью регулярного выражения fileNamePattern
.4 Загрузка настроек. По умолчанию настройки, установленные в Консоли настройки Docsvision, загружаются в строковую переменную
Settings
. Предполагается, что пользователь будет указывать шаблон файла в видеАкт*.doc*
, а для проверки соответствия имени файла шаблону будет использоваться регулярное выражение. Чтобы привести установленный пользователем шаблон к виду шаблона регулярного выражения был переопределён стандартный метод загрузки настроекReadSettings
. -
Компонент настройки.
При создании нового типа правил помещения в хранилище можно предоставлять возможность настроить его через Консоль настройки Docsvision, или хранить настройки непосредственно в классе, или предоставлять иные способы настройки.
В данном примере предусмотрен стандартный способ настройки правила с помощью Консоли настройки Docsvision, который предполагает возможность ввода шаблона на странице настройки внешних хранилищ.
Рисунок 1. Настройки правил хранилища
-
Создать класс с формой настройки.
-
Указать данный класс в атрибуте
Editor
основного класса правила помещения в хранилище.Класс с формой настройки представляется собой компонент типа
System.Windows.Forms.UserControl
с реализованным программным интерфейсомIExtensionPropertiesControl
. Далее приведён код примера данного класса.using DocsVision.Platform.WinForms.Controls; using System; using System.Windows.Forms; namespace RuleByUser { public partial class FileNamePatternPropertyControl : UserControl, IExtensionPropertiesControl { public FileNamePatternPropertyControl() { InitializeComponent(); } public string Settings { get; private set; } public event EventHandler OnPropertiesChanged; public void Initialize(string settings) (1) { Settings = settings ?? "*.*"; (2) PatternBox.Text = Settings; (3) } public bool Save() (4) { Settings = PatternBox.Text; (5) return true; } private void PatternBox_TextChanged(object sender, EventArgs e) { OnPropertiesChanged?.Invoke(this, e); } } }
1 Вызывается при загрузке компонента. 2 Если строка настройки отсутствует, используется стандартный шаблон *.*
.3 Отображаем загруженный шаблон в графическом интерфейсе. 4 Вызывается при сохранении настроек. 5 Шаблон, установленный пользователем, должен быть сохранён в переменную Settings
.Рисунок 2. Пример формы настройкиУ класса формы две основных задачи:-
Показать пользователю текущие настройки при открытии формы настройки при вызове метода
Initialize
; -
Сохранить настройки пользователя в переменную
Settings
при вызове методаSave
.При вызове
Save
можно осуществить проверку настроек пользователя: если настройки не содержат ошибки нужно вернутьtrue
, иначе —false
.
-
-
Подписание сборки.
Разработанный компонент должен быть подписан. Это необходимо для формирования полного имени сборки и регистрации компонента в GAC.
-
Регистрация компонента в GAC.
Собранный компонент, включающий основной класс и класс формы настройки, должен быть зарегистрирован в GAC сервера Docsvision. Для регистрации используйте
gacutil
.
Проверка
-
Откройте Консоль настройки Docsvision.
-
Перейдите в раздел
. -
В секции "Правила помещения в хранилища" добавьте новые правила.
-
При добавлении в параметре Тип выберите вариант Добавить из сборки и выберите сборку с реализованным новым правилом. В список типов правил добавьте строку "Шаблон файла".
-
Выберите тип "Шаблон файла" и укажите шаблон файла.
-
Укажите группу хранилищ, в которую будет помещаться файлы по данному правилу.
-
-
Переместите правило в начало списка правил, чтобы оно проверялось первым при добавлении файла.
-
Если требуется, настройте другие параметры хранилищ.
-
Сохраните настройки.
-
Создайте карточку и добавьте файл с названием, соответствующим указанному в правиле "Шаблон файла" шаблону. Файл будет сохранён в хранилище из группы хранилищ, указанных при настройке правила "Шаблон файла".