Генерация кода в стиле WSDL для EbXML CPA+Schemas (не само сообщение EbXML)

Предыстория:

Некий поддерживаемый правительством оптовый торговец услугами широкополосного доступа в Австралии получил отзывы от дискуссионных групп о том, как лучше всего предоставлять услуги B2B розничным интернет-провайдерам. Они остановились на EbXML.

Проблема:

Мы очень маленькая компания (сравнительно), которая не хочет тратить много времени на интеграцию. Мы уже знакомы с интеграцией парных (входящих и исходящих) сервисов SOAP. В прошлом мы использовали инструментарий генерации кода на основе WSDL (в основном с сервисами RPC/Literal), где WSDL был описательным и достаточно простым для понимания инструментами генерации кода.

Если это вообще возможно, мы хотели бы избежать ручной интеграции сервисов с нашим бизнес-стеком. Мы знаем, что «Схемы интерфейса» обновлялись несколько раз; мы хотели бы (насколько это возможно) сгенерировать код и схему, чтобы мы могли моделировать наши отношения с поставщиком и исходящими/входящими сообщениями как простые "очереди" (таблицы) в базе данных SQL -- это будет нашей точкой интеграции.

Начиная с исходящей ("отправитель") веб-службы SOAP... она публикует документальное/литеральное WSDL-описание службы, которое, по-видимому, правильно работает с различными инструментами (например, wsdl2java, SoapUI) для создания сообщений "оболочки" EBXML. . Это ничего не говорит о самих «полезных» сообщениях, которые (по крайней мере, для MSH, который мы рассмотрели) должны быть multipart/related вложениями с типом text/xml.

Сообщения «полезной нагрузки» определяются в предоставленных файлах CPA (что-то вроде привязок) и Schema (стандартный XSD). Сам MSH, по-видимому, не обеспечивает никакой внешней проверки сообщений полезной нагрузки.

Вопрос:

Доступен ли такой же инструмент для генерации кода (как в веб-службах SOAP, описанных в WSDL) для CPA/схем EbXML? (то есть: инструменты, которые могут использовать схемы интерфейса CPA и 'полезной нагрузки' и выдавать java/c++/что угодно, и/или что-то похожее на WSDL, относящееся к сообщениям интерфейса 'полезной нагрузки' и/или пример Сообщения).

Если да, то где мне смотреть?

Если нет, существуют ли какие-либо проблемы, связанные с EbXML, которые могли бы предотвратить это? (Я бы предпочел не тратить несколько недель на проект по разработке инструментов, которые невозможно реализовать «правильно», учитывая имеющуюся информацию).


person David-SkyMesh    schedule 18.05.2014    source источник
comment
Голосующему за закрытие [не похоже, что речь идет о программировании как ...], не могли бы вы дать совет относительно того, как я могу перефразировать / переписать вопрос, или альтернативное место проведения SE? Я могу продемонстрировать часть WSDL для сообщений «оболочки», но я буквально понятия не имею, с чего начать для сообщений «полезной нагрузки», и инструменты, связанные с программистом (по крайней мере, в абстрактном виде), похоже, подходят здесь.   -  person David-SkyMesh    schedule 18.05.2014
comment
Измененный заголовок, надеюсь, сделает вопрос более доступным.   -  person David-SkyMesh    schedule 02.06.2014


Ответы (2)


MSH не зависит от полезной нагрузки. Полезные нагрузки не определены в CPA, определены только имена служб и действий, которые используются для отправки полезных нагрузок ebXML. Услуга и действие передаются в заголовке ebXML, который является первой частью составного сообщения. Сами полезные нагрузки могут быть XML, бинарными или их комбинациями. Каждая полезная нагрузка является еще одной частью.

MSH отвечает за такие задачи, как:

  • sending (usually asynchronous) acknowledgements for received messages
  • resending messages if an acknowledgement has not been received within a certain amount of time
  • ignoring duplicate messages
  • assuring the order in which messages are delivered is correct

фактическое поведение настраивается с помощью CPA, но совместимый MSH будет поддерживать все это.

Это означает, что MSH должен вести администрирование отправленных и полученных им сообщений, что обычно выполняется в базе данных.

Я был бы удивлен, если бы вы могли найти инструменты для создания MSH из определенного CPA. Что вы можете найти, так это программное обеспечение/компоненты, которые реализуют общий MSH и которые можно настроить с помощью CPA.

Предполагая, что вы не хотите создавать свой собственный адаптер, найдите существующий адаптер ebMS. Настройте его с помощью CPA. Затем сгенерируйте полезные данные, как вам нравится, и передайте их адаптеру ebMS.

Поищите в Google «адаптер ebMS» или «поддержка ebMS».

person gct    schedule 18.05.2014
comment
Я не хочу создавать MSH. У меня есть существующий MSH с импортированным CPA, импортированными и работающими сертификатами, я общаюсь с MSH получателя в порядке. Я могу прекрасно генерировать сообщения-оболочки (используя WSDL, обслуживаемый MSH). В ответ на вопрос я хочу сгенерировать код для создания сообщений «полезной нагрузки». - person David-SkyMesh; 19.05.2014

Увы, похоже, что для EbXML не существует специального инструментария для сообщений «полезной нагрузки», особенно потому, что EbXML не регулирует эти сообщения.

Однако элементы CPA (через canSend и canRecv) действуют как SOAP WSDL, а XSD служат той же цели, что и SOAP, так что это недалеко.

Существует программное обеспечение для преобразования типов, определенных в XSD, в сообщения (слияние с данными, предоставленными пользователем) во время выполнения, но, по моему вопросу, нет очевидных инструментов для генерации кода вокруг CPA и связанных XSD.

Кроме того, фактическое написание программного обеспечения для самостоятельного выполнения этого становится более проблематичным из-за сложности поиска метаграмматики для XML-схемы (то есть той грамматики, которая остается от XML-схемы после того, как XML-токенизация исключена). По сути, это было сложно, потому что в мире XML слово «грамматика» имеет другое значение, которое загрязняет результаты поиска.

Мне удалось написать синтаксический анализатор фрагментов синтаксиса XML, присутствующих в верхней части каждого из Артикулы MSDN по XML-схеме (элементы перечислены внизу слева), что, в свою очередь, позволило мне сгенерировать грамматику LL1 для XML-схемы, которая работает с предварительно проанализированным AST заданного XSD.

Оттуда я построил синтаксический анализатор сверху вниз из этой метаграмматики, который:

  1. Следует за <xsd:import>s и <xsd:include>s для преобразования пространств имен в дополнительные XSD.
  2. Рекурсивно разрешает типы сообщений, чтобы создать «сглаженный» тип для каждого сообщения CPA.
  3. Генерирует структуры данных упаковщика/распаковщика для типов сообщений, которые позволяют генерировать код на различных языках, а также сериализовать и анализировать проверенный XML-код «полезной нагрузки».

Существуют различные ограничения XML-схемы, ключи и другие ограничения, о которых мои генераторы кода не знают, но их поддержка может быть добавлена ​​со временем.

Я обновлю этот ответ ссылками на грамматики (и, возможно, код - зависит от юридических требований), как только позволит время. Я оставлю вопрос как непринятый на некоторое время, так что, если кто-то чудесным образом найдет инструмент, который делает намного меньше работы по генерации кода, я приму ответ, основанный на этом.

person David-SkyMesh    schedule 22.05.2014