Реализация чистых рабочих процессов xaml с некоторыми требованиями - PullRequest
1 голос
/ 26 января 2009

В настоящее время мне поручено разработать способ использования WF в нашем приложении, и у меня есть установленные требования, которым я должен следовать.

  • Мне нужно иметь возможность определять рабочий процесс исключительно по тексту, чтобы я мог сохранить его и извлечь для выполнения.
  • Во время выполнения рабочего процесса объект DataObject необходимо передавать между действиями, чтобы они могли выполнять над ним операции.
  • Действия определяются внешними классами, действия должны получать доступ к экземпляру класса, который их определяет, чтобы они могли вызывать его методы.

Я изучал WF и придумал несколько решений, но я не уверен, что они лучшие.

Одна из моих самых больших проблем состоит в том, чтобы сделать доступными для действий группу классов, которые их определяют. Есть ли способ предоставить фабрике действий рабочую среду или что-то в этом роде? Другая проблема связана с использованием определений рабочих процессов Pure XAML. Мне нужно иметь возможность передать DataObject первому активу, чтобы его можно было использовать в рабочем процессе.

Мне трудно объяснить проблему, надеюсь, она достаточно ясна.

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

Ответы [ 4 ]

1 голос
/ 26 января 2009

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

http://msdn.microsoft.com/en-us/magazine/cc507645.aspx

http://www.masteringbiztalk.com/blogs/jon/CommentView,guid,ffd20921-fb8b-42a2-98d1-8c8e1582a3fa.aspx

1 голос
/ 26 января 2009

В отношении предоставления внешних действий среде выполнения, которые используются в контексте рабочего процесса XOML, взгляните на добавление службы TypeProvider в вашу среду выполнения:

TypeProvider provider = new TypeProvider(runtime);
provider.AddAssembly(assembly);
runtime.AddService(provider);

Также обратите внимание на определение корневого действия, имеющего свойство DependencyProperty вашего типа DataObject. Сделайте корневую активность ваших рабочих процессов на основе XOML этого базового типа. После этого вы сможете без проблем передавать свой объект в рабочие процессы на основе XOML в качестве параметра.

0 голосов
/ 26 января 2009

Я думаю, WorkflowLoaderService - это класс, который я искал.

Это должно сделать это. Спасибо.

0 голосов
/ 26 января 2009

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

Я решил проблему с DataObject почти так же, как вы описали.

...