Сериализация версионных рабочих процессов с использованием Microsoft WF - PullRequest
4 голосов
/ 22 сентября 2008

У меня простой бизнес-процесс со следующими условиями

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

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

Ответы [ 3 ]

3 голосов
/ 22 сентября 2008

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

2 голосов
/ 22 сентября 2008

Вы можете перенести дизайнер 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 голосов
/ 12 октября 2008

Вот еще одна статья о версионности рабочего процесса:

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

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

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