Динамическое создание рабочего процесса WWF с использованием XAML + X: имя не работает

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

public class BaseClass : SequenceActivity
{ }

public class Activity1 : BaseClass
{ }

public class Activity2 : BaseClass
{ }

Затем я пишу xoml рабочего процесса, как показано ниже

<GS1:Activity1 x:Name="Activity2"></GS1:Activity1>
<GS1:Activity2 x:Name="Activity3"></GS1:Activity2>

все работает нормально, пока я не захочу начать рабочий процесс

workflowRuntime.CreateWorkflow(Type.GetType("WorkflowType Full Name"), null, Guid.NewGuid());

Я получаю ошибку ниже

error 1538: Activity 'BaseClass' validation failed: There is already an activity named 'BaseClass'. Activity names must be unique.

Обратите внимание, что вышеупомянутое работало правильно на WF3.5, эта ошибка появилась, когда я обновился до WF4.0.

Любая помощь очень ценится.


person Ghyath Serhal    schedule 05.05.2011    source источник


Ответы (1)


Похоже, вы здесь комбинируете классы WF3 и WF4. Это немного сбивает с толку, потому что они похожи и оба имеют класс Activity, но между ними нет никакой связи. WorkflowRuntime относится к типу WF3. С WF4 вы можете использовать WorkflowApplication или WorkflowInvoker для запуска рабочего процесса.

person Maurice    schedule 05.05.2011
comment
Да, правильно, я все еще использую WorkflowRuntime. Я проверю WorkflowApplication и WorkflowInvoker. Спасибо - person Ghyath Serhal; 05.05.2011
comment
Могу ли я использовать WorkflowInvoker для запуска динамического рабочего процесса, я имею в виду передать тип WorkflowInvoker - person Ghyath Serhal; 05.05.2011
comment
Вы передаете экземпляр WorkflowInvoker. Вы можете быть настолько динамичным, насколько хотите, потому что вы можете использовать ActivityXamlServices.Load () для загрузки фрагмента XAML во время выполнения, если хотите. - person Maurice; 05.05.2011
comment
Разве он не должен иметь обратную совместимость с .Net3.5 при работе в .Net4.0? - person Ghyath Serhal; 05.05.2011
comment
Полный стек WF3 по-прежнему присутствует в .NET 4, так что об обратной совместимости позаботились. Поскольку WF4 и WF3 несовместимы, WF4 - это полная переработка с нуля. - person Maurice; 05.05.2011