Как определить тип действия при загрузке сохраненного рабочего процесса - PullRequest
1 голос
/ 22 января 2011

Вопрос:

Существует ли простой способ узнать, какой тип действия использовался для создания рабочего процесса?

Справочная информация:

Я пишу свой собственный хостинг Windows Workflow 4 на базе WorkflowApplication, и у меня возникают некоторые проблемы при попытке загрузить постоянные рабочие процессы из базы данных.Я использую метод WorkflowApplication.Load(Guid) для запуска рабочего процесса, но для этого требуется, чтобы я уже создал WorkflowApplication.

Глядя на базы данных SqlWorkflowInstanceStore, я не вижу, чтобы имя типа хранилось где-либо, и я не вижу возможности легко связать его с созданием другой таблицы для хранения этой информации.

Ответы [ 2 ]

2 голосов
/ 22 января 2011

Когда вы используете службы рабочего процесса, относительный URL-адрес используется для определения того, владеет ли WorkflowServiceHost экземпляром рабочего процесса, это делается через таблицу ServiceDeploymentsTable в базе данных. Когда вы используете приложение WorkflowApplication, подобного механизма не существует, поэтому вам придется свернуть свой собственный.

Одна вещь, которую вы могли бы сделать, это использовать продвижение свойства для сохранения типа в InstancePromotedPropertiesTable. Это избавит вас от создания новой таблицы, но вряд ли является идеальным способом решения проблемы.

1 голос
/ 24 января 2011

Я полагаю, у вас есть 2 варианта для этого, ни один из них не оптимален:

  • Вы можете использовать продвинутые свойства, поскольку Морис уже предложил хранить информацию в InstancePromotedPropertiesTable и избежать необходимости создавать свои собственныеТаблица.Есть хорошая статья на MSDN .
  • , если вы решите создать свою собственную таблицу, я бы посоветовал вам реализовать PersistenceIOParticipant .Посмотрите пример , вы всегда можете сохранить имя типа или ваш XAML вместо пути.
...