Имя: Пароль:
1C
 
БизнесПроцесс. Как завершить его из любой точки выполнения.
0 H A D G E H O G s
 
08.02.10
09:15
День добрый.
Ситуация - есть бизнес-процесс. Примитивный.
Точка старта->Точка действия1->Точка действия2->Точка завершения.

Хочу иметь возможность, находясь в ЛЮБОЙ ТОЧКЕ действия (Точке действия1, либо в Точке действия 2) ПО ЖЕЛАНИЮ завершить процесс.
Фактически хочу иметь возможность альтернативной НЕОБЯЗАТЕЛЬНОЙ ветви выполнения.
Альтернативную обязательную ветвь можно сделать через Точку разделения.

Как сделать необязательную (кроме как через изврат с Точками условий) ветвь выполнения - ума не приложу.
1 vde69
 
08.02.10
09:18
делаешь цикл, условие с ветвлением, каждая ветка - ведет к новой точке, в условии ветвления проверяй аварийный выход
2 H A D G E H O G s
 
08.02.10
09:20
(1) Тоесть, на каждую точку действия подвешивать условие с ветвлением?
3 vde69
 
08.02.10
09:21
(2) нет, счас скрин сделаю
4 H A D G E H O G s
 
08.02.10
09:22
(3) Спасибо
5 strange2007
 
08.02.10
09:25
Тут небольшая непонятка: у Вас выходы плановые или не плановые? Если плановые, тогда логично описывать весь маршрут с выходами, в противном случае схема БП не будет отражать реальный БП. А вот если экстренный выход, тогда отражать в схеме не надо и выход инициировать программно.
Как правило процессы имеют экстренные выходы из любой точки, при этом на схеме не отображается. Пример тому, пользователь отказался доделывать его или БП заведен ошибочно
6 vde69
 
08.02.10
09:26
7 H A D G E H O G s
 
08.02.10
09:34
(5) Выходы внеплановые.
8 strange2007
 
08.02.10
09:36
(7) Тогда не надо их отражать в карте. Выход осуществлять программно. Почему? Да потому что в любом БП есть такие экстренные завершения, но их ни когда не показывают явно. В противном случае получится схема из одних выходов (сам пробовал, чушь полная получается и директора смеются потом)
9 H A D G E H O G s
 
08.02.10
09:37
(6) Офигеть.
Я бы так не придумал.
А последовательность действий определяется программно?
Типа - если выполнено действие2 - переходим к действию 3?
10 H A D G E H O G s
 
08.02.10
09:37
(8) см (6)
11 vde69
 
08.02.10
09:39
(9) да, обычно такая схема нормально работает если для всего БП используем "статусы", тогда условие будет простое.

Кроме того такая схема позволяет вернутся на шаг назад (что штатные БП не умеют)
12 vde69
 
08.02.10
09:42
(11) вот реальный процесс http://slil.ru/28611790 где из любой точки есть аварийный выход
13 H A D G E H O G s
 
08.02.10
09:44
(11) Знал бы раньше.
Эхх, переделывать придется похоже порядочно.
14 MRAK
 
08.02.10
09:44
(12) круто!
15 strange2007
 
08.02.10
09:50
мдаааа, процессик получился ни фига не процесс. Автор, не повторяйте ошибок чужих, пересмотрите взгляды на процессы. Гляньте на карты процессов из стандартных конф, например в УПП
16 1CPapaKarlo
 
08.02.10
09:50
В любой точке бизнес-процесса если необходимо его завершить в модуле БП:
1.Запросом выбрать все задачи по данному БП и удалить их .
2.Завершен = Истина;
3.Записать();
17 strange2007
 
08.02.10
09:51
(16) зачем удалять задачи? Установить признак завершения, а то вдруг захочется потом поглядеть
18 1CPapaKarlo
 
08.02.10
09:53
Если задачи не удалить то на них будут ссылки и они будут появляться у пользователей, а выполнить они их не смогут, т.к. БП уже не будет - будет генерироваться ошибка...
19 strange2007
 
08.02.10
09:54
Их пометить как завершенными и они не будут появляться у пользователей
20 1CPapaKarlo
 
08.02.10
09:55
ну может быть и так...можно поэкспериментировать... но задачи по любому надо изменять...
21 vde69
 
08.02.10
10:02
(15) установкой признака "завершен" у БП фактически не завершенного - это кривость, так как у него остаются не закрытые текущие задачи в МАРШРУТЕ (не путать с обьектами "задачи"), эта кривость вылезает боком практически при любых копаниях в потрохах БП.

Цикл - это нормальный нелинейный БП, который понятен всем нормальным постановщикам.

Линейный БП - вообще обычно особого смысла не имеет, так как он вполне реализуем например подчиненными документами
22 MRAK
 
08.02.10
10:06
(21) + 100
23 strange2007
 
08.02.10
10:06
(21) В ветвистом БП иногда много точек не пройденных! А задачи то все как раз и завершенные будут. Я говорил задачам ставить признак "Выполнено". А БП не надо завершать.
24 strange2007
 
08.02.10
10:07
(21) Сейчас разбираю такой "линейный" БП на галочках. Это сложно и ни кому не нужно. В УПП закрытие месяца тоже не на галочках сделано
25 vde69
 
08.02.10
10:12
(23) я не про непройденый, а про активные точки маршрута, которые будут в массиве ФормируемыеЗадачи при создании задачи.

//
//Процедура РаботаПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
//


собствено я спорить не буду, я знаю, что закрывать БП любым способом кроме исполнения точки "Завершения" - это косяк, так-же как и ставить признак задачи без вызова метода - это тоже косяк.
26 H A D G E H O G s
 
08.02.10
10:15
Идея в (6) мне подходит идеяльно. Посмотрим, что будет на практике.
vde69 - тебе респект и уважуха.
27 1CPapaKarlo
 
08.02.10
10:31
(21)К сожалению ничего не слышал о мифических внутренних задачах...
Посмотрите внимательнее код - формируемые задачи это никакие не мифические "внутренние задачи"! Вы с успехом можете ими управлять и программно удалять и добавлять задачи(именно те самые объект задачи как Вы выражаетесь):

Процедура РПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;

Если не Элемент.С тогда
           
           НоваяЗадача    = Задачи.Задача1.СоздатьЗадачу();
           НоваяЗадача.БизнесПроцесс = Ссылка;
           НоваяЗадача.ТочкаМаршрута = БизнесПроцессы.СС.ТочкиМаршрута.Р;
           НоваяЗадача.Дата = ТекущаяДата();
           НоваяЗадача.Наименование = БизнесПроцессы.СС.ТочкиМаршрута.Р.НаименованиеЗадачи;
           
           НоваяЗадача.Пользователь = Элемент.Р;
           
           ФормируемыеЗадачи.Добавить(НоваяЗадача);
           
           НоваяЗадача.Записать();
       КонецЕсли;
28 1CPapaKarlo
 
08.02.10
10:35
(21) и можно посмотреть что происходит в точке завершения БП = он становиться завершенным. Ну в общем то хозяин барин, но у меня это применяется давно и никаких косяков не замечено...
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.