User Tools

Site Tools


universe_by_http

HTTP를 통한 유니버스 접근

관련 변경 사항

  • 최신 빌드(rev 1971)부터 /resource/universe로 HTTP 접속을 통해 유니버스 입출력이 가능합니다.
  • /resource/kpi나 /resource/universe 모두 id 뿐 아니라 key로도 이용 가능합니다. '@'를 앞에 붙이면 id가 아닌 키로 인식합니다 :
    i.e. /resource/universe/U0129, 혹은 /resource/universe/@MY_UNIVERSE
  • 모든 리퀘스트 파라메터는 KPI의 경우와 동일한 규칙을 따릅니다 (i.e. 레포트 파라메터는 '_g_'로 prefix, 일반 파라메터는 '_o_'로… 등등).

데이터 조회

  • GET 요청에 대해서 해당하는 유니버스의 데이터를 xml 형식으로 반환합니다.
  • 데이터 형식은 다음과 같습니다 :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<universe id="U0175" key="PDP재고_그리드" name="PDP재고_그리드" type="CSV_FILE">
    <data dataOffset="0" pageSize="-1">
      <row>
        <value>合計</value>
        <value>30</value>
        <value>1000</value>
      </row>
  </data>
</universe>
  • jQuery를 통해 결과값을 DOM 인터페이스로 직접 조작할 수 있습니다 :
//유니버스의 시스템 아이디.
var universeId = 'U1034';
var url = getContextPath() + "/resource/universe/" + universeId;
 
//검색조건 - 레포트는 '_g_'를, KPI는 '_o_'를 prefix로 사용.
var params = {_g_PARAM1: 'global1', _o_PARAM1: 'param1'};
 
jQuery.ajax( {
  url : url,
  type :'GET',
  data: params,
  async: false,
  dataType: 'xml',
  error: function(request, textStatus, errorThrown){
  },
  success : function(data) {
    // 예 - 첫번째 행의 처음 값 반환.
    var value = jQuery(data).find("row:first value:first").text();
  }
 });
 
 
예제2)
 
var universeId = '18120-SC-03-03';
var url = getContextPath() + "/resource/universe/@" + universeId;
var params = {_g_PARAM1: 'nValue', _o_PARAM1: 'nValue'};
 
jQuery.ajax( {
     url : url,
     type :'GET',
     data: params,
     async: false,
     dataType: 'xml',
     error: function(request, textStatus, errorThrown){
     },
     success : function(data) {
        jQuery(data).find("row").each( function(i) {
          var c = jQuery(this).find("value:eq(0)").text();
          var v = jQuery(this).find("value::eq(1)").text();
        });
     }
    });
}
 
예제3)
그리드 콤보값이 변경되었을 경우 같은 그리드의 동일 행의 다른 컬럼콤보값의 옵션데이타를 변경 시키는 방법
 
this.attachEvent("onEditCell", function(stage,rId,cInd,nValue,oValue){
  if (cInd == 1 && stage == 2) 	{
      var universeId = '18120-SC-03-03';
      var url = getContextPath() + "/resource/universe/@" + universeId;
 
      var combo=grid.getCustomCombo(rId,2);
      combo.clear();
 
      var params = {_g_PARAM1: 'nValue', _o_PARAM1: 'nValue'};
 
      jQuery.ajax( {
         url : url,
         type :'GET',
         data: params,
         async: false,
         dataType: 'xml',
         error: function(request, textStatus, errorThrown){
         },
         success : function(data) {
           jQuery(data).find("row").each( function(i) {
             var c = jQuery(this).find("value:eq(0)").text();
             var v = jQuery(this).find("value::eq(1)").text();
             combo.put(c, v);
            });
            combo.save();
         }
      });
    }
  return true;
});

데이터 입력/수정/삭제

  • POST 요청으로 데이터를 입력합니다.
  • '_action' 이라는 요청 파라메터로 데이터 입력, 수정, 삭제를 구분합니다(각각, 'insert', 'update', 'delete').
  • 알려진 형태의 파라메터(i.e. '_g_'로 시작하는 이름)를 제외한 모든 파라메터를 저장 유니버스의 $dataRow 값으로 간주합니다.
  • jQuery를 통해 호출하는 방법은 다음과 같습니다 :
//유니버스의 시스템 아이디.
var universeId = 'U1034';
var url = getContextPath() + "/resource/universe/" + universeId;
 
//검색조건 및 입력값 - 레포트는 '_g_'를, KPI는 '_o_'를 prefix로 사용.
var params = {_g_PARAM1: 'global1', _o_PARAM1: 'param1', KEY1: 'value1', KEY2: 'value2', _action: 'insert'};
 
jQuery.ajax( {
  url : url,
  type :'POST',
  data: params,
  async: false,
  dataType: 'text',
  contentType: 'application/x-www-form-urlencoded;charset=UTF-8',
  error: function(request, textStatus, errorThrown){
  },
  success : function(data) {
  }
 });
  • 추후 에러처리와 PK 생성값에 대한 보완이 필요합니다. 이 경우 dataType이 'xml'로 변경될 예정입니다.

제약 사항

  • 현재, 유니버스에는 ACL이 적용되지 않기 때문에 /resource/universe/* 주소는 시스템 관리자 역할로만 접근이 가능하게 제한되어있습니다.
  • 프로젝트 별로 이를 변경하려면 사용자 서비스의 /WEB-INF/KONA-context-web.xml의 아래 부분을 제거 하거나 적절히 수정합니다:
<security:intercept-url pattern="/resource/universe/**" access="ROLE_SYSTEM_ADMIN" />
  • 다중값인 오브젝트 파라메터($parameters)에 단일한 값을 넘길 경우 params에 objectId로 매핑되는 KPI 아이디를 넘기지 않으면 다중값으로 인식되지 않습니다.
universe_by_http.txt · Last modified: 2011/01/25 12:14 by fender