XML/ Ответ об ошибке: что такое стандарт?

Я поддерживаю библиотеку, которая обеспечивает доступ к XML/A через весь JavaScript: https://github.com/rpbouman/xmla4js

В основном это работает нормально, но я бы хотел улучшить обработку ошибок. Насколько я понимаю спецификацию XML/A, сообщения об ошибках принимают такую ​​форму:

<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
  <faultcode>...</faultcode>
  <faultstring>...</faultstring>
  <faultactor>...</faultactor>
  <detail>
     ...
  </detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Тем не менее, я обнаружил, что по крайней мере для Mondrian (провайдер XML/A, с которым я больше всего знаком) <detail> Элемент часто содержит бесценную информацию. Например, общий <faultcode> элемент может сказать что-то общее, как "источник данных не найден", тогда как <detail> элемент может содержать что-то вроде:

    <XA:error xmlns:XA="http://mondrian.sourceforge.net">
      <code>00HSBC01</code>
      <desc>The Mondrian XML: MondrianOneToOneUserRoleListMapper.ERROR_001_ - Access is denied because the roles of this user don&#39;t correspond to any present in the Mondrian schema requested.</desc>
    </XA:error>

Что указывает на более конкретное состояние.

Мой вопрос заключается в том, существует ли какая-то закономерность в ответе на ошибку других провайдеров XML/A, которую я могу использовать для наложения моего API и предоставления более качественных сообщений об ошибках пользователям моей библиотеки? Если вы не знаете о шаблоне, но можете предоставить только образцы провайдеров XML/A, к которым у вас есть доступ, это также приветствуется. Спасибо!

1 ответ

Вы можете скачать спецификацию Microsoft для протокола XMLA здесь: http://msdn.microsoft.com/en-us/library/ee320606.aspx (более семисот страниц).

В целом, существует два типа ошибок:

  • Глобальные, которые либо препятствуют выполнению запроса, либо не дают серверу возвращать что-либо полезное (например, синтаксические ошибки),
  • и локальные, например, в пределах одной ячейки ответа на запрос SELECT MDX, где возвращается общая структура результата. В этом случае объекты ошибок могут быть возвращены, например, в одной или нескольких ячейках вместо результата. Примером может служить ошибка, которая не позволяет серверу вычислить это конкретное значение ячейки, например ссылку на неизвестный элемент в определении вычисляемого элемента.
Другие вопросы по тегам