해당 문서의 내용은 XPLATFORM을 이용하여 Application 개발시 기본적으로 알고 있어야 할 지식을 정리하였습니다. 따라서 고객사의 상황에 따라 설정값 등 구현방법은 달라질 수 있으므로 개발시 참고용으로 사용하시기 바랍니다.
xadl/Style/Themes/TypeDefinition
XPLATFORM STYLE 적용 순서
XPLATFORM에서 STYLE은 테마, CSS파일, Properties, 스크립트에서 지정을 할 수가 있는데 이때 적용되는 순서에 대하여 설명합니다
Xtheme 값
ADL에 CSS 설정된 값
Form 에 CSS 설정된 값
Properties 에 설정된 값
Script에서 속성값 변경
반영되는 순서는 위와 같고, 각 파일에 같은 항목이 있을 경우는 아래에 있는 값이 적용됩니다. 즉, xtheme에 Button에 대한 정의가 2개 이상 있을때 위에서부터 차례로 적용되어 제일 아래에 있는 값이 overwrite 되는 형식으로 적용됩니다.
ex) Button { align : left top; visible : true; } Button { visible : false; } 위와 같이 같은 css 2개가 연달아 있는 경우 최종적으로 Button { align : left top; visible : false; } 로 적용이 됩니다.
Style 적용순서가 어떻게 되나요?
XPLATFORM의 Definition 의 버전정보 표현방법
XPLATFORM의 기본 TypeDefinition의 버전은 1000으로 되어 있는데 버전 변경시에는 각 모듈(dll 등)의 파일버전을 기술해 주면 됩니다.
예) CyActiveX.dll : 2009,10,19,1
TypeDefinition의 버전정보 표현방법
xadl 파일에서 참조되는 값을 동적변경방법
xadl 파일에서 참조되는 값들을 동적으로 변경하고자 할때는 xadl을 jsp 로 감싸서 변수처리 하실 수 있습니다.
<%@ page contentType="text/xml; charset=utf-8" %><% String path = request.getParameter("a"); %><?xml version="1.0" encoding="utf-8"?> <ADL version="1.0"> <TypeDefinition url="default_typedef.xml"/> <GlobalVariables url="globalvars.xml"/> <Application id="test_20100623" codepage="utf-8" language="Korean" themeid="default.xtheme" loginformurl="" loginformstyle="" windowopeneffect="" windowcloseeffect="" version="" onload="application_onload" filesecurelevel="all" networksecurelevel="all"> <Layout> <MainFrame id="mainframe" title="maintitle" defaultfont="" resizable="true" showtitlebar="true" showstatusbar="true" position="absolute 0 0 1024 768" titletext="test" onactivate="MainFrame_onactivate"> <VFrameSet id="VFrameSet0" separatesize="125,*"> <Frames> <ChildFrame id="ChildFrame0" showtitlebar="false" formurl="Base::top.xfdl" position="absolute 0 0 0 125"/> </Frames> </VFrameSet> </MainFrame> </Layout> </Application> <Script type="xscript4.0"><![CDATA[ function application_onload(obj:Object, e:LoadEventInfo) { var a = "<%=path%>"; alert(a); } ]]></Script> </ADL>
사용자에 따라 xadl에서 참조되는 값이 다른 경우 처리 방법은?
TypeDefinition에 정의된 Service 정보 확인
XPLATFORM 환경파일 TypeDefinition에 정의된 Service정보를 얻는 방법에 대해 기술합니다.
설명
소스
for(var i=0; i<application.services.length; i++) { trace(application.services[i] + " : " + application.services[i].url); } [ 결 과] [object Service] : ./Base/ uxs (1108): [object Service] : http://211.241.150.135:8080/Next_JSP/CS_XPLATFORM_MGR/ uxs (1108): [object Service] : ./script_lib/ uxs (1108): [object Service] : ./UserComponent uxs (1108): [object Service] : ./TabPage/ uxs (1108): [object Service] : ./Grid/ uxs (1108): [object Service] : ./ListBox/ uxs (1108): [object Service] : ./Animation uxs (1108): [object Service] : ./CheckBox uxs (1108): [object Service] : ./Splitter uxs (1108): [object Service] : ./Dataset uxs (1108): [object Service] : ./Excel/ uxs (1108): [object Service] : ./Shape/ uxs (1108): [object Service] : ./Calendar uxs (1108): [object Service] : ./Combo uxs (1108): [object Service] : ./Radio uxs (1108): [object Service] : ./PopupDiv uxs (1108): [object Service] : ./Div uxs (1108): [object Service] : ./Form uxs (1108): [object Service] : ./script uxs (1108): [object Service] : ./ProgressBar uxs (1108): [object Service] : ./Spin uxs (1108): [object Service] : ./Button
TypeDefinition에 정의된 Services정보를 얻을 수 있나요?
Cache기능
XPLATFORM의 디폴트 Cache방식
XPLATFORM에서 사용하는 디폴트 Cache방식에 대해 기술합니다.
UxStudio의 Cache설정방법
XPLATFORM의 Cache를 설정하지 않을 경우 디폴트 Cache방식은 dynamic을 사용합니다.
참고사항
UxStudio에서 Quick등을 통해 실행시에는 none으로 동작을 하지만 실제 XPLATFORM환경에서 실행시 디폴트 Cache방식은 dynamic를 사용하므로 간혹 UxStudio와 서버에 반영하여 실행시 데이터 조회시 Transaction이 한번만 실행되는 경우가 발생합니다.
화면의 경우 dynamic으로 설정해도 문제는 되지 않으나, 서비스 부분은 반드시 Cache를 none으로 설정을 해주어야 합니다.
Cache설정방법
XPLATFORM 디폴트 Cache가 어떻게 되나요?
XPLATFORM 통신
통신방식
2011년 7월이전 버전의 경우 XPLATFORM만의 자체 통신방식을 사용하였으나, 2011년 7월 이후버전 부터는 WinInet 통신방식을 사용합니다.
WinInet 통신이란 : MS에서 제공하는 MFC모듈로 Window32 기본 클라이언트 쪽에서 인터넷의 표준 프로토콜인 HTTP, Gopher, FTP 등을 지원합니다.
XPLATFORM의 통신방식은 무엇인가요?
XPLATFORM 통신시 사용자가 ESC키를 눌러 통신을 중단시키는 것을 막는방법
통신시 사용자가 ESC키를 눌러 통신을 중단시키는것을 막는 방법입니다.
구현방법
ADL의 onerror 구현
XPLATFORM Project를 오픈 한 후 ADL의 onerror에서 아래아 같이 기술해 주시면 됩니다.
소스 예) ADL의 onerror에서 아래와 같이 하여 주시면 됩니다. function application_onerror(obj:Object, e:ErrorEventInfo) { if( e.errorcode == "-2147418039" ){ //ESC키를 눌렀을때 들어오는 ErrorCode return true; } }
참고사항
XPLATFORM에서Transaction(서비스)을 호출 후 키보드 ESC키를 누르게 되면 통신이 중단됩니다.
이 경우 데이타 조회가 끝나지 않는 상태에서 버튼을 누르게 되면 값이 정상적으로 표현이 되지 않습니다.
이를 막기 위한 방법입니다.
XPLATFORM에서통신시 사용자가 ESC키를 눌러 통신을 중단시키는것을 막는 방법
XPLATFORM 확장자(xdemo.xadl, globalvars.xml, default_typedef.xml) 등을 변경시 참고사항
XPLATFORM에서 사용하는 확장자 xadl, xml등의 확장자를 반드시 동일하게 사용할 필요는 없습니다. 즉 확장자를 jsp형태로 사용이 가능합니다. 단 XPLATFORM이 지원하는 데이터 포멧 형태를 유지해야 합니다.
주의사항
TypeDefinitaion의 확장자를 변경하게 되면 모든 화면소스를 수정해야 하므로 가능한 Typedefinitaion의 확장자는 변경을 하지 않기를 권장합니다.
만약 확장자를 변경하게 되면 소스를 변경해야 하는 문제가 발생합니다.
<?xml version="1.0" encoding="utf-8"?> <FDL version="1.2"> <TypeDefinition url="..\..\default_typedef.xml"/> // 확장가 변경되면 모든 소스 변경발생 <Form id="Button_Basic" classname="Button_Basic" inheritanceid="" cachelevel="" position="absolute 0 0 761 430" version="" titletext="New Form"> <Layout> <Static id="Static05" text="Binding" class="sta_WF_subtitle" position="absolute 15 15 298 30"/> <Grid id="Grid01" taborder="1" binddataset="Dataset00" autofittype="col" position="absolute 27 42 170 140"> <Formats> … 중략…
XPLATFORM의 확장자 변경이 가능한가?
IE브라우저에 임베드시 ActiveX 최대 크기
IE브라우저에 XPLATFORM을 임베드 하는 경우 ActiveX 크기는 최대 IE임베디드시 height를 33000이상으로 커지지가 않습니다
사용 예) //Xplatform소스 div_workMain.position.height = div_workMain.Edit00.value; this.position.height = 35000; //<- 이 부분 this.resetScroll(); application.userNotify("1",div_workMain.Edit00.value);
해당 내용은 XPLATFORM뿐 아니라, ActiveX형태의 컴포넌트는 제약을 가집니다
ActiveX 최대 크기가 33000이상 커지지 않습니다.
XPLATFORM 소스 컴파일(Compiled XML)방법
XPLATFORM으로 개발된 Application을 운영시 소스 1차 보안 및 사이즈를 최소화 하기 위한 방법으로 컴파일 기능을 통해 작업이가능합니다. 컴파일시 주의사항 및 작업방법을 기술합니다.
작성된 Application 소스 컴파일을 권장하는 이유
XPLATFORM 으로 개발된 화면 및 스크립트를 작성하게 되면 XML과 자바스크립트 형태로 소스가 생성됩니다. 이때 웹브라우저를 통해 접근시 소스가 보이게 됩니다.
위와 같이 URL로 접근시 소스가 보이는 문제가 있을 수 있습니다. (해당 소스는 마이플랫폼 구조를 알아야 소스 파악을 할 수는 있으나, 해당 소스 노출시 문제가 발생할 수 있는 부분에 대한 사전 보안작업이라 할 수 있겠습니다.)
소스 최적화
소스를 컴파일하게 되는 경우 바이너리 압축형태의 소스가 컴파일 되므로 컴파일 작업을 하지 않았을 때 보다 최대 약 60~ 80% 가량 사이즈가 작게 됩니다.
소스 컴파일 전 사이즈 및 소스형태
소스 컴파일 후 사이즈 및 소스형태
소스 컴파일 방법 (전체 프로젝트)
컴파일 하고자 하는 Project를 오픈합니다.
Project 오픈 후 UxStudio 메뉴 중 File->Save the Project as Compiled XML 메뉴를 선택합니다.
컴파일된 소스를 저장할 폴더(생성)를 선택한다.
폴더를 선택하게 되면 현재 오픈한 Project의 모든 소스에 대한 폴더정보가 표시됩니다.
OK버튼을 누르게 되면 하단과 같이 Output창에 컴파일 진행상태가 표시되며 작업이 완료되면 확인창이 오픈됩니다.
최종 컴파일 작업이 완성된 결과는 탐색기를 통해 확인이 가능합니다.
XPLATFORM Client License 컴파일 방법
XPLATFORM Client License 파일은 기본 포멧이 XML로 표시으로 발급이 되고 있습니다. 해당 파일 포멧일 컴파일 하는 방법에 대해 기술합니다.
컴파일 방법
UX-Studio 상단 메뉴바 에서 File -> Save as Compiled XML -> Project 선택
Compiled 이 되어 output 될 폴더를 선택 생성 및 선택 합니다.
Compile xml path 팝업 창에서 하단에 추가 버튼을 클릭한 뒤에 Client License 를 추가 후에 ok 버튼을 클릭합니다.
* Compile 된 output 폴더에 확인 시에 XPLATFORM_Client_License.xml 이 생성이 된것을 확인 하실수가 있습니다. (xml 파일을 open 해서 확인 시에 Comiled 된 것을 확인 하실 수가 있습니다.)
해당 파일에 내용은 기본 프로젝트명, 도메인, IP정보 등이 포함되어 있습니다.
Compiled결과
Compiled 전
Compiled 후
컴파일 작업시 주의사항
XPLATFORM 소스를 한번 컴파일 한 후에는 원본 소스를 반드시 따로 관리 하셔야 합니다.
즉 한번 컴파일 된 소스는 원복되지 않습니다.
XPLATFORM 소스에 대한 개별 컴파일은 지원되지 않습니다. (2012년2월29일 기준)
Application 소스 컴파일 방법
화면 소스 컴파일 방법
라이센스 컴파일
Client License컴파일 방법
XPLATFORM에서 스크립트를 이용한 Application을 종료하는 방법
XPLATFORM Application을 종료하는 방법은 exit(); 메소들 통해 종료가 가능합니다.
//사용 예) application.exit();
XPLATFORM 스크립트를 이용한 Application 종료방법
부동소수점 처리방법
XPLATFORM에서 소수점 이하 계산시 부동소소점 처리방법에 대해 기술합니다.
Runtime, Ajax의 차이점 (Runtime 전용처리)
Round 함수의 경우, Runtime은 소수점이하 round를 지원하지만, Ajax는 ECMA표준에 맞추어 소수점이하는 지원하지 않습니다.
Math.round(nNumber[, nFractionDigit]) : Runtime Math.round(nNumber) : Runtime,Ajax nFractionDigit > 0 : 주어진 소수점 자릿수에 반올림 nFractionDigit <= 0 : 0자리 소수점 자릿수에 반올림
Runtime의 경우, nFractionDigit의 range에 따라 소수점이하가 처리됩니다.
HTML5의 경우 현재 미지원이지만, 추가로 지원될 예정입니다.
JavaScript의 Round 처리방식 (HTML5/Runtime 공용처리)
소수점이하/정수자릿수를 포함한 Round의 부동소수점 오차보정처리방식은 다음과 같은 script를 사용합니다.
function roundDight(n, digits) { if (digits >= 0) { return parseFloat(n.toFixed(digits)); } else { digits = Math.pow(10, digits); var t = Math.round(n * digits); // digits; return parseFloat(t.toFixed(0)); } } nFractionDigit >= 0 : 주어진 소수점 자릿수에 반올림 nFractionDigit < 0 : 정수부 자릿수에 반올림
Runtime이 제공하는것과 동일한 처리는 다음과 같습니다..
function roundDight(n, digits) { if (digits > 0) { return parseFloat(n.toFixed(digits)); } else { return parseFloat(n.toFixed(0)); } } nFractionDigit > 0 : 주어진 소수점 자릿수에 반올림 nFractionDigit <= 0 : 0자리 소수점 자릿수에 반올림
소수점 계산시 값이 이상합니다.
XPLATFORM 값 전달방법
웹 쿠키
웹브라우저의 쿠키 정보를 XPLATFORM에 전달방법
웹브라우저를 실행하여 XPLATFORM을 실행하는 경우 브라우저 쿠키 정보를 전달해 주고자 하는 경우에 대해 설명합니다.
메소드 설명
addWebInfo() : 현재 브라우저의 쿠키정보를 자동으로 globalvariable의 cookie변수에 추가해 주는 Method입니다.
//전용브라우저에 전달 XPLauncher.addWebInfo(); //Launcher에 메소드 추가 // 임베드 형태의 전달방법 XPlatformAX.addWebInfo(); // IE브라우저에 임베드시 메소드 추가 방법 소스 예) document.cookie="CookieName=Value"; //document.cookie="CookieName=Value,ID=userid,NAME=name"; XPlatformAXCtrl.key = sKey; XPlatformAXCtrl.xadl = Server_Path + "/XFInfo.xadl"; XPlatformAXCtrl.usewininet = true; XPlatformAXCtrl.addWebInfo(); //<--- run 실행전에 설정해 주어야 합니다. XPlatformAXCtrl.run();
XPLATFORM에서 값을 확인하고자 할 경우에는 alert(CookieName)를 통해 확인할 수 있습니다.
참고사항
addWebInfo를 통해 추가되는 Global변수의 usecookie속성은 true로 설정됩니다.
XPLATFORM 실행중인 전용브라우저에 값 전달방법
IE브라우저에서 XPLATFORM을 전용브라우저로 실행시킨 후 실행중인 상태에 값을 전달하는 방법에 대해 기술합니다.
XLauncher.onlyone을 true 설정하여 하나의 전용브라우져만 뜨도록 설정하고 떠있는 전용브라우져에 값 전달은 XLauncher.globalvalue에 셋팅한 변수값으로 전달됩니다.
adl의 onduplicateexcution 이벤트에서 e.arguments로 GlobalValue의 Collection 객체를 받을 수 있습니다.
XLauncher 속성 onlyone
onlyone : 전용브라우저 실행을 한번만 실행하도록 설정하는 옵션
XPLATFORM의 onduplicateexcution 이벤트
이미 XPlatform이 onlyone으로 실행된 상태에서 Launcher를 통해 한번 더 onlyone으로 실행시 Launcher에 설정한 globalvalue값이 먼저 실행된 Instance에 전달됩니다.
//전용브라우져를 띄우는 html XLauncher.globalvalue = "GV_1:g='A',GV_2:g='B',GV_3:g='C',GV_4:g='D',GV_5:g='E',"; XLauncher.xadl = "C:\\aa.xadl"; XLauncher.onlyone = true; XLauncher.download(); XLauncher.launch(); // 전용브라우저 구동
//adl의 onduplicateexcution 이벤트 최초 GlobalValue 값은 adl의 onload 이벤트에서 아래와 같이 GV_1, GV_2와 같이 꺼낼 수 있습니다. function application_onduplicateexcution(obj:Object, e:DuplicateExcutionEventInfo) { var temp =e.arguments; // GlobalValue의 Collection Property 입니다. alert("onduplicateexcution Event"); for (var i=0; i <temp.length;i++){ alert("::::::::::id:"+temp[i].name+"::::::::::value:"+temp[i].value); } }
실행중인 Application에 값을 전달 할 수 있는가?
엑스플랫폼에서 IIF, DECODE 사용방법
엑스플랫폼에서 IIF, DECODE 구문 사용 방법입니다.
엑스 플랫폼에서는 마이플랫폼의 IIF, DECODE 와 같은 메소드가 제공되지 않습니다. 이를 구현하기 위한 방법입니다.
IIF 구문은 자바스크립트의 삼항연산자를 사용합니다.
형식 a condition ? X : Y
(1) Condition은 조건을 나타내는 식이 온다. (2) X는 조건이 참일 때 수행할 수식 (3) Y는 조건이 거짓일 때 수행할 수식
사용 예) Column0 == “a” ? “a입니다.” : “a가 아닙니다”
DECODE 구문은 자바스크립트의 삼항연산자를 중첩하여 사용합니다.
형식 a condition ? X : condition ? Y : Z
사용 예) Column0 == “a” ? “a입니다.” : Column0 == “b” ? “b입니다.” : “a,b 모두 아닙니다.”
IIF문과 DECODE 역할을 하는 함수로 만들어 사용합니다.
/******************************************************************************* ★ 설명 iif 비교 함수크 ★ Parameter 1. arg0 : true / false 를 판단 하는 값 ( 예 : 1 == 2 ) 2. arg1 : true 일경우 리턴 3. arg2 : false 일경우 리턴됨) ★ return - true 일경우 arg1 리턴 - false 일경우 arg1 리턴 ******************************************************************************/ function iif() { var varRtnValue = null; var arrArgument = iif.arguments; if(arrArgument[0]) { return arrArgument[1]; } else { return arrArgument[2]; } } /******************************************************************************* ★ 설명 decode 비교 함수 ★ Parameter 1. arg0 : 비교 할 변수 2. arg1 : 비교 대상 변수 3. arg2 : 비교 대상 변수가 같을 경우 리턴할 값 4. 반복.. ★ return - 비교 대상 변수가 같을 경우 값 리턴 ******************************************************************************/ function decode() { var varRtnValue = null; var arrArgument = decode.arguments; var varValue = arrArgument[0]; var bIsDefault = false; var nCount = 0; if((arrArgument.length % 2) == 0) { nCount = arrArgument.length - 1; bIsDefault = true; } else { nCount = arrArgument.length; bIsDefault = false; } for(var i = 1; i < nCount; i+=2) { if(varValue == arrArgument[i]) { varRtnValue = arrArgument[i+1]; i = nCount; } } if(varRtnValue == null && bIsDefault) { varRtnValue = arrArgument[arrArgument.length-1]; } return varRtnValue; }
XPLATFORM 구동시 이미지, 조회시 이미지 변경
XPLATFORM 구동시 기본 splashimage, loadingimage를 변경하는 방법입니다.
Splashimage : Application이 구동될 때 보여주는 이미지를 설정하는 Property입니다.
Loadingimage : Application이 화면, Data 로딩시 보여주는 이미지를 설정하는 Property입니다.
상세설명
Index.html 초기 구동 파일에서 해당 설정(전용브라우져)
var XPLauncher = document.getElementById("XPLauncher"); XPLauncher.splashimage = “http://www.miplatform.co.kr/splashimge.gif”; XPLauncher.loadingimage= “http://www.miplatform.co.kr/loadingimage.gif”; XPLauncher.xadl = “http://www.miplatform.co.kr/test.xadl”; XPLauncher.key = “testkey”; XPLauncher.download(); XPLauncher.launch();
Index.html 초기 구동 파일에서 해당 설정(임베디드).
임베디드의 경우 해당 프로퍼티가 없기 때문에 앞에 미리 호출이 필요합니다.
var XPLauncher = document.getElementById("XPLauncher"); XPLauncher.splashimage = “http://www.miplatform.co.kr/splashimge.gif”; XPLauncher.loadingimage= “http://www.miplatform.co.kr/loadingimage.gif”; XPLauncher.xadl = “http://www.miplatform.co.kr/test.xadl”; XPLauncher.key = “testkey”; XPLauncher.download(); var XPlatformCtrl = document.getElementById("XPlatformCtrl"); XPlatformCtrl.xadl “http://www.miplatform.co.kr/test.xadl”; XPlatformCtrl.key = testkey”; XPlatformCtrl.autosize = false; XPlatformCtrl.run();
도움말
UXSTUDIO의 help를 활용합니다.
주의사항
UXSTUDIO에서는 splashimage와 loadingimage 가 기본 이미지로 나오게 됩니다.
나오지 않게 하기 위해서는 null.gif등의 빈 이미지를 생성해서 호출해야 합니다.
splashimage와 loadingimage 설정방법
임베디드에서 설정 하는 방법
frame 동기화 처리 방법
Frame의 로딩 순서가 랜덤하게 결정되어 sync 문제가 생길 경우 동기화시킬 수 있는 방안.
폼이 Load시 ASync방식으로 동작을 하기 때문에 시간차가 발생하는 경우입니다.
만약 다른 Frame에 함수를 호출하는 경우에 처리할 수 있습니다.
1). Global변수에 Count변수를 선언합니다. 예: gFCnt=0; 2). 프레임 정의 상단 프레임이 A라 가정하고 실제 함수가 포함되어 있다 가정 B프레임 실해 함수를 호출하는 프레임이라 가정 A의 프레임의 onLoad이벤트에서 다음과 같이 체크 if(gFCnt==1) { //B프레임이에서 이미 호출을 한번 했었다는 의미 그럼 자기자신의 함수를 호출 해줌 } else { gFCnt=1; //아직 B에서 호출하기 전 } B의 프레임의 onLoad이벤트에서 다음과 같이 체크 if(gFCnt==1) { //A가 정상적으로 먼저 Load가 된 경우 그럼 자기자신의 함수를 호출 해줌 } else { gFCnt=1; //아직 A가 호출하기 전 } 위와 같이 처리를 하면 반드시 순서에 상관없이 실행이 가능합니다. 즉 원하는 페이지가 Load되었으면 함수를 호출하고 Load된 이면 gFCnt에 값 1로 변경해 주고 해당 페이지가 Load되면 자기 자신의 함수를 호출해 주는 것입니다. 만약 반드시 B프레임에서 호출을 해야 하는 경우라면 A프레임에서 자기자신을 호출하는 것이 아니라 B프레임이 함수를 호출하여 다시 실행되도록 하면 되겠습니다.
Frame 동기화 방법
Alert 창에서 타이틀이 한글이 깨져서 나올때
Alert창 confirm창에서 타이틀이 한글이 특수문자로 깨져서 나올 때 대처방법에 대해 기술합니다.
현상
해당 현상은 alert창 만이 아닌 css에서 한글로 된 부분은 모두 깨져서 나오게 됩니다.
원인
css파일을 에디터에서 수정하여서 나오는현상입니다. 캐릭터셋이 맞지 않음
해결방법
원본css파일이 있다면 다시 복구 하고 툴에서 css를 수정합니다.
에디터로 열어서 utf8로 변환합니다.
Alert 타이틀이 깨져서 나옵니다.
Css 한글이 깨져서 나옵니다.
XPLATFORM 개발(Trial) 라이선스 사용방법
XPLATFORM을 구입 후 고객사에서 개발시 개발자(PC)에서 개발을 하기 위해 (Trial)버전을 사용하는 경우가 있습니다. 이때 개발 라이센스에 대한 업데이트 주기 및 적용방법에 대해 기술합니다.
개발 라이선스가 필요 한 이유
XPLATFORM을 개발시 최근 개발환경이 Client, Server형태로 나누어 환경구성을 하지 않고 개발자 PC에서 Client(UxStudio)와, Server환경 (WAS 설치 후 Service API설치)을 구축하여 개발을 합니다.
이 때 라이선스는 서버(운영 서버정보)를 대상으로 라이선스를 발급하므로, 개발자 PC에서는 사용이 불가능합니다.
즉 개발자 PC에서 서버(운영 서버정보) 라이선스 정보를 사용하지 못하므로 개발(Trial)버전을 사용합니다. (개발자용 라이선스를 별도 발행하지 않습니다.)
개발 라이선스 다운로드 위치
개발 라이선스 다운로드 위치는 다음과 같습니다
1) www.xplatform.co.kr (www.miplatform.co.kr) 접속
2) 로그인
3) 위치 - Download -> XPLATFORM
- 기타배포 페이지
- 다운(아이콘)을 눌러 아래 화면이 나오면 [다운로드 받기] 를 통해 다운로드 가능합니다.
- 다운로드 받아 압축을 해제 하면 다음의 파일정보를 확인할 수 있습니다.
파일명 | 설명 | 비고 |
---|---|---|
XPLATFORM_Client_License.xml | Client 라이선스 (ADL접속시 사용) | 2011년1월 이후 사용자 |
XPLATFORM_Client_License_201012 | Client 라이선스 (ADL접속시 사용) | 2010년12월 버전 사용자 |
XPLATFORM_License.xml | UxStudio 라이선스 정보 및 각 파일에 대한 간략설명 첨부 | |
XPLATFORM_Server_License.xml | Server 라이선스 |
라이센스는 크게 3개의 파일이 제공됩니다.
1) XPLATFORM_Client_License.xml
해당 파일은 프로그램을 개발하여 WEB서버에 올리는 파일입니다.
즉 UxStudio를 이용하여 개발시에는 UxStudio에서 라이센스가 체크되므로 라이센스 체크가 가능하나 TOOL를 통해 개발이 완료되면 WEB서버에 올려 일반사용자가 사용할 수 있도록 하게 되는데 이때 라이센스를 체크하기 위해 필요합니다.
주로 해당 라이센스 파일은 WEB서버의 소스 ADL경로에 위치하게 됩니다.
(위치는 고객사의 소스 위취 정책에 따라 변경될 수 있음)
2) XPLATFORM_Service_License.xml
해당 파일은 X-API에 대한 라이센스를 체크하는 파일입니다.
따라서 X-API를 사용하게되는 WAS서버에 위치하게 되면 X-API가 위치한 폴더에 함께 위치합니다.
(위치는 고객사의 소스 위취 정책에 따라 변경될 수 있음)
3) XPLATFORM_License.txt
해당 파일은 UxStudio를 사용할 수 있는 라이센스 정보가 기록되어 있습니다.
개발 라이선스 변경 주기
본 라이센스는 2개월 동안 사용이 가능하며, 매월 첫주에 갱신된 파일이 첨부됩니다.
XPLATFORM 라이선스 갱신방법
XPLATFORM 라이선스 갱신주기
정식라이센스와 개발라이센스는 무엇이 다른가?
라이센스에 따라 제품의 기능 제약은 발생하지 않습니다. 다만 제품을 구매한 고객사에서 구매담당자와 개발담당자가 분리되어 있는 경우가 많아 라이센스를 확인이 어려워 이를 조금이나마 해결하고자 개발라이센스를 발행하고 있습니다.
정식라이센스와 개발라이센스의 다른점은?
라이센스가 만료되면 어떻게 되나요?
해당 내용은 2013년 10월29일자를 기준으로 다릅니다. 2013년10월29일 이전 버전의 경우 라이센스 만료 및 장애발생시 Application 즉 프로그램을 사용할 수 없게 됩니다. 그러나 2013년10월29일 이후 버전부터는 라이센스 오류가 발생하게 되면 Application은 가능하나 실행시마다 라이센스 만료 오류메시지가 한번씩 출력이 됩니다. 그러나 시스템을 사용할 수 없도록 멈추지는 않습니다.
Client (XPLATFORM) 오류메시지
Server(X-API) 오류메시지
적용버전
Client (Tool) 버전 : 2013년 10월29일 버전 이상
Server (X-API) 버전 : 2013년4월30일 버전 이상
개발라이센스 또는 라이센스 장애가 발생하게 되면 어떤증상이 발생하나요?
XLauncher
loadingimage, splashimage 안보이게 하는 방법
XPLATFORM에서 실행시 loading, splash이미지를 보이지 않토록 설정하는 방법을 알아봅니다.
아래와 같이 설치페이지에서 loadingimage, splashimage 속성에 유효하지 않은 경로를 지정하여 주시면 됩니다.
index.html 설정 예) XLauncher.loadingimage = "null" XLauncher.splashimage = "null" XLauncher.download();
loadingimage, splashimage 안보이게 하는 방법
XPlauncher의 onlyone기능
XPLATFORM에서 제공되는 모듈 XPLauncher의 onlyone속성에 대해 알아봅니다.
onlyone 속성
XPLATFORM 실행을 한번만 하고자 할 경우 XPLauncher의 속성 중 onlyone를 true설정하면 실행을 한번으로 제한할 수 있습니다.
한번 실행된 Applocation을 재 실행시 또 다른 Application이 실행되지 않고 이미 실행된 화면을 보여주게 됩니다.
index.html 설정 예) XLauncher.key = "AAAA"; XLauncher.xadl = xapl_Path; XLauncher.onlyone = true; XLauncher.download(); XLauncher.launch(); // 전용브라우저 구동
XPLATFORM 실행을 한번만 할 수 있나요?
대용량 처리
firstrow 방식 이용한 샘플 (HttpPartPlatformResponse 사용)
HttpPartPlatformResponse객체를 이용하여 전송을 하며 Dataset생성하기 전에 ErrorCode와 ErrorMsg를 sendVariable해야 합니다.
// HttpPartPlatformResponse 생성 //HttpPartPlatformResponse res = new HttpPartPlatformResponse(response, PlatformType.CONTENT_TYPE_BINARY); HttpPartPlatformResponse res = new HttpPartPlatformResponse(response, PlatformType.CONTENT_TYPE_XML); int nErrorCode = 0; String strErrorMsg = "SUCC"; res.sendVariable( Variable.createVariable("ErrorCode", nErrorCode)); res.sendVariable( Variable.createVariable("ErrorMsg", strErrorMsg));
http://www.miplatform.co.kr/faq/data/docs/FirstRow_XPLATFORM_Sample.zip
Firstrow_partResponse.xfdl : XPLATFORM 소스 xp_partResponse.jsp : 서비스 jsp소스
//XPLATFORM 소스 중 JSP경로 변경 필요 var const_url="http://localhost:8080/MiAPI/"; var arrTimes ; var startTime ;
폴더권한문제
파일 읽기/쓰기 작업
XPLATFORM 에서는 데이터 쓰기/읽기 작업시 Personal 폴더 에서만 가능합니다. (XPLATFORM은 SandBox개념에 준하여 보안정책을 지원합니다. )
상세설명
로컬 pc의 파일을 읽기/쓰기 작업시 "내문서" 폴더인 경우만 가능 합니다. (ADL의 filesecurelevel 속성값이 private 인 경우 - Default값) "내문서"를 제외한 경로도 접근하여 작업이 가능하나 "filesecurelevel" 속성값 이 "all" 로 설정되어 있어야 합니다. "내문서" 이외의 경로 접근시는 사용자에게 "안전하지 않은 파일에 접근합니다.\n계속 진행하시겠습니까?"라고 접근 여부를 물어보는 confirm 창이 뜨게 됩니다.
체크박스에 체크시 이후부터는 confirm창이 뜨지 않으나 최초 한번은 무조건 뜨게 됩니다.
파일 읽기/쓰기 작업시 반응이 없습니다.
엑셀 export시 "export error"가 발생 됩니다.
파일 작업시 confirm 창을 띄우고 싶지 않음
로컬 pc에 파일 작업시 "안전하지 않은 파일에 접근합니다.\n계속 진행하시겠습니까?"라고 물어보는 확인창 없이 작업을 하고 싶은 경우의 우회 방법 입니다.
상세설명
XPALTFORM 에서는 Personal 폴더(내문서) 이외의 경로에 접근시 뜨는 확인창을 제어할 수는 없습니다. (보안상의 이유로 임의 제어를 할수 없습니다.) 이 경우 ExtCommon 파일을 이용하여 우회 처리를 할 수가 있습니다. 우선 "내문서"폴더로 파일 작업을 한 후 실제 지정한 target 폴더로 해당 파일을 옮기게 하여 작업을 하시면 됩니다.
소스코드
var DownObj; var downFolder = FileDialog00.open("file download",FileDialog.SELFOLDER); // 폴더 선택 var objExt = new ExtCommon; DownObj = objExt.readFile(system.convertRealPath("%DOCUMENT%")+파일명,"OBJ"); objExt.writeFile(downFolder+"\\"+파일명, DownObj);
지정된 임의의 폴더에 파일을 생성시 확인창 없이 작업은 안되나요?
파일 다운로드시 사용자가 지정한 폴더로 확인창 없이 다운로드 받는 방법이 없나요?
내문서"폴더로 작업시에도 확인창이 뜨는 현상
파일 다운로드시나 엑셀로 출력시 "내문서" 폴더로 지정을 하여도 확인창이 뜨는 경우는 해당 pc에서 내문서 폴더에 접근권한이 있는지를 확인해야 합니다. 내문서 폴더에 접근권한이나 내문서 폴더가 없는 경우도 확인창이 뜨게 됩니다.
특정 pc에서 내문서 폴더로 다운로드시에 확인창이 뜹니다.
추가파일 배포시 배포가 되지 않는 경우
XPLATFORM 에서 추가로 파일을 배포할 경우 TypeDefinition에 정보를 추가하여 배포 가능합니다. (다운로드만 가능합니다.)
상세설명
XPLATFORM에서 파일 배포시 TypeDefinition에 관련 정보를 추가하여 주셔야 합니다. target에는 경로 지정 및 alias를 기술하여 배포 할 수 있습니다.
ADL의 "filesecurelevel"속성값이 private 인 경우는 내문서 경로로 다운로드가 가능합니다. "filesecurelevel" 속성값을 all 로 지정시는 다운로드는 가능하나 확인창이 뜨게 됩니다.
"filesecurelevel" 속성값을 all 로 지정시는 컴포넌트 폴더로는 확인창 없이 다운로드를 할 수 있습니다. ( targetpath="%COMPONENT%\" )
소스코드
<Update> <Item systemtype="win32" url="../Component_92/"> <Os type="default" url="" engineurl="" enginesetupkey="" engineversion=""> <Device type="default" url="" engineurl="" enginesetupkey="" engineversion="" desc=""> <Resource type="File" file="./KillProcessA.exe" targetpath="%DOCUMENT%\" version="2014,1,3,1" failpass="false"/> </Device> </Os> </Item> </Update>
파일 다운로드가 되지 않아요?
파일 다운로드가 되지 않습니다
파일 접근이 가능한 경로는 내문서 폴더가 기본입니다. 내문서 이외에 접근시에는 ADL의 filesecurelevel속성값을 all 로 설정하여야 합니다. 다운로드를 받는 서버가 실행중인 서버의 주소가 IP와 도메인으로 각각 타입이 다를 경우 설정값이 private이면 접근이 허용되지 않습니다. 이 경우에도 all로 설정을 하여야 합니다.
파일 다운로드가 되지 않습니다
XPLATFORM 사용을 위한 PC사양
Server
Servlet/Web Service/JSP/PHP/ASP/.NET 등모든환경에서가용
Client(사용자)
OS
최소사양 : Windows XP SP3 권장사양 : Windows7 Home Premium (32bit지원) sp1
PC
[ 최소사양 ] Intel® Pentium® 4 1.4GHz, 메모리 1GB 이상, HDD 8G이상 [ 권장사양 ] Intel® Pentium i3-330M, 2.13GHz, 메모리 4GB DDR3, 30GB - 5400rpm
Client(개발자)
[ 최소사양 ] Intel® Pentium® 4 1.4GHz, 메모리 1GB 이상, HDD 8G이상 [ 권장사양 ] Intel® Pentium i3-330M, 2.13GHz, 메모리 4GB DDR3, 30GB - 5400rpm
각 (인터넷)브라우저별 사양
해당 브라우저별 사양은 2015년8월3일자 기준으로 작성되었습니다.
브라우저 | 최소사양 | 권장사양 | 비고 |
---|---|---|---|
Internet Explorer | Runtime : 8 이상 HTML5 : 8 이상 | Runtime : 10 이상 HTML5 : 10 이상 | IE브라우저 (64bit) 실행환경은 지원되지 않음 |
Chrome | Runtime/HTML5 : 10.0.648.127 이상 | Runtime/HTML5 : 22.0.1229.79 이상 | |
Opera | Runtime/HTML5 : 11.0 이상 | Runtime/HTML5 : 12 이상 | |
Safari | Runtime/HTML5 : 4 이상 | Runtime/HTML5 : 6.0.2 이상 | |
Firefox | Runtime/HTML5 : 8.0.1 이상 | Runtime/HTML5 : 14.0.1 이상 |
최근 크롬(Chrome) 브라우저 최신버전 (42.0.2311.90)에서 Netscape Plug-in API(이하 NPAPI)
모듈을 제한하고 있어 XPALTFORM Plugin모듈에 대한 설치가 반복 되는 현상이 발생이 되고 있습니다.
현재 당사는 NPAPI 대체 방법을 공지하였으니 참고하시기 바랍니다.
(support.tobesoft.co.kr 공지사항 : 166번)
OS : Window 10에 대한 지원방안은 기술지원 홈페이지를 통해 공지하였습니다.
기술지원 홈페이지 공지사항을 참고하세요
(support.tobesoft.co.kr 공지사항 : 162번)