Параллельные задачи в бизнес-процессе

Добрый день!
Есть вопрос:
В существующем БП необходимо создать две параллельные задачи, при этом вторая задача должна быть создана после сохранения первой. Есть ли возможность перехода на следующее действие бизнес-процесса, если состояние предыдущей задачи "Не начато" или "В работе" ?

Нравится

15 комментариев

Добрый день, Игорь.
После первой задачи создайте вторую по потоку "Любой результат" .

Здравствуйте Дмитрий!
К сожалению ничего не вышло.
В моём случае вторая задача должна создаваться после нажатия на "ОК" (не выполнения) первой задачи. Таким образом состояние у первой задачи должно быть - "Не начата" или "В работе", а при данных состояниях результата задачи нет.
С другой стороны, если я выбираю состояние "выполнено" - тогда вторая задача создается, но уже после выполнения первой задачи. Но в таком случае это уже будут не параллельный задачи (как например задачи "встреча" и "подтверждение встречи"), а последовательные.
Вопрос ещё открыт.

Я имел ввиду вот так:

т.е. выбрать не конкретный результат, а "Любой результат". Тогда вторая задача будет создана сразу же после первой, в не зависимости от того, какое состояние у первой задачи (не начата, в работе).

Да, я тоже об этом. В данном случае обязательным условием создания Action2 является выполнение Action1 с любым результатом. Однако при создании и сохранении Action1 с состояниями "не начата", "в работе", Action2 не создается.
Т.е. Action2 будет создано только после выполнения Action1
В моём случае необходимо создать две параллельные задачи
и из Action1 передать параметры в Action2

Вопрос только - КАК?

Вам надо в скрипте карточки задачи (scr_TaskEdit) исправить:

/* MODULE WORKFLOW */
	if ((!TaskEdit.StatusChanged) || (!IsFinished) ||
		(IsEmptyGUID(WorkflowItemID))) {
		return;
	}

на

/* MODULE WORKFLOW */
	if ((!TaskEdit.StatusChanged) || 
		(IsEmptyGUID(WorkflowItemID))) {
		return;
	}

вот только тогда у вас не будет учитываться состояние задач вообще при работе с БП, что, мягко говоря, скажется на функционале. Так что так лучше не делать). Можно, конечно, встроить в скрипт выше какие-то проверки и логику - но это перебор.

Если вам надо просто создать (без контроля выполнения) первую задачу и передать параметры во вторую - используйте элемент "Открытие окна" для карточки задачи:

и оттуда сохраните в параметры то, что вам надо.

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

"Андросов Дмитрий" написал:

Если вам надо просто создать (без контроля выполнения) первую задачу и передать параметры во вторую - используйте элемент "Открытие окна" для карточки задачи:

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

я так понимаю, что вся сложность в том, чтобы передать параметры во вторую задачу?

тогда вижу два варианта:
- сделать как я предложил первый раз, но не удалять !IsFinished, а переделать на какую-то другую логику (добавить тип или еще что-то)
- нужные вам параметры можно выбирать в каком-то другом окне (см то же "Открытие окна" или "Настраиваемое окно редактирования") и потом уже передавать в оба окна задач. Или вообще не передавать параметры :biggrin:

Спасибо Дмитрий! Попробую.

Попробовал сделать, так:
Для состояния "Не начато" задачи Action1 создал результат выполнения "Не начато". Добавил условие, по которому поле ResultID доступно на редактирование. И по этому результату переход на Action 2. Однако, при выборе этого результата Action 2 не создается, текущим элементом остается Action1.

В общем, чтобы БП пошел дальше, нужно, чтобы задача считалась завершенной.
Чтобы задача считалась завершенной нужно, чтобы для выбранного состояния задачи в справочнике "Состояния задач" был установлен признак "Конечное".
Вам лучше создать еще одно состояние (не трогайте не начато)) для ваших целей

"Андросов Дмитрий" написал:

В общем, чтобы БП пошел дальше, нужно, чтобы задача считалась завершенной.

Чтобы задача считалась завершенной нужно, чтобы для выбранного состояния задачи в справочнике "Состояния задач" был установлен признак "Конечное".

Вам лучше создать еще одно состояние (не трогайте не начато)) для ваших целей


А разве в таком случае Action1 не будет считаться выполненной?

"Коновалов Игорь" написал:не будет считаться выполненной

смотря, что вы под этим подразумеваете)
например, введем новое состояние задачи "Принята по БП" с признаком "Конечное" и соответствующим результатом.
Тогда при выборе этого состояния у вас задача будет "Принята по БП" (но не "Выполнена"), но по БП дальше пойдет и состояние у нее будет считаться "конечным"

"Андросов Дмитрий" написал:

например, введем новое состояние задачи "Принята по БП" с признаком "Конечное" и соответствующим результатом.

Тогда при выборе этого состояния у вас задача будет "Принята по БП" (но не "Выполнена"), но по БП дальше пойдет и состояние у нее будет считаться "конечным"


Дмитрий огромное спасибо! Пошел по Вашему пути.
После указанного Вами варианта, для WorkflowItem, соответствующего задаче Action1, обновил поля StateID = ws_InProcess и ActualExecuteDate = null в таблице tbl_WorkflowItem.
Т.о. Элемент БП соответствующий первой задаче (Action1) опять становится активным и после его выполнения доступен переход к др. элементам БП.
УРА!!! Всем спасибо! Вопрос закрыт!

Показать все комментарии