Workflow Foundation и обратная совместимость с долго работающими экземплярами - PullRequest
2 голосов
/ 27 апреля 2011

Я недавно присоединился к проекту, в котором Workflow Foundation 4.0 используется для моделирования бизнес-процессов.

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

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

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

Во-первых, XOML 3.0;WF4 использует прямой XAML.

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

Re multiversion :
Я делаю это в настоящее время.По сути, вы должны изолировать каждую другую версию одного и того же рабочего процесса в домене приложения.Десериализация из xaml или создание экземпляра типа new - это одно и то же - обе они приводят к загрузке сборки в текущий AppDomain.Если v1 рабочего процесса определен в сборке A.1, а v2 рабочего процесса определен в сборке A.2, вы можете столкнуться с проблемами связывания, если не будете осторожны.Изоляция каждой версии в своем собственном домене приложений помогает снизить вероятность этого.

Re upgrade :
В настоящее время это не поддерживается, но есть планы включить это в (ближайший) будущий выпуск.Рон Джейкобс выступил с докладом на PDC10 в октябре прошлого года с подробным описанием фьючерсов на WF4.В презентации были упомянуты три вещи (я помню): ошибки метаданных, нарушающие сборку, конечный автомат и предоставление пути обновления рабочих процессов во время выполнения.Я могу сказать вам, что конечный автомат был выпущен в недавнем обновлении Platform , и мне сказали, что функция metadata-error-breaks-the-build также скоро появится.Я предполагаю, что функция обновления также появится в ближайшее время.

...