BPEL: асинхронный / синхронный шаблон - PullRequest
0 голосов
/ 05 апреля 2011

Хотелось бы узнать, правильно ли это.

Шаблон получения - ответа используется для синхронизации веб-сервисов.В этом случае можно определить один порт в файле wsdl.

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

Итак, мой вопрос: возможно ли использовать only ответное действие для создания асинхронных вызовов?

СпасибоВы заранее.

1 Ответ

2 голосов
/ 06 апреля 2011

Я не совсем понимаю ваш вопрос, однако я пытаюсь объяснить отношение синхронизации к асинхронности в BPEL, надеясь, что оно также ответит на ваш вопрос:

a) Даже двусторонний запрос-ответоперация (которая выглядит как синхронная операция) может быть связана с асинхронным транспортным протоколом (например, SMTP, JMS, XMPP, AMQP ...)

b) Описанные вами шаблоны верны для входящего вызова службы,т.е. когда клиент вызывает экземпляр процесса BPEL.Если WSDL вашего BPEL-процесса определяет операцию как запрос-ответ, вам нужно смоделировать ее как пару получения-ответа в вашем BPEL.Это можно считать синхронным вызовом (но см. А)).Если по какой-то причине эта операция не может быть привязана к асинхронному транспортному протоколу, и по какой-то причине (например, длительная обработка между ними) вызов должен быть асинхронным, необходимо разделить операцию на две односторонние операции.Это означает, что теперь процесс предоставляет одну операцию для исходного запроса, и теперь вызывающая сторона должна предоставить одну одностороннюю операцию для исходного ответа.Это моделируется как пара получения-вызова в BPEL.Оба взаимосвязаны через партнерские ссылки.Это происходит в асинхронном режиме.

Один ответ не имеет смысла, так как ответное действие всегда связано с получающим действием, то есть оно отвечает только за ответную часть операции и не может быть использованодля односторонних операций.Если вы хотите вызвать внешнюю службу, используйте invoke.При операциях запрос-ответ invoke будет напрямую возвращать результат.Если вызов должен быть асинхронным, используйте пару invoke-receive, каждая из которых предоставляет / вызывает одностороннюю операцию.

HTH, Tammo

...