사원코드, 부점코드 등의 변수를 NQ_SESSION에 저장할 수 있다. 저장된 NQ_SESSION 변수는 보고서 조회시 조회 조건으로 사용이 가능하며 권한 등을 적용할 수 있게 할수도 있다. SSO를 통해 다른 시스템에서 넘겨진 특정 변수(사원번호, 부점코드 등)를 로그인 하는 시점에 obiee 12c 관리 화면에 있는 SQL실행 기능과 NQSSetSessionValue() 함수를 사용하여 원하는 변수를 NQ_SESSION에 담는 방법을 소개한다.
[1] SQL실행하는 화면을 javascript 에서 호출하여 NQSSetSessionValue() 함수 호출
관리 기능 중 SQL 실행 메뉴를 클릭하면 SQL을 실행할 수 있는 창이 있는데, javascript를 활용하여 NQSSetSessionValue() 를 호출하여 NQ_SESSION에 원하는 데이터를 저장한다.
위 화면을 열게 되면 화면 소스에 _scid 값을 가지고 있는데, SQL실행이 이 값을 변수로 넘겨줘야 쿼리가 제대로 실행된다. 그래서, 위 페이지의 html 소스에서 _scid값을 조회하고 그값을 SQL과 같이 변수로 넘기면, NQ_SESSION이 잘 저장된다.
[2] 자바스크립트 소스 작성
아래 소스의 create_param()함수를 호출하면 {URL} 화면의 HTML소스에서 _scid 값을 가져와서 save_session()함수에서 _scid와 NQSSetSessionValue() 함수를 호출하여 NQ_SESSION변수에 저장한다.
function getRequestObject(){
var options = [
function(){ return new XMLHttpRequest() },
function(){ return new ActiveXObject("Microsoft.XMLHTTP") },
function(){ return new ActiveXObject("Msxml2.XMLHTTP.6.0") }
];
for(var i=0, il = options.length; i < il; i++){
try{ return options[i]() } catch(e) {}
}
}
var url = "issue sql url";
function create_param(){
var xhr = getRequestObject(); if(!xhr){ alert("ERROR"); return; }
xhr.onreadystatechange = function(){
if(xhr.readyState ==4 && xhr.status==200){
var data= xhr.responseText;
idx = data.indexOf("_scid")+7;
_scid = data.substring(idx, idx+100).split("\"")[0];
save_session(_scid); // _scid 넘긴다.
}
}
xhr.open("POST", url);
xhr.send();
}
function save_session(_scid){
var param = '<%=session_param%>'.split(" ").join("+").split("=").join("%3D").split(";").join("%3B");
var sql_param = "call+NQSSetSessionValue%28%27"+param+"%27%29";
var s_url= url + "&_scid="+ _scid+"&SQL="+sql_param+"&LoggingLevel=&UseCache=no";
var xhr = getRequestObject();
if(!xhr){ alert("ERROR"); return; }
xhr.onreadystatechange = function(){
if(xhr.readyState ==4 && xhr.status==200){
goURL('<%=portal_url%>'); // 원하는 URL로 이동
}
}
xhr.open("POST", s_url);
xhr.send();
}
저장된 NQ_SESSION변수는 administration tool 프로그램의 메뉴>세션 창에서 확인이 가능하다.
변수 유형의 "세션 비시스템" 변수들이 NQ_SESSION변수에 저장되는 것들로 보고서에서 참조할때는 VALUEOF(NQ_SESSION.{변수명}) 이런식으로 참조해서 사용이 가능하다.
'Software > BI' 카테고리의 다른 글
obiee 12c 차트 디자인 색깔 바꾸기 (0) | 2022.04.08 |
---|---|
Oracle Analytics Server 12c(OBIEE) Single Sige On(SSO) 처리방법 (0) | 2022.03.27 |