Долгосрочное управление версиями рабочего процесса: где и как использовать OnActivityExecutionContextLoad? - PullRequest
2 голосов
/ 21 февраля 2011

У нас есть длительный рабочий процесс, который использует службу отслеживания SQL (.Net WF 4.0). В следующем обновлении мы хотели бы представить публичное свойство в одном из аргументов рабочего процесса. Поскольку это критическое изменение, при повторной загрузке постоянные элементы рабочего процесса выдают следующую ошибку:

System.Runtime.DurableInstancing.InstancePersistenceCommandException: The execution of the InstancePersistenceCommand named .. LoadWorkflow was interrupted by an error.

InnerException: System.Runtime.Serialization.SerializationException: 'Element' '_x003C_BookmarkName_x003E_k__BackingField' from namespace '...' is not expected. Expecting element '....'

Я понимаю, что это типичная проблема с управлением версиями, и одна из рекомендаций, которые я заметил на некоторых сайтах, состоит в переопределении OnActivityExecutionContextLoad и заполнении пропущенных значений. Но я не уверен, где и как это сделать! OnActivityExecutionContextLoad объявлен в System.Workflow.ComponentModel.Activity (.Net 3.5?), Тогда как у нас есть пользовательское действие верхнего уровня на основе кода, полученное из System.Activities.NativeActivity (который получает рассматриваемый аргумент). Можно ли что-то сделать в этом классе для инициализации отсутствующего свойства аргумента?

Все предложения приветствуются:)

...