티스토리 뷰

반응형

eXERD에는 "용어사전"이란 기능이 있습니다. 물리명, 논리명을 관리해서 다음에 속성(컬럼)을 정의 할때 


이전에 사용한 명명규칙을 빠르게 적용할 수 있게 해주는 기능 입니다.


엔티티에 속성을 추가할 때 용어사전에 있는 논리명을 쓰면 물리명이 자동으로 입력이 되고,  물리명을 입력하면 논리명이 바로 


추가가 됩니다. 



편리한 기능인데 다음과 같은 상황에서는 어떻게 할 수 있을까요?


이미 다수의 엔티티와 속성을 모두 정의해 둔 상태에서 "용어사전"를 대폭 수정한 경우



CASE 1) 용어사전에 있는 논리명 기준으로 이미 정의한 엔티티의 물리명을 용어사전에 있는 물리명으로 변경할 필요가 

            

                있는 경우입니다. 


               이때는 다이어그램 메뉴에서 "용어사전 편집"이란 기능을 이용하면 용어사전에 정의된 논리명에 해당하는 물리명으로 


               속성값을 한번에 모두 변경할 수가 있습니다. 


ex) 엔티티:  START_DT  시작일자


       용어사전:ST_DT    시작일자


엔티티의 "START_DT" -> "ST_DT"로 일괄 변경하고자 하는 경우입니다.



CASE 2) 반대로 용어사전에 있는 물리명 기준으로 엔티티 속성의 논리명을 용어사전의 논리명으로 변경하고자 할 때 입니다.


ex) 엔티티: START_DT    시작일


       용어사전: START_DT    시작일자


용어사전의 논리명으로 엔티티에 정의된 "시작일" -> "시작일자"로 한번에 변경해야 할 경우.


아쉽게도 CASE 1은 툴에서 기능을 지원하지만 CASE 2는 지원하지 않습니다.


즉, eXERD는 논리명을 기준으로 용어를 맞추도록 디자인되어 있음을 알 수 있습니다.


그래서 CASE 2와 같은 상황에서 수십~ 수백 엔티티를 수정해야 할 경우에는 xscript를 사용하면 쉽게 해결이 됩니다.


저는 xscript를 2개 생성해서 해결 했습니다.


첫번째 xscript는 용어사전에서 아래와 같이 물리명/논리명을 파일로 저장하는 스크립트 입니다.


            "물리명:논리명",

            "START_DT:시작일자",


             자바스크립트에서 배열에 담기 위해서 위와 같은 형태로 저장하는 것입니다.


두번째 xscript는 위에서 저장한 데이터를 배열로 선언하고, 모든 컬럼에 대해서 속성값의 물리명을 가져온 다음

             

            배열에 일치하는 물리명이 있을 경우, 해당하는 논리명을 가져와서 엔티티의 속성의 논리명으로 업데이트 하는 스크립트

           

            입니다.




첫번째 스크립트:  termToArray.xs


var file = promptSaveFile();

var out = file.getOutputStream();


var i = 1;


select(function(it) { 

return it.get("type") == "term"

}).each(function(it) {

if (i > 1) out,printf(",");


out.printf(" '%s':'%s' \n", it.get("physical-name"), it.get("logical-name"));


i++

});


out.close()

file.openInEditor();



두번재 스크립트: arrayToCols.xs


var gArr =

{

/* 첫번째 스크립트 결과 문자열을 붙여 넣을 것 */



};


var columns = select (function(it){

return it.get("type") == "column"

});


monitor.beginTask("처리중....", columns.size());


columns.each(function(it) {

var nm = gArr[it.get("physical-name")];


if (nm !=  null) {

it.set("logical-name", nm);

}


       monitor.worked(1);


       if(monitor.isCanceled()){

exit();

}

});


monitor.done();






xscript 기능이 없었다면 변경해야 할 엔티티와 속성의 수 만큼 손가락에 쥐가 나도록 노동을 해야할 것입니다.


eXERD를 사용하고 계시는 분들은 꼭 xscript 기능을 활용해 보세요. 


시간을 정말 많이 절약해 주고 모델링이 더 즐거워 집니다.


많은 장점이 있는 xscript 기능이지만 한가지 아쉬운게 있습니다.


바로 파일을 쓸 수만 있고, 읽을 수는 없습니다.  API문서에도 OutputStream만 있으며, 라이브러리를 디컴파일해서 보았는데


역시 읽는 기능은 구현이 안되어 있었습니다.


com.tomato.exerd.xscript.io.XFile



심심하고 시간이 있을 때 한번 기능을 추가해 볼까도 생각 중입니다. 


얼핏 소스를 보았는데 가능할 것 같기도 하더군요. 


eXERD를 개발하신 분들은 파일에서 읽는 기능은 필요 없다고 생각하신 모양입니다.


하지만 직접 툴을 사용하는 입장에서는 파일을 읽을 수 있다면 더 다양한 방법으로 업무 시간을 줄일 수 있을 것 같습니다.


--  끝 --










반응형