В отличие от других приложений корпоративной системы (ERP, CRM, PDM и пр.), в которых пользователь работает постоянно и выполняет активную роль при взаимодействии с программой, большинство пользователей СЭД работают в ней периодически, по мере возникновения необходимости обработки того или иного документа в рамках регламентов. Например, необходимо согласовать договор или заявку, утвердить распоряжение по входящему документу и пр. Большая часть процессов даже функцию инициации обработки документа реализует автоматически на основании стандартных процедур регламентов. Сценарий работы в СЭД отличается от работы в других приложениях: система должна уведомить пользователя о необходимости выполнения тех или иных действий и предоставить ему все необходимые данные в удобном интуитивно понятном интерфейсе для их выполнения, т.к. он может обрабатывать этот вид задания раз в год или вообще единственный раз. Уведомление и «доставка» документов и необходимого контента пользователю в нужное время реализуется как раз через механизм заданий. Задание обеспечивает также необходимый интерфейс для обработки документа, предлагая различные варианты завершения, форму для заполнения и пр., а иногда и краткую инструкцию о том, что необходимо сделать.
Как мы уже отметили, задание — достаточно сложный объект. Эта сложность – следствие разнообразия сценариев, которые приходится реализовать разработчикам приложений СЭД с использованием заданий. При всей сложности оно должно быть интуитивно понятным, чтобы сотрудник быстро сориентировался, что и как нужно сделать.
Базовые функции задания
Задание Docsvision базируется на том же объекте, что и карточка документа Docsvision (см. статью habrahabr.ru/company/docsvision/blog/263263) – соответственно, к ней применимы те же возможности кастомизации. Это возможность изменить структуру данных, интерфейс, логику обработки, машину состояний, ролевую модель и пр. Однако задание имеет предопределенную логику обработки, которая не может быть изменена. Задание имеет такие поля, как исполнитель, контролер, плановый и реальный сроки исполнения, плановую и фактическую трудоемкость и прочие, характерные именно для задания. Базовая логика обработки подразумевает маршрутизацию задания и уведомлений исполнителей, возможность для исполнителя видеть задание в соответствующих папках (Входящие) и завершить с помощью соответствующей кнопки.
![](https://habrastorage.org/files/8e9/01b/4a0/8e901b4a0617479286b7d50321640257.png)
Рис. 1. Интерфейс работы с заданием позволяет реализовать разнообразные операции по его обработке с помощью кнопок ленты.
Возможности маршрутизации заданий
Задание имеет разнообразные варианты маршрутизации в базовой функциональности: исполнитель может делегировать его (при наличии соответствующих прав) заместителю вручную, либо передав ему полностью права на исполнение, либо потребовав возврата по завершении. Задание может иметь шаг контроля: в этом случае после завершения задания оно будет передано контролеру на подтверждение исполнения. Задание может быть декомпозировано, т.е. по нему могут быть созданы подчиненные задания, которые, в свою очередь, могут быть декомпозированы — таким образом, формируется иерархия подчиненных заданий – это своего рода процесс исполнения задания, который может контролировать исполнитель. Помимо ручной маршрутизации, реализуются сценарии автоматического замещения: если сотрудник оказался, по тем или иным причинам, недоступен, то задание будет автоматически переправлено заместителям на исполнение.
Способы инициализации заданий в приложениях
Само по себе задание является отдельным приложением Docsvision. Оно может быть создано пользователем, но это далеко не единственный сценарий его инициализации. Есть несколько способов встроить задание в приложения Docsvision:
• Самый простой – использовать функцию инициализации задания в бизнес-процессе (https://habrahabr.ru/company/docsvision/blog/281959/), при этом при конструировании процесса нужно позаботиться о правильной инициализации параметров задания – назначении исполнителя, сроков, выбор вида задания, передаче в задания необходимых документов и пр.
• Для инициализации задания можно использовать специальный .Net компонент, который доступен для любой карточки. Он позволяет встраивать функции создания задач и контроля хода их исполнения для любых документов, настраиваемых с помощью конструктора или создаваемых в виде отдельных программных компонентов системы.
• И, наконец, функциональность работы с заданием может быть добавлена в любое приложение с использованием программного кода через API.
Кастомизация задания
Поведение стандартного функционала задания может быть настроено в справочнике видов объекта «Задание». Например, можно настроить правила делегирования, возможности декомпозиции, правила создания задания из карточек документов (в частности, правила автоматического заполнения полей задания из полей карточки документа).
![](https://habrastorage.org/files/a76/553/116/a7655311600646f0b310b831738203d9.png)
Рис.2. Богатые возможности настройки стандартного поведения задания в справочнике видов задний без программирования
В задание можно добавлять или модифицировать произвольную функциональность с помощью конструкторов разметок, состояний, ролей и скриптов, аналогично тому, как это делается для всех других карточках документов Docsvision.
Кастомизация бизнес-логики, сбор метрик
В случае необходимости изменения бизнес-логики работы с заданиями в отдельных приложениях, например, реализуется нестандартная логика завершения. Предусмотрены так же средства настройки в справочнике видов заданий. Например, в случае специализированного задания в приложении «согласование финансовых документов» нужно не просто завершить задания, а выбрать одну из альтернатив – «Согласовать», «Отклонить» и «Дополнительное согласование», при этом в случае выбора альтернативы «Отклонить» необходимо указать причину в виде простого текста, в случае «Дополнительное согласование» — сотрудника или группу из справочника сотрудников. Подобные сценарии могут быть настроены стандартными механизмами без программирования.
![](https://habrastorage.org/files/d28/c05/e98/d28c05e98f3244a2b77c922e62079483.png)
Рис.3. Для кастомизации интерфейса и логики обработки задания доступны все инструменты Docsvision
Зачастую требуется более сложная обработка задания в процессе его исполнения. Один из таких сценариев – автоматический сбор информации о ходе исполнения задания для формирования метрик процесса. Например, можно сформировать программный скрипт, который будет отслеживать активность пользователя при работе с заданием и автоматически формировать отчет о фактических временных затратах на его исполнения. На практике приходится сталкиваться с самыми разнообразными сценариями работы с заданиями, что привело к необходимости реализовать все возможные механизмы кастомизации, аналогичные средствам кастомизации карточек документов.
Маршрутизируемые в задании объекты
Основная функция задания – доставлять исполнителю те или иные документы. Практика показывает, что это могут быть самые различные типы документов – обычные файлы, структурированные карточки документов, ссылки на различные внешние сущности, например, URL-ссылки, на те или иные WEB страницы, и, наконец, это могут быть объекты различных внешних систем, с которыми работает подсистема бизнес-процессов, через механизм шлюзов, про который мы говорили в предыдущей статье (https://habrahabr.ru/company/docsvision/blog/281959/).
Особенностью реализации работы заданий в Docsvision является возможность бесшовной маршрутизации внешних объектов шлюзов непосредственно в задании. Например, если пользователю необходимо на определенном этапе бизнес-процесса поработать с тем или иным документом 1С, он получит задание, в котором будет содержаться соответствующая ссылка и, инициировав ее, пользователь откроет именно тот документ, который ему необходим. У него нет нужды отдельно открывать программу 1С и искать там соответствующий объект.
![](https://habrastorage.org/files/188/093/298/188093298e094b58848d7d0380e5d6e6.png)
Рис. 4. Задание поддерживает механизмы in-place – работу с контентом непосредственно в интерфейсе задания.
Управление задачами в бизнес-процессах
В случае если стандартных инструментов маршрутизации и обработки бизнес-логики задания для реализации функций приложения оказывается недостаточно, можно применить еще один механизм кастомизации – специальную функцию бизнес-процесса. Если задание инициировано бизнес-процессом, или бизнес-процесс каким-то образом «отыскал» задание для обработки, то можно настроить его таким образом, что он будет реализовывать логику обработки задания. Например, реализовать обработку нештатных ситуаций — автоматически завершить или отозвать задание, изменить исполнителя, сроки или текст задания, если нарушены какие-то регламенты его обработки. Это можно реализовать без программирования. И, естественно, в процессе можно применить и программную обработку задания, что делает возможности расширения логики обработки практически неограниченными.
Различные интерфейсы работы с заданиями
Задание – это объект, с которым пользователь должен взаимодействовать в любой момент времени через доступные ему средства коммуникации. Поэтому мы реализовали различные варианты работы с заданиями, через различные типы устройств. Сегодня пользователям доступны:
• Полнофункциональный клиент — Windows приложение
• Легкий клиент, работающий в HTML браузере
• Отдельное мобильное приложение для IPad или IPhone
• Почтовый клиент. Этот тип клиента позволяет обрабатывать задания прямо в стандартной программе электронной почты (например, в Gmail или почтовом клиенте мобильного телефона) без установки дополнительных компонент. Этот тип клиента, конечно, позволяет выполнить далеко не все операции, работы с заданием описанные выше. Но позволяет ознакомиться с файлом документа, внести в него изменения и сообщить о результатах обработки задания, например, согласовать или отклонить документ. Информация об этих действия будет доставлена в СЭД.
Помимо легкости такой обработки, преимуществом является возможность работы в Off-line.
![](https://habrastorage.org/files/471/b40/aec/471b40aecf5c4d9c9d2946e65ecb48dc.png)
Рис.5. Работа с заданием в легком клиенте
![](https://habrastorage.org/files/d5c/862/af6/d5c862af6cd24cb5955ee8b8672755ab.png)
Рис. 6. Так выглядит задание в почтовом клиенте
Описанное далеко не исчерпывает возможностей задания в системе Docsvision, есть и другие возможности для реализации специфических сценариев в приложениях, но, как нам кажется, и этого достаточно, чтобы представить, насколько изощренные сценарии обработки заданий приходится реализовывать при создании приложений СЭД.
Комментарии (2)
AndreevVS
13.07.2016 18:04Вы правы, обилие функций приводит к достаточно насыщенному интерфесу работы с заданиями, Но… На картинках 1 и 4 показан «полный интрерфейс» задания, в котором доступны все возможные функции, в реальных проектах, автоматизирующих конкртеный процесс большинство функций может быть скрыто, вплоть до желанной «одной кнопки». Для этого в системе и реализованы механизмы настроек, которые мы описывали в предыдущих статьях. Такая возможность есть… однкао, как показывает практика, в большинстве реальных проектов функциональность заданий все таки оказывается достаточно сложной… Но это не большая беда, так как в любых приложениях задания более менее одинаковые и отличаются только отдельными элементами интерфейса и в тексте задания может быть зафиксирована подсказка о возможных дейсвиях, так что обучатья нужно только один раз при внедрении первого контура или приложения на базе патформы…
teifo
Если можно взгляд просто человека со стороны. Я работаю с бумажками, но это так к слову. Дизайн мне, если честно, не очень нравится. Только на рисунке 5 более или менее. Настройки очень какие-то сложные. Вполне возможно, что любая такая система требует обучения, но мне всегда казалось, что выглядеть все должно иначе.