Как BizTalk 2006 R2 может использовать сериализованный ответ службы WCF с PreserveObjectReferences = true? - PullRequest
0 голосов
/ 10 августа 2009

У нас есть существующая служба WCF .net 3.5, для которой для PreserveObjectReferences установлено значение true на стороне сервера.

Когда для PreserveObjectReferences установлено значение false, BizTalk может использовать ответ.

Есть ли способ заставить BizTalk использовать полезные нагрузки ответа PreserveObjectReferences ...

PreserveObjectReferences проявляется с использованием z: id для первого экземпляра объекта и z: ref для любых последующих вхождений объекта:

<b:xyz *z:Id="5"* i:type="abc">...</b:xyz>
...
<b:xyz *z:ref="5"* />

Ответы [ 2 ]

0 голосов
/ 19 ноября 2009

И BizTalk, и JAX-B имеют проблемы с работой с полезной нагрузкой по разным причинам. ID / IDREF поддерживаются параметры схемы XML, но каждая реализация, похоже, имеет проблемы с их потреблением.

Для JAX-B, когда указаны и idref, и nil = true, он не может распределить полезную нагрузку на объекты:

<b:xyz z:ref="5" nil="true"  />

Удаление nil = true или установка сохранения ссылки на объект на false (т. Е. Не возвращение полезной нагрузки, использующей возможность idref, означает, что Java-кодеры могут обойти это.

BizTalk может обойти эту проблему путем повторного увлажнения xml без поддержки idref с помощью преобразований xslt или других средств.

Нашим решением было обеспечить отключение сохранения ссылок на объекты. тогда обе системы смогли интегрироваться без особых хлопот.

0 голосов
/ 14 октября 2009

Каков был параметр PreserveObjectReferences, настроенный при создании xsd?

xsd генерируются из службы WCF, это WSDL, и если в этом WSDL эти дополнительные атрибуты не определены, BizTalk не будет знать, что они существуют, и BizTalk выдаст исключение. Я не знаю наверняка, будет ли DataContractSerializer включать эти атрибуты при создании WSDL. Если DataContractSerializer не включает эти атрибуты при создании WSDL, необходимо изменить xsd ответного сообщения, чтобы разрешить xs: любые атрибуты в элементах, в которые эти атрибуты добавляются.

...