gifts2017

Создаем удобочитаемую карту маршрута бизнес-процесса

Опубликовал Илья Галицков (galich) в раздел Программирование - Практика программирования

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

Добавим в бизнес-процесс макет, типа Графическая карта.

В нем рисуем схематический процесс так, как он должен быть виден менеджеру.

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

 

мы получаем простенькую схемку рисунка 2,

 

с которой под силу справиться даже самому отъявленному продажнику Smile.

Ключевое условие - имена элементов задач и вложенных бизнес-процессов на двух картах должны совпадать.

Заголовки элементов можете оставить такими же как на основном процессе или изменить. После этого вставляем следующий блок: 

Функция СформироватьКартуМаршрута(БизнесПроцесс, ИмяМакетаКарты)
   
Макет=БизнесПроцессы[БизнесПроцесс.Метаданные().Имя].ПолучитьМакет(ИмяМакетаКарты);
   
СписокТекущихТочекМаршрута=ПолучитьСписокТекущихТочекМаршрута(БизнесПроцесс);
    Для Каждого
Точка Из СписокТекущихТочекМаршрута Цикл
        Попытка
           
Макет.ЭлементыГрафическойСхемы[Точка.Имя].ЦветРамки=WebЦвета.Черный;
           
Макет.ЭлементыГрафическойСхемы[Точка.Имя].Рамка=Новый Линия(ТипСоединительнойЛинии.Пунктир, 2);
        Исключение
        КонецПопытки;
    КонецЦикла;
    Возврат
Макет;
КонецФункции

Функция
ПолучитьСписокТекущихТочекМаршрута(БизнесПроцесс)
   
Запрос=Новый Запрос;
   
Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ
                 |  ЗадачиОбработки.ТочкаМаршрута
                 |ИЗ
                 |  Задача.ЗадачиОбработки КАК ЗадачиОбработки
                 |ГДЕ
                 |  (НЕ ЗадачиОбработки.Выполнена)
                 |  И ЗадачиОбработки.БизнесПроцесс = &БизнесПроцесс
                 |
                 |СГРУППИРОВАТЬ ПО
                 |  ЗадачиОбработки.ТочкаМаршрута"
;
   
Запрос.УстановитьПараметр("БизнесПроцесс", БизнесПроцесс);
    Возврат
Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТочкаМаршрута");
КонецФункции

Не забудьте в запросе поменять имя таблицы задач на используемую вами.

В форму, где хотим выводить маршрут вставляем объект типа ПолеГрафическойСхемы и для его обновления прописываем следующий код:

ЭлементыФормы.КартаМаршрута.УстановитьСхему(ПроцедурыЗаявокПользователя.СформироватьКартуМаршрута(Ссылка, "КартаДляМанагера"));

где Ссылка - ссылка на ваш бизнес-процесс, КартаДляМанагера - имя макета маршрута, куда мы поместили упрощенную карту. 

В итоге получаем на форме упрощенную карту маршрута с выделенными жирным пунктиром текущими невыполненными задачами. 

 

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алекс (Alef) 29.07.10 05:02
Отлично! Как раз стоял вопрос о том, что после последних изменений карта маршрута неимоверно раздулась. Теперь для каждого филиала нарисую отдельную карту.
2. bulpi bulpi (bulpi) 02.08.10 14:55
Просто и со вкусом. Жаль, что нея придумал :D
3. nikolaygorbunov (nikolaygorbunov) 14.12.12 11:41
В управляемом приложении "ЭлементыФормы.КартаМаршрута.УстановитьСхему()" не пашет. Как вывести карту маршрута в управляемом приложении?
4. nikolaygorbunov (nikolaygorbunov) 14.12.12 12:14
Получилось: КартаМаршрута=КартаБизнесПроцесса.
5. Илья Галицков (galich) 14.12.12 13:27
(3) nikolaygorbunov,
Попробуйте на стороне клиента следующий код:

Карта = ПроцедурыЗаявокПользователя.СформироватьКартуМаршрута(Ссылка, "КартаДляМанагера");
Карта.Показать();
6. tr75 ya (tr75) 22.05.14 15:22
Буду внедрять.Теперь уже никуда не денусь.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа