v8: Связь задач и бизнес-процессовЧасто задачи расценивают как вспомогательный объект бизнес-процессов. Однако это вполне самостоятельный объект, наделенный многими свойствами. При правильном подходе задачи могут стать мощным механизмом планирования и управления временем. Данная статья призвана показать пример связи задач и бизнес-процессов, для назначения конкретным исполнителям бизнес-процессов автоматически формируемых задач. | | Автор статьи: GROOVY | Редакторы: Волшебник, Добрый Последняя редакция №13 от 04.06.06 | История URL: http://kb.mista.ru/article.php?id=244 | |
Ключевые слова: задачи, адресация, бизнес-процесс, точка действия, групповая адресация
Книга знаний: v8: Бизнес-процессы и задачи
Исходная ситуация.
Как говорилось в описанной ранее статье (Книга знаний: v8: Адресация задач.) для объекта "Задача" очень важны свойства адресации. В этой статье я постараюсь на простом примере показать как правила адресации могут применяться в контексте задач создаваемых точками маршрута бизнес процессов.
Исходная структура метаданных такая:
Справочники: Исполнители, Отделы. Оба без дополнительных настроек, без иерархии и без предопределенных элементов.
Перечисление Роли с двумя значениями: Руководитель и РядовойСотрудник.
Параметр сеанса "ТекущийИсполнитель", тип: СправочникСсылка.Исполнители.
Регистр сведений "ПравилаАдресации" с тремя измерениями: Исполнитель (ведущее, запрет незаполненных значений, тип: СправочникСсылка.Исполнители), Отдел (не ведущее, запрет незаполненных значений не установлен, тип значения: СправочникСсылка.Отделы) и Роль (не ведущее, запрет незаполненных значений не установлен, тип значения: ПеречислениеСсылка.Роли).
Задача "ЗадачиБП" с тремя реквизитами адресации: Исполнитель (основной реквизит адресации, тип: СправочникСсылка.Исполнители), Отдел (тип значения: СправочникСсылка.Отделы) и Роль (тип значения: ПеречислениеСсылка.Роли). В свойстве "Адресация" указан регистр сведений "ПравилаАдресации", "Основной реквизит адресации" - "Исполнитель", "ТекущийИсполнитель" – ссылка не параметр сеанса "ТекущийИсполнитель".
Настройка механизма задач классическая. Умышленно не создано ни одного дополнительного реквизита задачи, так как нас интересует именно работа бизнес-процессов в связке с задачами.
Несколько слов о свойствах бизнес-процессов
Описанием алгоритма бизнес-процесса служит карта маршрута. Точки маршрута карты маршрута бизнес-процесса делятся на две основные категории:
1. Точки маршрута, которые порождают задачи. При прохождении бизнес-процесса через эти точки создаются задачи, и до их выполнения бизнес процесс останавливается.
2. Точки маршрута, которые не создают задачи. При прохождении бизнес-процесса через такие точки обычно выполняются, какие либо проверки, обработки.
В свойствах точек маршрута, которые создают задачи можно на этапе конфигурирования жестко задач параметры адресации. Но, как правило, это не конкретный исполнитель, а лишь косвенные параметры адресации.
Обычно точки маршрута, которые создают задачи, обладают возможностью описания событий интерактивной работы пользователя. Точки маршрута не создающие задачи такими событиями не обладают (!).
Одним из свойств бизнес-процесса (БП) является связь с объектом "Задача" в котором создаются задачи точек маршрута этого БП.
С одним объектом "Задача" может быть связано несколько БП.
А что на практике
Создадим простой БП . Ну например БП внутреннего аудита компании.
Карта маршрута бизнес процесса будет включать в себя три точки действия. Это основные точки карты маршрута бизнес процесса. Эти точки создают задачи и имеют интерактивные события.
Кроме точек действия любой бизнес процесс должен включать в себя хотя бы по одной точке старта и точки завершения. Эти точки не создают задачи, а используются лишь для описания не интерактивных событий "ПередСтартом" и "ПриЗавершении".
Но нас сейчас интересуют в первую очередь точки действия и те задачи, которые они создают.
Рассмотрим свойства каждой из точек действия подробно.
1. Начать Аудит. Кроме имени для точки действия можно настроить адресацию (Адресация – это группа свойств точки действия). К сожалению, указать на этапе разработки бизнес процесса конкретного исполнителя не получится, так как это элемент справочника – раз, да и для каждого бизнес процесса видимо может быть разный ответственный за проведение аудита – два. Назначать косвенные свойства адресации в нашем конкретном случае нет смысла так как инициатор этого бизнес-процесса сам назначит ответственного (это будет дополнительным реквизитом бизнес-процесса). Как же назначить исполнителя для задачи формируемой точкой действия? Довольно просто. Необходимо перехватить событие создания задач этой точкой действия. Сделать это можно в двух обработчиках событий: "ПередСозданиемЗадач" – этот обработчик событий вызывается когда задачи еще не созданы, можно создать новый задачи и полностью заполнить их свойства; "ПриСозданииЗадач" – здесь задачи уже созданы их можно отредактировать.
В нашем случае лучше воспользоваться обработчиком события "ПриСозданииЗадач", так как необходимо лишь указать исполнителя, а все остальные свойства задачи менять ни к чему.
Процедура НачатьАудитПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
Для каждого Задача Из ФормируемыеЗадачи Цикл
Задача.Исполнитель = ОтветственныйЗаПроведение; //ОтветственныйЗаПроведение – реквизит БП.
КонецЦикла;
КонецПроцедуры
Вопрос: Почему цикл? Разве задача не одна формируется? А вот этого никто не знает. Точка действия может формировать сколь угодно задач.
Кстати, если в событии "ПриСозданииЗадач" установить свойство "Выполнена" в Истина, то задача будет выполнена, но ход бизнес-процесса дальше не сдвинется.
В принципе все что связано с первой точкой действия мы сделали. Теперь задача формируемая этой точкой будет наделена конкретным исполнителем, указанным в реквизите бизнес-процесса.
2. Подготовить отчетную документацию. В свойствах адресации этой точки действия установим значение "Роль" – Руководитель. И флаг "Групповая".
Что нам это даст? По правилам адресации заданным в регистре сведений будут созданы задачи для каждого исполнителя являющимся руководителем. Так как задач будет создано (возможно) несколько, то точка маршрута будет считаться пройденной только в том случае, если все задачи будут выполнены.
В принципе флаг "Групповая" отвечает за создание множества задач по подходящим правилам адресации. В том случае если флаг установлен не будет, то задача будет создана одна, но она появится у всех исполнителей в их списке задач (об этом будет чуть ниже).
В любом случае стандартное поведение системы при создании задач можно отключить и описать свои правила создании и назначения исполнителя.
Но давайте посмотрим, как ведет себя стандартный механизм.
Для проверки понадобится инициализировать параметр сеанса. Конечно, хорошо бы это делать при начале работы системы, но нам для удобства проверки как себя ведут задачи, инициализацию можно сделать в форме списка справочника "Исполнители". Я создал форму списка (не меняя настройки, которые по умолчанию предлагает конструктор форм) и в панели действий формы описал новую кнопку "УстановитьПС" (ПС – параметр сеанса). Вот процедура, которая связана с действием этой кнопки:
Процедура УстановитьПС(Кнопка)
Исполнитель = ЭлементыФормы.СправочникСписок.ТекущиеДанные.Ссылка;
ПараметрыСеанса.ТекущийИсполнитель = Исполнитель;
Предупреждение("В параметр сеанса установлен исполнитель " + Исполнитель,60);
КонецПроцедуры
В справочнике "Исполнители" уже в режиме 1С:Предприятие введу нескольких пользователей.
И регистр сведений "Правила адресации" заполним следующим образом:
Что-то многовато у меня руководителей получилось :)
Самое время создать и запустить бизнес-процесс. В качестве ответственного укажем Петрова.
Надеюсь, что параметр сеанса до того как стартануть БП установили, иначе появится сообщение о том, что он не инициализирован. Все потому что при старте БП создается первая задача, и система проверяет, случайно, не текущий ли исполнитель должен ее выполнить? Для этого системой анализируется значение параметра сеанса, и в том случае если исполнитель совпадает, и у задачи описано событие интерактивной активизации (об этом чуть позже) оно выполняется.
Итак, БП стартовал, первая задача должна была создаться с исполнителем указанным в БП.
Выполним задачу. По правилам адресации вторая точка действия должна создать три задачи:
То есть независимо от того, в каком отделе числится руководитель, для него создается задача. Так действуют правила адресации на задачи с флагом "Групповая".
Могу предположить, что у некоторых вместо трех задач создалась одна без исполнителя, только с указанной ролью "Руководитель". Это связано с тем, что в свойствах задачи "ЗадачиБП" в реквизитах адресации не проставлено соответствие измерению регистра сведений "ПравилаАдресации".
Как ни парадоксально, но в конце этой статьи мы разберем самое классическое создание задачи с назначением исполнителя по косвенным свойствам адресации.
3. Обработать документы. Ничего необычного в этой точке действия нет. В свойствах адресации мы не можем указать признаки адресации (из-за того, что данные в конфигураторе недоступны). В реквизитах бизнес-процесса создадим два новых реквизита значения, в которых и послужат значениями параметров адресации при формировании задачи.
ОтделАудита – тип: СправочникСсылка.Отделы.
РольАудитора – тип: ПеречислениеСсылка.Роли.
Формы БП в нашей конфигурации нет, по этому новые реквизиты у пользователя появятся автоматически.
Опишем, по аналогии с первой точкой действия заполнение реквизитов адресации в событии "ПриСозданииЗадач":
Процедура ОбработатьДокументыПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
Для каждого Задача Из ФормируемыеЗадачи Цикл
Задача.Отдел = ОтделАудита;
Задача.Роль = РольАудитора;
КонецЦикла;
КонецПроцедуры
Для наглядного назначения задач сформируем форму списка. В форме списка предусмотрим переключение в режим просмотра задач "По исполнителю". Для этих целей в панели действия формы создадим новую кнопку "ПоИсполнителю" с установленным свойством "Пометка".
В модуле формы опишем две процедуры.
Процедура ПоИсполнителю(Кнопка)
ЭлементыФормы.ДействияФормы.Кнопки.ПоИсполнителю.Пометка =
НЕ ЭлементыФормы.ДействияФормы.Кнопки.ПоИсполнителю.Пометка;
Если ЭлементыФормы.ДействияФормы.Кнопки.ПоИсполнителю.Пометка Тогда
ЭлементыФормы.ЗадачаСписок.ОтображениеЗадач = РежимСпискаЗадач.ПоИсполнителю;
Иначе
ЭлементыФормы.ЗадачаСписок.ОтображениеЗадач = РежимСпискаЗадач.ВсеЗадачи;
КонецЕсли;
КонецПроцедуры
Процедура ПриОткрытии()
ЭлементыФормы.ДействияФормы.Кнопки.ПоИсполнителю.Пометка = Ложь;
КонецПроцедуры
То есть при открытии форма открывается со всеми задачами, а после нажатия на новую кнопку в форме остаются только задачи по свойствам адресации подходящие текущему исполнителю.
Не забудьте, при проверке, устанавливать в справочнике "Сотрудники" текущего исполнителя. Ну и естественно, что при повторном нажатии форма возвращается в первоначальное состояние.
Форма задач в режиме отображения "По исполнителю" анализируя параметр сеанса, в котором указан текущий исполнитель, и правила адресации в регистре сведений показывает те (активные!) задачи которые по правилам адресации назначены текущему исполнителю.
Теперь можно проверять. Для проверки я введу еще одного исполнителя "Каменский", и в регистре сведений задам новое правило адресации: Каменский, отдел ремонта, рядовой сотрудник.
В стартованном БП укажем значения реквизитов "ОтделАудита" – Отдел ремонта, и "РольАудитора" – рядовой сотрудник.
Выполним три задачи, которые были созданы второй точкой действия.
По третьей точке маршрута была создана одна задача, без указания конкретного исполнителя, но с двумя заполненными реквизитами адресации.
По тем правилам адресации которые заданы в регистре сведений созданная задача должна отображаться в режиме просмотра "ПоИсполнителю" у двух сотрудников: Каменский и Сидоров. У Иванова, не смотря на то, что в регистре сведений он числится прикрепленным к отделу "Отдел ремонта", задача отображаться не будет, так как роль не соответствует правилам адресации.
Указать конкретного исполнителя можно, например, при открытии задачи (кто первый открыл тот и исполняет) или для целей хранения истории при выполнении.
Причем событие "ПриВыполнении" ("ПередВыполнением") отрабатывает не только у задачи, но и у точки маршрута, которая ее породила!
В нашем примере я именно так и поступлю. Опишу событие "ПриВыполнении" точки действия "ОбработатьДокументы". Событие возникает после одноименного события самой задачи.
Процедура ОбработатьДокументыПриВыполнении(ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)
ЗадачаОбъект = Задача.ПолучитьОбъект();
ЗадачаОбъект.Исполнитель = ПараметрыСеанса.ТекущийИсполнитель;
ЗадачаОбъект.Записать();
КонецПроцедуры
Исходя из того, что было описано выше, можно прийти к следующему выводу.
Для точек действия можно назначить параметры адресации при описании маршрута БП, но только в том случае если значения адресации доступны в режиме "Конфигуратор" (предопределенные реквизиты справочников, значения перечислений и т.п.).
Если при создании задачи по точке действия исполнитель или другие параметры адресации известны можно задать их в событии "ПриСозданииЗадач" или "ПередСозданиемЗадач", ориентируясь на реквизиты БП или другие данные.
Точки маршрута с признаком "Групповая" создают столько задач, сколько исполнителей подходит по правилам адресации, причем правила адресации в этом случае трактуются по указанным значениям адресации в точке маршрута, не указанные значения не учитываются вообще.
Точки маршрута без признака "Групповая" создают одну задачу (если в соответствующем событии точки маршрута не прописано обратное), адресация таких задач стандартная.
Вот и все. Надеюсь эта статья кому-нибудь поможет разобраться с связью задач и бизнес-процессов. Пример специально был взят примитивный, однако он раскрывает все возможные стандартные варианты создания задач точками бизнес-процессов.
Павел Чистов aka GROOVY
Институт технологий сопровождения.
1С:Центр сертифицированного обучения, Санкт-Петербург.
www.its-spb.ru
its(at)its-spb.ru
1С, 1С:Предприятие, 1С:Предприятие 8.0 являются зарегистрированными товарными знаками ЗАО "1С", Москва.
Все представленные снимки экрана, фрагменты пользовательского интерфейса и интерфейса разработчика представлены в целях ознакомления и никаким образом не нацелены на получение какой либо коммерческой прибыли. Никакая часть этих снимков не может быть воспроизведена без согласия правообладателя (ЗАО "1С"). |