0

У меня очень большой рабочий процесс, он использует фреймворк 4. Некоторые рабочие процессы могут оставаться в системе до 2 лет, и всякий раз, когда я обновляю рабочий процесс, все существующие экземпляры больше не будут работать.Workflow 4.0 versioning WF4 с использованием динамических изменений (System.Workflow.ComponentModel.WorkflowChanges)

Я видел некоторые обходные пути с использованием метода «Маршрутизация», в котором у вас есть две разные версии WF в системе, и он будет маршрутизироваться в правильный WF, когда он выполняется. Однако я не мог использовать этот метод, потому что мне нужны все существующие экземпляры для использования обновленной новой версии рабочего процесса.

Поэтому я нашел способ динамического обновления, чтобы обойти его, но я не мог заставить его работать. Есть ли у кого-нибудь учебники? Я видел несколько примеров, но они, кажется, .NET Framework 2 или 3.

В настоящее время я создал новый класс Activity называется: TestClass.cs А вот код

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Activities; 
using SPABLL; 
using System.Workflow.ComponentModel; 

namespace SPAWorkflow.Activities.DynamicUpdate 
{ 
    public sealed class TestClass : NativeActivity 
    { 
     protected override void Execute(NativeActivityContext context) 
     { 
      WorkflowChanges wc = new WorkflowChanges(this); 
     } 
    } 
} 

Но строка: new WorkflowChanges (this); дает мне ошибку, потому что «это» не является объектом System.Workflow.ComponentModel.Activity, и я не уверен, что передать.

Не уверен, что кто-нибудь может пролить меня на свет или у вас есть Я могу следовать за некоторыми рабочими образцами.

Спасибо большое!

ответ

0

Это не работает. Тип WorkflowChanges и требуемый System.Workflow.ComponentModel.Activity являются частью WF3, а не WF4.

С WF4 вам придется подождать .NET 4.5, чтобы получить аналогичные возможности.

+0

Спасибо Морису за ответ, поэтому в .NET 4 нет работы, чтобы сделать динамическое обновление ..? или другие способы его достижения ..? – Kris

+0

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

+0

Спасибо Морис! – Kris

Смежные вопросы