Я пытаюсь реализовать партнерскую ссылку с динамически определяемым адресом конечной точки в процессе WSO2 BPS BPEL. Идея состоит в том, что запрос, отправленный процессу, содержит URL-адрес конечной точки, и этот URL-адрес используется в качестве адреса для определенной партнерской ссылки. Раньше я успешно использовал ссылки на конечные точки, хранящиеся в реестре, но я не могу использовать этот подход здесь, поскольку адрес может меняться каждый раз при вызове процесса.
Я пробовал несколько разных подходов (используя WSO2 BPS 3.5.1 и WS02 Developer Studio 3.8.0):
Подход, использованный в примере DynPartner, упоминается в https://stackoverflow.com/questions/11092515/dynamic-partner-links-and-dynamic-addressing-with-ode-bpel. Это дает мне следующую ошибку проверки в Developer Studio:
The from-spec of "<xs:simpleType "string">" is not compatible with to-spec of "<wsdl:portType "DynResponderPortType">"
. Кроме того, когда я развертываю и вызываю процесс, я получаю сообщение об ошибке, указывающее, что конечная точка не может быть создана (Couldnt create any endpoint for element ...
)Присвоение фиксированного значения партнерской ссылке, например. так:
<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsdl11="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com uep_schema.xsd"> <wsa:Address>http://localhost:8281/services/serviceaddress</wsa:Address> </wsa:EndpointReference>
Это работает и не дает ошибки проверки, но я не нашел способа динамически изменить адрес, который используется здесь, на основе входных данных, с которыми вызывается мой процесс.
Создайте переменную, содержащую ссылку на конечную точку, используя тип, определяющий содержимое ссылки на конечную точку. Я пробовал несколько XSD (http://docs.oasis-open.org/wsbpel/2.0/OS/serviceref/ws-bpel_serviceref.xsd, http://svn.wso2.org/repos/wso2/carbon/platform/branches/turing/components/unified-endpoint/org.wso2.carbon.unifiedendpoint.core/4.2.0/src/main/resources/schema/uep_schema.xsd (который не проходит проверку без ошибок), ws-addr.xsd от w3c, мой собственный очень простой XSD). У меня были разные успехи в отношении того, насколько хорошо Developer Studio может обрабатывать их и, например, генерировать инициализации, но все они разделяют проблему, заключающуюся в том, что я получаю ошибку проверки, указывающую что-то вроде
The from-spec of "<element "EndpointReference">" is not compatible with to-spec of "<wsdl:portType "ThisIsThePartnerLinkPortType">" -
.
На данный момент я использую последний подход с моим собственным простым XSD. Процесс на самом деле работает так, как я предполагал, но я все еще получаю ошибки проверки в Developer Studio, от которых я хотел бы избавиться. Есть ли другой и лучший способ приблизиться к этому?
Заранее спасибо за вашу помощь.