Доступ к workflowArguments в размещенном рабочем процессе
Мы смешиваем рабочие процессы, рабочий процесс, использующий активность получения в конце. Но в начале мы хотим передать некоторые аргументы (не используя операцию приема!)
Наши рабочие процессы уже создаются и возобновляются с использованием динамической конечной точки с IWorkflowCreation и класса, производного от WorkflowHostingEndpoint. В OnGetCreationContext creationgContext заполняется WorkflowArguments и рабочий процесс запускается. На более позднем этапе действия получения создают закладку, которую можно возобновить сообщением. Кажется, все хорошо.
Но в xamlx нет WorkflowArguments, я понимаю почему, за исключением того, что я все равно хочу их. Я думаю об активности, в которой я могу написать некоторый код, чтобы сам получить Аргументы, но мне здесь нужна помощь.
Или есть другой способ передать WorkflowArguments в xamls без использования Messaging?
2 ответа
Вы не можете передавать аргументы в запускающую службу рабочего процесса, кроме как через сообщение SOAP, которое его запускает. Но ничто не мешает вам читать какие-либо свойства в вашем сервисе рабочих процессов. Так что совершенно нормально делать настройки чтения или что-то подобное, вместо того, чтобы передавать их при запуске.
Мы решили именно эту ситуацию, создав другой сервис WCF, который расположен рядом с нашим сервисом xamlx по несколько другому URL-адресу (например, /WorkflowMetadata), и именно здесь мы реализуем метод сервиса, который возвращает словарь типа string.
В реализации этого сервиса мы просто читаем xamlx и определяем аргументы.
Это то, что мы используем для опроса целевого рабочего процесса в конструкторе действий при создании чего-то вроде действия запуска рабочего процесса.
Создание действия не будет работать, так как для этого действия потребуется экземпляр для запуска. Все, что вам нужно, это некоторые метаданные о службе xamlx. И если вы используете WorkflowCreationEndpoint для создания контекста создания, то вы, вероятно, разрешаете использовать только словарь строк и объектов в качестве параметров запуска. Поэтому стандартные метаданные не будут работать. Это оставило нам единственную возможность - предоставить другую услугу помимо рабочего процесса, которая обслуживает метаданные.
Справочная информация здесь: http://blog.petegoo.com/index.php/2011/09/02/building-an-enterprise-workflow-system-with-wf4/