Windows Workflow 4.5 Динамическое обновление с использованием XAML / Designer
Я понимаю, что Windows Workflow Foundation 4.5 поддерживает параллельное и динамическое обновление определения Workflow. Я нашел несколько примеров в Интернете, но все они описывают подход на основе кода для обновления рабочего процесса. Я хотел сделать утилиту, которая используется разработчиком для обновления рабочего процесса без кодирования. (использование только Xaml манипуляции должно быть нашим идеальным случаем)
Моя утилита делает следующие вещи,
- Я беру Base Xaml (определение рабочего процесса, которое я хотел обновить). Имя файла и сборка (V1) от пользователя.
- Я готовлю его к обновлению по телефону
prepareForUpdate
API. и сохраните его как ForUpdate XAML. - Я удаляю Base Xaml из проекта Visual Studio.
- Я загружаю этот обновленный Xaml-файл в проект (вместо базового xaml) и изменяю рабочий процесс.
- После модификации и перестройки я снова открываю свою утилиту обновления и принимаю от пользователя измененный Xaml (v2) и создаю карту обновлений.
- После этого я попытался обновить работающий экземпляр (используя карту обновлений). Тогда моя утилита показала, что они успешно обновлены.
- Хотя они обновляются, но во время выполнения дают нежелательные эффекты (я получил исключение, как {
ICompiledExpressionRoot for compiled location 'a'
}, где{'a'}
моя переменная), связанная с синтаксическим анализом Expression, Root и т. д.
Кто-то пытается достичь того же или имеет какое-то представление? мои ошибки в XAML основаны как на Visual Basic, так и на Visual C#.
1 ответ
Хотя мы не столкнулись с вашим конкретным сценарием, мы попытались использовать службы динамического обновления, чтобы найти решение, аналогичное описанному вами.
Несмотря на то, что главным образом декларативные рабочие процессы были разработаны полностью в визуальном редакторе Visual Studio, мы отказались от этого инструмента. В большинстве случаев это не было в состоянии генерировать карту обновления, иногда даже бросая исключения анализа.
Использование этого действительно не показалось, что это был полностью законченный компонент, и отсутствие документации вокруг него, даже после того, как прошло много времени после его выпуска, заставляет меня очень опасаться рассматривать его для чего-либо.