Я установил сообщение , чтобы использовать его в синхронной сервисной операции. Я опубликовал эту службу, и я использую SOAPui и встроенный тестер обслуживания, доступный непосредственно через PeopleTools> Integration Broker> Service Utilities> Service Tester.Ошибка запроса SOAP в Integration Broker (PT8.52.14)
Моя проблема: когда я отправляю запрос, заполненный некоторыми значениями, а затем просматриваю его на синхронном мониторе службы, я больше их не вижу. В какой-то момент Integration Broker сбросил значения, и я не могу понять, является ли это известной ошибкой или что-то в моей настройке, которая может быть неправильной.
Примечание:
- Запрос и ответ то же самое сообщение.
- Каждое поле в документе имеет длину и набор типов.
- Нет проблема с сообщением на основе Non-Rowset
- Я использую PeopleTools 8.52.14
Мой запрос следующим образом:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:nx="http://xmlns.oracle.com/Enterprise/Tools/schemas/NX_PAC.NX_IB_PERFS_EVENT.VERSION_2a">
<soapenv:Header/>
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<NX_IB_PERFS_EVENT xmlns="http://xmlns.oracle.com/Enterprise/Tools/schemas/NX_PAC.NX_IB_PERFS_EVENT.VERSION_2a">
<EventName>XYZ</EventName>
<PerfsDate>2015-02-09</PerfsDate>
<AverageTiming>0.0</AverageTiming>
<NumberOfExec>0.0</NumberOfExec>
<AveragePost>0.0</AveragePost>
</NX_IB_PERFS_EVENT>
</soapenv:Body>
</soapenv:Envelope>
поступающих значений EventName
и PerfsDate
отпадет при просмотре исходного входящего сообщения на мониторе. Но это не так, поскольку значения появляются после перезагрузки PIA.
Вот PeopleCode моей службы эксплуатации Handler:
method OnRequest
/+ &_msg as Message +/
/+ Returns Message +/
/+ Extends/implements PS_PT:Integration:IRequestHandler.OnRequest +/
&_msg.GetDocument().GetElement("PerfsDate").value = %Date;
Return &_msg;
end-method;
я отправить обратно сообщение с запросом, и просто настроить дату на теге PerfsDate
.
В ответном сообщении EventName
значение пусто.
Отзывы об этом случае?
Это решение просто не будет работать с сообщением документа. Если вы запустите его с таким сообщением, IB отправит обратно «Этот метод может использоваться только сообщениями на основе nonrowset (2,852)», передавая GetXmlDoc(); – Telkarion
Я только сейчас понял, что вы делаете набор сообщений на основе набора строк. Мои извинения - я должен был внимательно прочитать ваш вопрос. – egg0r
Вместо GetXmlDoc вам нужно использовать GenXMLString() для создания строкового объекта, содержащего данные XML. Затем вы можете проанализировать XML и посмотреть, что встречается в сообщении. Я не уверен, что вызывает проблемы, которые вы описали, но я предполагаю, что это потому, что вы обрабатываете сообщения так, как будто они были сообщениями, отличными от набора строк.Вы должны использовать типы объектов записи и набора строк там где-то, так как вы обычно обрабатываете их. – egg0r