Я использовал перепроектированный дизайнер рабочих процессов в приложении ASP.NET для генерации изображений рабочих процессов, в основном применяя образец WorkflowMonitor аналогично Atlas Workflow Monitor . Теперь я начал беспокоиться о поведении этого решения после повторного развертывания, когда установленная версия библиотек больше не соответствует исходной из старых определений рабочих процессов (особенно из отслеживаемых рабочих процессов и записей истории в базе данных, которая содержит XOML рабочих процессов, которые были выполнено в прошлом). Стоит отметить, что я прочитал статью об одновременном использовании нескольких версий рабочих процессов, и это не совсем то, что мне нужно, поскольку я действительно не хочу запускать рабочие процессы со старыми определениями, Я просто хочу показать свои диаграммы. Я видел только 2 решения:
- Сделайте снимок экрана у дизайнера рабочего процесса в тот момент, когда рабочий процесс завершится / завершится, где у меня еще есть актуальная версия библиотек, и просто сохраните его как растровое изображение в базе данных.
- Храните старые версии библиотек в отдельной папке, чтобы можно было каким-то образом загрузить их в конструктор, чтобы он все еще мог генерировать диаграммы из старых рабочих процессов, даже если в них больше нет действий в текущей версии сборки.
Поскольку я хотел избежать напрасной траты места (решение 1), я решил сначала попробовать решение 2. Я нашел несколько примеров использования службы TypeProvider для WorkflowMarkupSerializer или WorkflowDesignSurface и попытался использовать их. К сожалению, в сценарии, где действие удаляется в новой библиотеке, а старая библиотека загружается с этим TypeProvider, похоже, не работает, в случае непосредственного использования WorkflowMarkupSerializer для чтения XOML просто исключает отсутствующую активность из диаграммы при использовании SqlTrackingService для загрузки некоторых старых отслеживаемых экземпляров выдается исключение, из-за которого отсутствует тип действия (хотя внутренне, похоже, используется тот же метод WorkflowMarkupSerializer).
У вас есть какой-то опыт или советы, как следует использовать TypeProvider, что может пойти не так? Спасибо;)