Реальные примеры взаимодействия WF и WPF

Я ищу некоторые хорошие реальные примеры взаимодействия между Windows Presentation Foundation и Workflow Foundation. Большинство учебников WF, которые я вижу, демонстрируют использование в консольных приложениях. Мне больше интересно о приложениях, которые используют богатый интерфейс WPF и WF. В частности, если они разрешают пользовательские рабочие процессы (позволяют пользователям создавать и запускать свои собственные рабочие процессы на лету).

5 ответов


Я не уверен, что именно вы ищете, но вот некоторые ссылки на информацию о реальных приложениях, использующих Workflow in desktop (WPF), так или иначе:


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

  1. сначала вам нужно написать хост. Это чрезвычайно загруженное предложение, потому что для двух хостов WF, чтобы поговорить друг с другом, вам также нужно будет знать WCF и все мягкие концепции потоковой передачи.
  2. тогда ваш WF должен будет общаться с другими WFs через хосты. Это имеет смысл, потому что WF не работает в памяти в течение 3 месяцев, когда он ждет другого WF для отправки события. WF сидит в базе данных, и связь происходит через хосты.
  3. хорошо, даже для более простых сценариев, для локальной связи в процессе, у вас есть callexternalmethod активность и HandleExternalEvent деятельности. Даже в этом случае вам нужно поговорить через хост, потому что WF, возможно, был пассивирован к базе данных. Поэтому для того, чтобы сделать это, вы должны помнить, чтобы сделать 3 вещи, украсить свой интерфейс с ExternalDataExchangeAttribute, eventargs должен быть производным от ExternalDataEventArgs, а args событий сериализуется.
  4. если вы испортите любой из элементов в #3, вы получите очень неинтуитивное "InvalidOperationException". Конечно, в сообщении говорится: "служба не реализует интерфейс с атрибутом ExternalDataExchange", но только когда вы посмотрите на внутреннее исключение, вы действительно знаете, что произошло, т. е. вы забыли сделать его сериализуемым. дох! Но я отметил это как упорядочиваемый. На самом деле, все должно быть сериализуемым, даже отправитель.
  5. затем вам нужно подключить действия WF через правильные имена интерфейсов и имена методов, которые вы используете для связи.
  6. наконец, даже для связи WF в процессе, вы должны помнить, чтобы добавить свою службу в ExternalDataExchangeService, а не во время выполнения WF. В противном случае это будет выглядеть так, как будто никто не подписывается на мероприятие. Не говоря уже о том, что это один из тех Жуков, не выдаст ошибку. т. е. трудно отследить!

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

*написание приложений windows (для хоста), *Резьба, *ФОС, * Концепции ООП, *Все концепции сериализации, * Множество подключений и неинтуитивных деталей самого WF, * Отладка Ninja умения.

Источник: http: / / blah.уинсмартс.com / 2008-2-i've_been_here_before.aspx


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


Это своего рода самореклама, так как ссылка моя,но посмотри.


вот пример проекта, который я сделал, который объединяет WF и WPF для имитации банкомата. Код работает над некоторыми проблемами, такими как обработка закладок, сохранение рабочего процесса и управление пользовательским интерфейсом из рабочего процесса.

https://wpfwf.codeplex.com/