Приложения в системе электронного документооборота. Часть 6: Представления

    Продолжая серию статей про приложения СЭД, остановимся на таком объекте, как представления. Представления – это элемент системы, который позволяет просматривать списки документов и заданий, организованные определенным образом в контексте приложения. На мой взгляд, это наиболее специфичный объект, который возможно отличает систему электронного документооборота от других типов систем, давайте рассмотрим его подробнее.

    Как было отмечено в самой первой публикации, приложение в системе электронного документооборота (в нашем случае – Docsvision) собирается из относительно независимо настраиваемых компонент: документов (карточек документов), процессов и заданий, представлений и папок. Представление в СЭД, в отличие от привычной таблицы в учетной системе — гораздо более гибкий инструмент. Это связано с необходимостью отображать в одном табличном представлении самые различные типы объектов, которые могут использоваться в приложении, и формировать определенный контекст этого отображения. Кроме того, представления должны позволять пользователям приложений выполнять разнообразные действия с объектами, которые отображаются в представлении в соответствии с бизнес-логикой приложений. Особенностью СЭД, и Docsvision в частности, является необходимость настраивать представления без программирования.

    Концепция представления, реализованного в Docsvision, творчески развивает идеи, заложенные в легендарном и в свое время исключительно революционном продукте Lotus Notes, в котором подобного рода объекты появились впервые. Наверное, представления (View) и являлись основной «фишкой» системы Lotus Notes, и мне, достаточно хорошо знакомому с традиционной разработкой баз данных, было очень трудно осмыслить предназначение этого компонента, когда больше 20 лет назад я оказался на одном из первых тренингов по этой системе в России.

    В чем же необычность?


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



    Рис.1 Пример представления Docsvision

    Специфика представления в том, что в одной таблице могут отображаться документы разных типов (некоторый аналог Join таблиц в базе данных), при этом вывести в представление можно абсолютно любой объект, отобразить любое его поле, а также различные производные данные. Поясню чуть подробнее.

    К чему можно применить представление?


    Существуют 2 возможности. Первая — применить представление к папке с документами, то есть отобразить в представлении документы, хранящиеся в физической папке. В папке Docsvision могут храниться документы различных типов, содержащие различный набор метаданных (атрибутов).
    Вторая – применить представление к так называемой виртуальной папке – это папка, отображающая результат некоторого поискового запроса, который может включать полнотекстовые и атрибутивные составляющие. В виртуальной папке могут также оказаться документы различных типов, при этом заранее даже нельзя предсказать, каких, т.к. в нее могут попадать документы, соответствующие полнотекстовому запросу, который применим к документам любого типа. Каждый документ будет отображаться в виде отдельной строки или группы строк (об этом чуть ниже).

    Структура представления


    Представление — это таблица, в каждой колонке которой — данные определенного типа и семантики. В приведённом примере – это тип документа, его номер, автор документа, контролер и срок исполнения.



    Рис. 2. Семантика заголовка таблицы представления.

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



    Рис. 3. Порядок отображения атрибутов документов различных типов в колонке представления.

    Конечно, у разработчика, привыкшего к созданию «традиционных» приложений, может возникнуть недоумение — как можно было спроектировать такое странное приложение, в котором заранее не продумана единая модель данных всех объектов системы и понадобился такой странный механизм? Однако тут надо вспомнить о том, что СЭД не является монолитным приложением. СЭД — это платформа, в которой отдельные приложения (включающие различные типы документов и представлений) могут создаваться в разное время разными разработчиками, могут приобретаться в готовом виде и донастраиваться в процессе эксплуатации. Все это приводит к тому, что обеспечить информационную целостность (например, сохранить единую политику наименования атрибутов) невозможно. Но эти создаваемые независимо приложения образуют в результате систему «накопления знаний организации» и для обеспечения информационной «целостности» этой системы с точки зрения пользователя и реализован данный механизм.

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

    Представления со сложной структурой отображения


    В представлении можно отобразить не только значение конкретных атрибутов документов, но и атрибуты картотек и справочников, связанных с исходной. Например, отобразить в представлении отдельные атрибуты документа и заданий, которые связаны с этим документом. Другим примером подобного сложного представления может служить отображение договоров и их атрибутов и списка актов (и их атрибутов), связанных с данным договором. Может потребоваться отображение атрибутов объектов, которые находятся в более сложных отношениях с документом. Например, может потребоваться отобразить данные (скажем, номер телефона) сотрудника, который является исполнителем задания по документу. Случай очень практичный – используя такое представление, мы можем быстро позвонить сотруднику, который задерживает исполнение документа, без необходимости открывать справочник сотрудников. Если рассмотреть информационную структуру, мы увидим, что номер телефона хранится не в документе и не в связанной карточке, а в справочнике сотрудников, на запись которого указывает поле карточки задания, связанного с документом. Система позволяет отображать в представлении данные из различных объектов, которые непосредственно связаны с отображаемым документом, либо связаны через промежуточные объекты (как в примере с телефоном сотрудника).

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

    В случае необходимости данные в представлении могут быть сгруппированы по значениям той или иной колонки таблицы. А, если вспомнить, что в колонке могут отображаться значения различных атрибутов различных типов объектов, то получается, что мы можем группировать объекты по полям, которые в различных типах карточек представлены различными атрибутами. На каждом уровне группировки могут быть посчитаны различные численные агрегаты – общее количество элементов, сумма и среднее для числовых полей и пр.



    Рис. 4. Пример представления с группировками и расчетом агрегирующих значений.

    Визуальное оформление представления


    Система позволяет настроить визуальное оформление представления: шрифты, цвет фона, формат разделителей и прочее, а в случае необходимости можно определять разные цветовые выделения для разных элементов (строк) таблицы, в зависимости от условий (значений отдельных полей таблицы). Например, могут быть выделены документы, по которым нарушены сроки исполнения, или те, срок исполнения которых наступит в ближайшее время. Система настройки визуального выделения достаточно гибкая и позволяет решать все практические задачи, возникающие при разработке приложений. На рисунке 4 строки, в которых отображаются агрегаты, выделены цветом, а на рисунке 1 завершенные во время задачи выделены зеленым, а простроченные – оранжевым.

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



    Рис. 5. Краткое содержимое документов отображается отдельной строкой в представлении для каждого документа

    Настроенное представление будет одинаково отображаться во всех клиентах: «тяжелом», легком (HTML) и мобильном, автоматически адаптируясь к типу форм-фактора.



    Рис.6. Отображение представления в легком клиенте Docsvision



    Рис.7. Отображение представления в мобильном клиенте Docsvision

    Операции с представлением


    С представлением целиком, как и с каждым документом в нем, можно выполнять различные операции из панели Риббона и из контекстного меню. Не только сортировать и фильтровать, но и выгрузить представление в Excel для передачи отчета по почте или для дальнейших манипуляций с данными. Аналогично письмам в Outlook, документы можно помечать как прочитанные или непрочитанные; можно реализовывать специфические обработчики — для этого есть специальная возможность настройки групповых операций. Можно определить для представления типы документов, к которым будут применяться групповые операции, видимое имя операции, иконку, для операции также необходимо создавать скрипт на языке C#, который будет реализовывать логику операции над документами, отображенными в представлении.

    Подытоживая эту статью, отмечу, что механизм представлений Docsvision позволяет прекрасно решать задачу построения синтетических отчетов для приложений, реализованных на базе системы Docsvision. Причем эти отчеты позволяют не только просматривать информацию, но и производить операции (сортировку, группировку, фильтрацию), инициализировать взаимодействие с объектами и выполнять групповые операции с ними.
    ДоксВижн 34,24
    Компания
    Поделиться публикацией
    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое