2010-01-24 3 views
1

У меня возникли проблемы с поиском каких-либо путное документацию по новой версии WorkflowServiceHost, который поставляется с .NET 4/VS 2010 Beta 2.WorkflowServiceHost в Windows Workflow - .NET 4 версии

Новая версия WorkflowServiceHost прямо сейчас живет в System.ServiceModel.Activities и имеет разных конструкторов, чем старая версия .NET 3.x, которая была в System.ServiceModel.

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

public WorkflowServiceHost(Type workflowType, params Uri[] baseAddress) 

Моя проблема заключается в том, что у меня нет информация, которую любой другой разработчик требует во время компиляции (я планировал вывести тип моего рабочего процесса через Type.GetType (строка), поскольку у меня будет доступ к действительным действиям Workflow во время выполнения).

Есть ли другой способ, которым я могу разместить рабочий процесс, который был загружен во время выполнения?

Спасибо за вашу помощь заранее :)

ответ

1

В WF4 вы передаете фактическое определение рабочего процесса как деятельность дерева вместо типа, как вы делали раньше. Если у вас есть тип, создающий объект, должен быть простым, используя что-то вроде Activator.CreateInstance(). Использование дерева действий вместо типа имеет некоторые преимущества, поскольку вы можете создавать объекты «на лету», используя ActivityXamlServices.Load() для чтения файла XAML.

Часть WCF WorkflowServiceHost может быть выполнена полностью в файле конфигурации, если хотите. Не нужно передавать baseAddress внутри с конструктором.

Альтернативой WorkflowServiceHost является использование WorkflowApplication. Это по-прежнему требует, чтобы вы добавили дерево действий в конструктор.

+0

Спасибо за ваш отзыв. Морис. Мне кажется, что мне не повезло с маршрутом Activator.CreateInstance(). Я получаю исключения во время выполнения при попытке передать его в WorkflowServiceHost (объект serviceObject, params Uri [] baseAddresses) вроде этого «WorkflowServiceHost» требует, чтобы предоставленный serviceObject был Activity или WorkflowService. Имя параметра: serviceObject '. Я не могу спуститься по пути ActivityXamlServices.Load(), так как моя служба рабочего процесса предоставляется как двоичный файл dll, а не xaml/xmalx. Любые другие идеи? Еще раз большое спасибо – Lygpt

+0

Тип указывает на право деятельности? Если это так, перейдите в Activity, прежде чем передать его в конструктор WorkflowServiceHost. Теперь вы используете неправильную перегрузку, поскольку Activator.CreateInstance() возвращает ее как тип Object. – Maurice

+0

Это отлично поработало с Maurice - мне пришлось заняться какой-то игрой, но (Activity) Activator.CreateInstance (Type.GetType («Namespace.ClassName, Assembly»)). Еще раз спасибо – Lygpt