Workflow + сериализация
От: akarinsky Россия  
Дата: 12.06.09 22:08
Оценка:
Коллеги, если кто сталкивался — подскажите.

Имеем следующую проблему.
1. Создаю WFF workflow как .xoml,
создаю custom activity — наследник System.Workflow.ComponentModel.Activity,
добавляю custom activity в workflow.
2. Загружаю workflow через

var reader = XmlReader.Create("workflow.xoml");
... workflowRuntime.CreateWorkflow(reader);


Получаю ошибку: error 347: Не удалось отменить сериализацию объекта. Не удалось определить тип "App.CustomActivity".

Ну ладно, вроде сериализатору нужно подсказать, где искать CustomActivity.
Указываю в woekflow.xoml в строке ... xmlns:ns0="clr-namespace:App; Assembly=App" ...
и все начинает работать.

Но: как только я в workflow-дизайнере что-то изменяю, пропадает моя строчка Assembly=App и опять нихрена не работает.
Что нерадует...

Внимание, вопрос: что за фигня и как бороться?
На опушке за околицей мужики строили коровник.
Работали споро и весело. Получалось х**во.
Re: Workflow + сериализация
От: Lassor Россия  
Дата: 10.09.09 17:47
Оценка: 2 (1)
Здравствуйте, akarinsky, Вы писали:

A>Внимание, вопрос: что за фигня и как бороться?


См в сторону
System.Workflow.ComponentModel.Serialization.XmlnsDefinition
в AssemblyInfo.cs
Re[2]: Workflow + сериализация
От: Mihailo Германия  
Дата: 29.09.09 17:41
Оценка: 4 (1)
Здравствуйте, Lassor, Вы писали:

L>Здравствуйте, akarinsky, Вы писали:


A>>Внимание, вопрос: что за фигня и как бороться?


L>См в сторону

L>System.Workflow.ComponentModel.Serialization.XmlnsDefinition
L>в AssemblyInfo.cs

Правильно. пропишите вашей сборке соответствующие xmlns для использования в xoml — это раз
и используйте подгрузку ваших типов в рантайм — это два

TypeProvider typeProvider = new TypeProvider(workflowRuntime);
typeProvider.AddAssembly(typeof(FlowActivity).Assembly);
typeProvider.AddAssembly(typeof(WriteLine).Assembly);
typeProvider.AddAssembly(typeof(CommandActivity).Assembly);
workflowRuntime.AddService(typeProvider);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.