Загрузка сохранила рабочий процесс после того, как workflowdefinition изменился в WF4

Как решить эту проблему (в WF4):

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

Теперь я останавливаю приложение

Если я перезапускаю te приложение, все возобновляется, en приятно завершается.

Но что, если я хочу изменить определение рабочего процесса после того, как рабочие экземпляры сохраняются? единственным способом загрузить рабочие рабочие процессы (что я смог найти) является следующий путь:

        WorkflowApplication wfapp = new WorkflowApplication(new WorkflowDefinition());
        wfapp.InstanceStore = new SqlWorkflowInstanceStore(connStr);

        wfapp.Load(wfGuid);

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

Что лучший способ состоит в том, чтобы решить это?

8
задан Flores 14 January 2010 в 21:06
поделиться

3 ответа

Этот сценарий представляет собой небольшую проблему. Невозможно перенести старое определение рабочего процесса в новый формат. Я провел ограниченное тестирование и некоторые сценарии с добавлением/удалением действий, которые там, где еще не выполнялись, работали нормально. Но затем у меня также есть сценарии, которые идут плохо, в том числе повторное выполнение уже завершенных действий.

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

3
ответ дан 5 December 2019 в 19:00
поделиться

NDepend, я использую его и его лучшее для этой цели. Проверьте следующее: http://www.codeproject.com/KB/dotnet/NDepend.aspx

-121--787210-

И чтобы ответить на вопрос, который вы не задавали, эквивалент Haskell связывания монады «последовательности» в C # называется Подробнее об этом см. в статье Уэса Дайера:

http://blogs.msdn.com/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx

-121--872960-

Это не столько проблема Windows Workflow, сколько служба сохранения SQL. Можно создать собственную службу персистентности, которая сможет справиться с этой ситуацией, либо поддерживая преобразование старого рабочего процесса в новый рабочий процесс, либо что-то более абстрактное, например службу персистентности, которая сериализуется как XML/JSON, что может легче поддерживать десериализацию одной версии как другой.

1
ответ дан 5 December 2019 в 19:00
поделиться

Может быть это поможет

http://msdn.microsoft.com/en-us/magazine/dd727506.aspx

2
ответ дан 5 December 2019 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: