Как использовать правила WF4 для запуска действий WF4 - PullRequest
0 голосов
/ 27 мая 2011

Я пытаюсь создать рабочий процесс обработки счетов, и я баловался с System.Activities.Rules частью WF4, и мне это нравится. Однако я хотел бы взять отправную точку с правилами вместо того, чтобы пнуть Активность сначала.

Как это

поступление коллекции счетов-фактур = счета-фактуры

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

Бросить конверт в набор Правил, чтобы, если условие соответствовало, устанавливало следующее действие с набором параметров, подобных этому, если IF CustomerID = XYZ, тогда setNextActivity (SplitInvoiceActivity (Customer1, Customer2, Percentage))

затем Activity разбивает счет-фактуру на 2 счета-фактуры и помещает их обратно в цикл, а когда правила не применяются, мы устанавливаем состояние конверта в нечто вроде «Обработано выполнено» и оно завершается.

Как бы я смоделировал это с действиями WF4? К какому виду деятельности я должен быть привязан: nativeActivity, CodeActivity и т. Д.

Спасибо заранее!

1 Ответ

0 голосов
/ 27 мая 2011

Откуда исходит пространство имен System.Activities.Rules? В WF4 такого нет. В WF3 есть пространство имен System.Workflow.Activities.Rules, но оно совершенно не связано с WF4. Есть несколько примеров того, как взаимодействовать между двумя технологиями и использовать механизм правил WF3 в рабочем потоке WF4, но я не могу действительно рекомендовать такой подход.

По отношению к вам активность базовый класс действий. Как правило, производные от CodeActivity для простых видов деятельности, которые выполняют определенную работу и выполняются. Только когда вам нужны более мощные действия, которые состоят из нескольких дочерних действий или требуют длительного выполнения и создания закладок, вам нужно использовать NativeActivity. Тем не менее, вы можете просто использовать NativeActivity все время, потому что в CodeActivity нет ничего, что вы не можете сделать в NativeActivity, и нет реальной разницы в производительности.

...