2014-09-10 4 views
1

의 호출 함수, 다른 XQuery 파일의 기능 내에서 활용하고자하는 함수가있는 XQuery 파일이 있습니다. OSB에서 어떻게 이것을 할 수 있습니까?Weblogic OSB - Weblogic Service Bus 10g에있는 다른 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!!! 
    ... 
}; 

감사합니다, 오후

답변

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 { 

    ... 
}; 

공통 라이브러리 모듈의 파일 위치를 지정하여 문을 import module 문에 추가해야 할 수도 있습니다. 그러나 WebLogic OSB에서 정확히 어떻게 생겼는지 확실하지 않습니다.

+1

안녕하세요 아담, 답변 해 주셔서 감사합니다. 함수를 라이브러리 모듈에 넣는 것이 트릭을 수행한다는 점에서 절대적으로 옳습니다. 이 요구 사항은 현재 유지 관리 모드에만 있고 단계적으로 제거되고있는 시스템에서 사소한 업데이트를위한 것이기 때문에 다른 XQuery 파일의 기능을 직접 가져올 수 있는지 궁금합니다 (따라서 모듈을 생성하고 대신 모든 흐름을 업데이트하여이를 사용합니다). –

+1

XQuery 사양에서는 '기본 모듈'이 아닌 '라이브러리 모듈'에서만 함수를 가져올 수 있다고 명시하고 있습니다. – adamretter