Как использовать правила WF4 для запуска действий WF4

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

Как это

Входящая коллекция счетов-фактур = Счета-фактуры

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

Бросьте конверт на набор правил, которые, если условие соответствует, устанавливает следующее действие с набором параметров, подобных этому, ЕСЛИ CustomerID = XYZ, затем setNextActivity(SplitInvoiceActivity(Customer1,Customer2, Percentage))

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

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

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


person Stefan    schedule 27.05.2011    source источник


Ответы (1)


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

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

person Maurice    schedule 27.05.2011
comment
Привет, спасибо за ответ! Я не знал, что System.Workflow.Activities.Rules был чисто Wf3. Так что тогда реальный вопрос был бы. Как я могу использовать правила Wf3, чтобы отменить некоторые действия Wf4? Должен ли я использовать новый конечный автомат в Wf4, а затем создать сом CodeActivities, который затем проверяет, затем выставляет счет на соответствие правилам и который затем устанавливает следующее состояние? - person Stefan; 29.05.2011
comment
Использование конечного автомата или блок-схемы действительно зависит от остальной части рабочего процесса и от того, как он моделируется. В зависимости от сложности правил вы можете закодировать их в CodeActivity или составном действии. С CodeActivity проще работать со сложными правилами, но составная активность лучше показывает бизнес-аналитику, что происходит. - person Maurice; 29.05.2011
comment
Спасибо, я попытаюсь создать startActivity, который затем запускает codeActivity, откуда я читаю следующий счет-фактуру для обработки, а затем проверяю это на соответствие правилам. Я буду использовать внешний пример базы данных набора правил, содержащийся в WFSamples, для хранения правил. Правила будут либо выполнять какую-либо простую операцию непосредственно над объектом счета-фактуры, либо запускать какое-либо действие, которое будет выполнять эту операцию. - person Stefan; 30.05.2011