Реальные примеры взаимодействия WF и WPF - PullRequest
12 голосов
/ 15 февраля 2011

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

Ответы [ 5 ]

4 голосов
/ 19 февраля 2011

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

2 голосов
/ 16 февраля 2011

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

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

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

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

Источник: http://blah.winsmarts.com/2008-2-I've_been_here_before.aspx

0 голосов
/ 02 ноября 2014

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

https://wpfwf.codeplex.com/

0 голосов
/ 14 марта 2011

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

0 голосов
/ 17 февраля 2011

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

...