Примеры реального мира в WF и WPF

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

Ответ 1

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

Ответ 2

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

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

https://wpfwf.codeplex.com/