2014-09-10 4 views
1

в WebLogic Service Bus 10g У меня есть файл XQuery с функцией, которую я хотел бы использовать из другой функции файла XQuery. Как я могу добиться этого в OSB?Weblogic OSB - функция вызова из другого файла XQuery

Проекты/Projecta/getMessageType XQuery:

declare namespace xf = "http://tempuri.org/projectA/getMessageType/"; 

declare function xf:getMessageType($anyType as element()) 
    as xs:string { 

    ... 
}; 

declare variable $anyType as element() external; 

xf:getMessageType($anyType) 

Проекты/projectB/процесс XQuery:

declare namespace xf = "http://tempuri.org/projectB/process/"; 

declare function xf:process($data as element()) 
    as element() { 

    // call projectA's getMessageType($data) here!!! 
    ... 
}; 

Спасибо заранее, PM

ответ

2

Вы должны были бы играть функцию xf:getMessageType от projectA до библиотечного модуля в отличие от к основному модулю . Затем вы можете импортировать библиотечный модуль.

Рассмотрим что-то вроде:

Проекты/Projecta/getMessageType XQuery:

import module namespace common = "http://your.site.com/common"; 

declare namespace xf = "http://tempuri.org/projectA/getMessageType/"; 
declare variable $anyType as element() external; 

common:getMessageType($anyType) 

Проекты/projectB/процесс XQuery:

import module namespace common = "http://your.site.com/common"; 

declare namespace xf = "http://tempuri.org/projectB/process/"; 

declare function xf:process($data as element()) 
    as element() { 

    common:getMessageType(data) 
    ... 
}; 

Проекты/общие/common.xqy

module namespace common = "http://your.site.com/common"; 

declare function common:getMessageType($anyType as element()) 
    as xs:string { 

    ... 
}; 

Возможно, вам потребуется добавить оператор at в оператор import module, указав расположение файла в общем библиотечном модуле, но я не уверен, что это будет выглядеть точно в OSB WebLogic.

+1

Привет, Адам, спасибо за ваш ответ. Вы абсолютно правы в том, что включение функции в библиотечный модуль сделает трюк. Мне просто интересно, можно ли просто импортировать другие функции XQuery напрямую, поскольку это требование было для незначительного обновления в системе, которая теперь находится в режиме обслуживания и в процессе ее постепенного выхода (поэтому, желая обойтись без создание модуля и обновление каждого потока, чтобы использовать его вместо этого). –

+1

Не бойтесь, спецификация XQuery заявляет, что вы можете импортировать функции только из «библиотечного модуля», а не из «основного модуля». – adamretter

Смежные вопросы