Создание ответов SOAP об ошибках - PullRequest
0 голосов
/ 09 июля 2011

Я создаю веб-службу, которую будет вызывать внутренний клиент в моей компании.Методы службы выглядят следующим образом:

CreateProposalResponse ProposalSOAService :: CreateProposal (CreateProposalRequest)

Для сообщения CreateProposalResponse Мне нужно добавить бизнес-ошибкуСообщения в ответ.Я много читал о том, как помещать ошибки в заголовки SOAP, но для бизнес-ошибок я не думаю, что это подходящее место для их размещения, потому что это должны быть системные / транспортные / валидационные ошибки, а не бизнес-ошибки.Ниже приведен мой XML-ответ для SOA-вызова CreateProposal ().Может кто-нибудь посоветовать мне, как добавить сообщения об ошибках в этот ответ?Я с трудом представляю себе это и то, как вызывающие клиенты будут определять отличие от обычного ответа и бизнес-ошибки / исключения.

My CreateProposalResponse Сообщение выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8" ?>
<CreateProposalResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                       xsi:schemaLocation="http://xmlns.xxx.com/aces/proposal src/Proposal_v1.0.xsd"
                       xmlns="http://xmlns.raytheon.com/aces/proposal">
  <userId>022483</userId>
  <Proposal>
    <proposalTitle>SBT Prop</proposalTitle>
    <proposalDescription>Proposal is for SBT</proposalDescription>
    <businessSegmentCode>SAS</businessSegmentCode>
    <proposalType>Test</proposalType>
    <proposalExternalRefID>SBT38829</proposalExternalRefID>
    <proposalStartDate>2009-01-01</proposalStartDate>
    <proposalEndDate>2025-01-01</proposalEndDate>
  </Proposal>
  <sourceSystemID>SBT</sourceSystemID>
  <targetSystemID>ACES</targetSystemID>
</CreateProposalResponse>

Ответы [ 2 ]

1 голос
/ 09 июля 2011

Я согласен с Aasmund Eldhuset, если только эти ошибки не указывают на сбой операции. В этом случае вы должны использовать SOAP Fault.

1 голос
/ 09 июля 2011

Как насчет просто иметь элемент массива <errors> в качестве необязательного элемента в вашем сообщении и заполнить его одним или несколькими элементами <error>, описывающими ошибки? Затем можно указать, что ответное сообщение будет содержать заполненный элемент <errors> (наряду с другими элементами метаданных, которые могут быть желательны даже при возникновении ошибки; возможно, <sourceSystemID> и <targetSystemID> являются такими элементами?), Но нет <Proposal>, или он не будет содержать <Proposal>, но не <errors> (или элемент будет пустым).

(Кстати, я согласен, что в теле сообщения должны указываться ошибки бизнеса, а не ошибки SOAP.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...