Как инициировать действие, зависящее от двух или более параллельных действий для завершения?

Я новичок в рабочем процессе. Я пытаюсь создать консольное приложение .NET 4. Это можно разделить на несколько задач. Вот характер задач.

  1. Немногие задачи независимы друг от друга и могут выполняться параллельно.
  2. Немногие задачи порождают две или более новых задач.
  3. Немногие задачи зависят от вывода других задач, которые выполняются параллельно и могут быть запущены только тогда, когда они завершатся или предоставят необходимые входные данные. например введите здесь описание изображения

Здесь

  1. Задания 1, 2 и 3 независимы. Таким образом, можно работать параллельно.
  2. Задача 4, когда она выполнена, порождает 5 и 6
  3. Задание 7 можно начать только тогда, когда будут выполнены задания 4 и 2.

Хотя я могу написать свой собственный фреймворк, используя системные потоки и некоторые сообщения, описанные выше, мне было интересно, смогу ли я использовать Workflow Foundation 4.

Я просмотрел несколько примеров рабочего процесса, но не смог понять, как инициировать новое действие, когда его родительские действия, работающие параллельно, завершены.

Также, если вы знаете какой-либо другой способ решить вышеуказанную проблему, дайте мне знать.


person Ankush    schedule 20.06.2011    source источник


Ответы (1)


Обычно вы перемещаете эти зависимые задачи ниже активности Parralel, чтобы знать, что все зависимости удовлетворены.

Обновление: начните с последовательности. Добавьте Параллель с Задачей 1 и 4 с одной стороны и 3 с другой стороны. Ниже добавьте еще одну параллель с 3 ветвями, содержащими 5,6 и 7.

Однако это не совсем то же самое, если задача 2 занимает больше времени, чем задача 1 + 4.

[Анкуш] Итак, то, что вы предлагаете, похоже на это введите описание изображения здесь

person Maurice    schedule 21.06.2011
comment
Да, я понимаю это. Я добавил одно изображение. Поэтому, если я буду следовать этому подходу, мне придется создать эту структуру. S = последовательность. П = параллельно. P(S(P(S(1,4),2),7),3) Надеюсь, вы это понимаете. Но теперь возникает вопрос, где разместить задачи 5 и 6? - person Ankush; 21.06.2011
comment
В этом случае выполнение T5 и T6 блокируется в зависимости от того, сколько времени занимает T2. Можем ли мы этого избежать? - person Ankush; 21.06.2011
comment
Да, если вы создаете пользовательское действие, которое ожидает закладки, а другое — для его возобновления, и все это выполняется параллельно. Добавьте несколько из них, и вы можете создать любой микс, какой захотите. Однако рабочий процесс будет трудно понять. - person Maurice; 21.06.2011