Автоклассификаторы: работать с большим архивом документов можно легко и быстро

38 1

Об идее, пришедшей нам во время выполнения одного из проектов, я писал в конце прошлого года. Задумка довольно быстро превратилась в полноценный и работающий прототип. Первые версии были нами опробованы на «подопытных» клиентах и реализуемых в то время проектах. Результаты были признаны вполне успешными, что и послужило основной причиной выпуска технического решения в качестве полноценного коммерческого продукта.

Сегодня мы объявляем о выходе третьей версии, о новшествах и возможностях которой я расскажу в этой статье.

Цели и задачи

Напомню, что послужило предпосылками появления этого решения.

  1. В папках проводника DIRECTUM жестко ограничен список реквизитов, которые можно вывести в колонки.

    Стандартная настройка видимых колонок
    А ведь так часто возникает необходимость работать с организацией, номером или датой документа. Да любыми другими реквизитами, в зависимости от типа карточки.
    Отсюда появилось одно из основных требований к решению – возможность вывести в колонки списка произвольный реквизит. Причем, по этому реквизиту должна работать и фильтрация, и сортировка списка документов, аналогично проводнику DIRECTUM.
  2. Необходимость ручного ведения в DIRECTUM дерева папок для классификации документов. Кому-то нужно создавать из них иерархии и «раскладывать» документы в определенные подпапки. А после этого еще и поддерживать эту структуру в актуальном состоянии. Конечно, такой подход уже морально устарел и отнимает много времени на технические действия. Ситуацию немного спасают папки поиска, но реализуемое с их помощью дерево с вынужденным дублированием папок оказалось не особо удобным в работе:

    Дерево папок с папками поиска
    Отсюда появилось второе требование – в зависимости от прав доступа пользователя, документы должны автоматически отображаться в настроенном представлении и распределяться по динамически построенной иерархии (виртуальному дереву папок).
  3. Низкая скорость работы поиска в DIRECTUM. Проблема в том, что если по запросу пользователя будет найдено большое количество документов, то все они будут довольно долго отрисовываться у него в окне результатов поиска. Но зачем показывать пользователю такое количество документов, если он все равно не сможет среди них найти нужный и будет вынужден корректировать запрос?
    Так появилось требование существенно сократить время поиска. Это означало, что поисковая выдача должна работать постранично, а в соответствии с последними тенденциями – автоподгрузкой содержимого при пролистывании. Приемлемое время поиска и построения иерархии на архиве с 1 млн. документов – 2-3 секунды.

А также ряд вытекающих отсюда требований: возможность добавлять произвольные действия с документами в контекстное меню, способствовать выявлению некорректно заполненных документов, и некоторые другие.

Реализация и возможности

В DIRECTUM существует, пожалуй, только один способ, который позволял выполнить такую задачу – обложка папки. Все возможности тут ограничены лишь знаниями HTML и JavaScript. Забегая вперед, скажу, что пришлось хорошенько поработать как в прикладной разработке, так и над оптимизацией SQL-запросов. Иначе решение не получилось бы таким быстрым и удобным.

Помимо обложки, в решение входит настроечный справочник, с помощью которого задаются параметры доступных пользователям автоклассификаторов и их представлений. А взаимодействие обложки с базой данных выполняется посредством вспомогательных сценариев DIRECTUM.

Работа осуществляется через выделенную папку, на которую администратором настраивается обложка решения. Впрочем, папка может быть и не одна – для различных архивов можно создать отдельные папки, чтобы не смешивать все представления в одной и управлять доступом. В примечании папки можно ограничить список доступных представлений и указать классификатор, открываемый по умолчанию:

Настройка папки с обложкой

В обложке пользователь может выбрать доступные ему представления (классификаторы). Открыв нужное представление, можно работать как со всем списком документов, который выводится после открытия, так и воспользоваться автоматически сформированной иерархией папок:

Открытие обложки и работа с деревом

По кнопке «Настройка колонок» можно добавлять и убирать реквизиты документов, выводимые в колонках обложки. По всем реквизитам можно осуществлять поиск с помощью фильтров и управлять сортировкой:

Настройка колонок, фильтрация и сортировка

Настроенные в каждом классификаторе список колонок, их ширина и направления сортировок сохраняются для каждого пользователя. Контекстное меню дублирует привычное контекстное меню проводника DIRECTUM, и в целом, переход между проводником и обложкой становится для многих пользователей малозаметным. В контекстное меню могут быть добавлены произвольные действия:

Настройка пользовательского вида

Настройка решения

Настройка доступных классификаторов выполняется в отдельном справочнике Настройки архивов документов. Для каждого представления задаются:

  1. Список типов карточек документов, которые будут отображаться в классификаторе.
  2. Настраивается дерево иерархии. Количество уровней не ограничено, и в качестве любого из них может быть также задан вычисляемый реквизит.
  3. Выбираются реквизиты, которые будут доступны пользователям для вывода на обложке. Реквизиты могут быть реальные и вычисляемые.
  4. Пользователям выдаются права доступа на созданный классификатор.

Настройка классификатора в справочнике

Что нового

В третьей версии мы произвели достаточно много изменений. Фактически, переписали заново многие блоки, используя замечания от работы с первыми версиями. Самые существенные изменения:

  1. Работа обложки была значительно ускорена. Как я уже говорил выше, построение дерева и вывод результатов поиска из 1 млн. документов теперь занимает всего несколько секунд. Для достижения такого результата пришлось применить целый комплекс мер:
    1. Первая версия обложки разрабатывалась с использованием Bootstrap, что позволило довольно быстро разработать прототип решения, но в текущей версии было принято решение отказаться от данного фреймворка и использовать только библиотеку jQuery.
    2. Отказались мы также и от использования JSON и XML, как связующего звена. Было найдено нестандартное и очень быстрое решение – формирование основной HTML разметки непосредственно в SQL-запросе.
    3. Реализовали постраничный вывод результатов поиска с автоматической подгрузкой документов.
  2. Добавлена возможность настройки и вывода в качестве колонок и папок дерева вычисляемых реквизитов. Например, чтобы можно было вывести значение реквизита из связанного справочника, или составить общее значение из нескольких значений других реквизитов – чтобы не модифицировать для этого карточки документов и даже вывести пользователя, у которого документ «висит» на согласовании.
  3. Изменен дизайн обложки. Оформление было максимально адаптировано под привычный интерфейс DIRECTUM.
  4. Реализована возможность работы с реквизитами типа «текст», в том числе сортировка и поиск по этим реквизитам.
  5. Реализовано сохранение пользовательских настроек внешнего вида обложки: выбранные колонки, их ширина и направления сортировки теперь сохраняются и при последующем открытии подгружается настроенный вид обложки.

В заключение

Решение Автоклассификаторы архива документов предоставляет удобный вспомогательный механизм для качественного повышения скорости и возможностей работы с электронными архивами в DIRECTUM. Особенно актуально это решение будет для работы с большими архивами, невозможной без структуризации документов и быстрого интуитивного поиска по ним.

Предлагаем воспользоваться данным решением всем клиентам и партнерам DIRECTUM при автоматизации работы с различными архивами документов.

По техническим вопросам работы решения можно связаться со мной напрямую.

Александр Куклин

Круто! yes
Пощупать бы ещё это решение изнутри smiley

Авторизуйтесь, чтобы написать комментарий