2008-09-22 2 views
4

У меня есть простой бизнес рабочий процесс со следующими условиямисериализации версионируются рабочие процессы, использующие Microsoft WF

  1. Пользователи должны изменить сам рабочий процесс с использованием Desinger
  2. Рабочий процесс представляет собой длинный рабочий rinning, так что это будет сериализованный

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

ответ

3

Управление версиями различных сборок рабочих процессов не является тривиальной задачей и имеет множество осложнений. Here вы можете найти серию сообщений, которые касаются именно этого.

2

Вы можете переопределить конструктор WF в своем приложении, чтобы конечные пользователи меняли рабочие процессы. Когда вы принимаете дизайнера, вы в значительной степени контролируете, что они могут делать. Например, вы можете запретить им удалять или отключать действия и разрешать им добавлять определенные новые действия в предопределенные области рабочего процесса. Лучший подход - сохранить эти рабочие процессы как файлы XOML и запустить их как таковые. Это означает, что вы не можете добавить код в рабочий процесс, но вы можете определить свой базовый класс рабочего процесса, полученный из SequentialWorkflowActivity (или эквивалент состояния), и использовать его в качестве базового класса рабочего процесса. Это позволяет добавлять код и свойства. Например, вы все равно можете добавить CodeActivity, но вам нужно связать код с базовым классом.

Сериализация рабочего процесса или обезвоживание, как он называется, используется для выполнения рабочих процессов для их сохранения на диске. Это использует стандартную двоичную сериализацию .NET и может быть довольно сложной из-за продолжительного характера рабочих процессов. Но неважно, когда вы знаете, что искать. См. http://msmvps.com/blogs/theproblemsolver/archive/2008/09/10/versioning-long-running-workfows.aspx для начала серии сообщений в блогах.

Не уверен, что вам это нужно, но есть возможность изменить уже выполняемые рабочие процессы. Для этого используется объект WorkflowChanges. См. Здесь http://wiki.windowsworkflowfoundation.eu/default.aspx/WF/RuntimeModificationOfWorkflows.html для более подробной информации.

+0

Поскольку автор ссылки в моем ответе здесь, мой ответ устарел ... Мое голосование за ваши прекрасные должности (и блог в целом). – Panos 2008-09-22 17:11:09

0

Вот еще одна статья на рабочий процесс управления версиями:

http://www.adefwebserver.com/DotNetNukeHELP/Workflow/VacationRequest3.htm

В принципе вы можете версии рабочие процессы, которые используют сборки, если:

  • Любая сборка используется с рабочими процессами должен быть сильным по имени.
  • Если в сборке используется интерфейс, он также должен быть сильным и помещен в отдельную сборку .
  • Запись в web.config может дать указание asp.net, где найти надлежащую сборку.