교육(정기교육)-FAQ모음 및 Tip소스

해당 내용은 당사 교육부서에서 
정기 교육 및 사이트 교육을 통해 정리한 FAQ자료입니다.

Chapter1 RIA, X-Internet 및 MiPlatform 개요

FAQ 1

Q) 화면을 사용자 PC에 설치해야 하나요?
A) 아닙니다. Web의 HTML처럼 Server에만 있으면 URL로 접근하게 됩니다.

FAQ 2

Q) MiPlatform은 국산 제품인가요?
A) 예, 순수 국산 기술로 제작된 제품입니다.

FAQ 3

Q) 레퍼런스 수는 대략 몇 개 정도 되나요?
A) 2007년 6월 기준으로 약 350개 가량 됩니다.

Chapter2. 기본 개발환경 설정

FAQ 1

Q) AppGroup을 만드는 기준을 MiPlatform에서 정해놓은 것이 있나요?
A) AppGroup을 구분하는 기준을 MiPlatform에서 정해놓은 것은 별도로 없습니다. 
    해당 Project에 맞게 적절히 만드시면 됩니다.

FAQ 2

Q) BaseUrl에서 상대경로를 지정할 수는 없나요?
A) 상대경로를 지정가능합니다.
   상대경로는 StartXml이 위치한 Directory를 기준 Directory로 인식합니다.
   예를들어 ‘.\TestApp’라고 입력하면 StartXml이 위치한 Directory가 ‘C:\TestPrj\’이므로
               ‘C:\TestPrj\TestApp’로 인식하게 됩니다.

FAQ 3

Q) 기존에 Education이라는 Project가 존재합니다. 그래서 Project가 등록되지 않습니다.
A) 만일, Education이라는 Project가 이미 등록되어 있다면 Project가 등록되지 않습니다.
    Project의 명칭 및 StartXml의 Path는 고유해야 합니다.
    따라서, 기존의 Education Project Name 및 StartXml의 이름을 변경한 후 등록해야 합니다.

※ StartXML 정의시 주의사항

StartXML에서 임의로 정보를 변경하게 되면 Project환경이 달라지므로

Project진행시 Project내의 다른 인원의 Project환경과 내 Project환경이 달라지게 되므로

이점 주의하십시오

즉, StartXML에 정의한 내용이 많아지면 StartXML Size가 커지고 Browser구동시 최초로

Loading하는 File이 StartXML이므로 StartXML Size가 커지면 Browser Loading시간이 길어

집니다. 이점 주의하십시오.

Chapter3. 기본 화면개발

FAQ 1

Q) MiPlatform에서 Template은 상속인가요? Copy & Paste인가요?
A) X-Internet은 Interpret방식입니다. 따라서, 상속의 개념이 없습니다.
   상속이 아니고 Copy & Paste입니다.
   즉, Template이 변경되어도 화면은 변경되지 않습니다.

FAQ 2

Q) 개발자들간 Template은 어떻게 공유하나요?
A) Template List는 “기본설치경로\Pid_TemplateList.xml”에 내용이 저장됩니다.
    Template을 공유하려면 Template화면과 위 Pid_TemplateList.xml File을 공유하면 됩니다.

※ MiPlatform의 Script

MiPlatform은 Interpreter방식이므로 Script를 사용합니다.
Script는 Java Script의 기본 Syntax구조를 사용합니다.
단, 주의할 사항은 HTML Object(document., form.submit()등)는 IE의 자체 스펙이므로
사용할 수 없습니다. 
또한, JavaScript는 원래 대소문자를 구분하지만 MiPlatform에서는 대소문자를 구분하지 
않습니다

FAQ 1

Q) 대소문자를 구별하나요?
A) 구별하지 않습니다.

FAQ 2

Q) 다른 화면에서 Event Function을 가져다 Script창에 Paste하면 왜 Event동작이 안되나요?
A) 해당 Event에 Function을 연결시키지 않으셔서 동작이 안되는 것입니다.
    MiPlatform은 해당 Component내부에서 Event가 발생하면 화면에서 작성한 해당 
    Component의 Event가 존재하는지 Check합니다. 만일 Event에 해당 Event처리 
    Function명이 기술되어 있지 않다면 Event처리를 하지 않는것으로 인식하게 됩니다.

FAQ 3

Q) Event Function내에서 다른 Event Function을 호출하려면 어떻게 해야 하나요?
A) Event Function은 Java Script의 Function일 뿐이므로 보통 Function호출과 동일하게 하면 됩니다.

FAQ 4

Q) Event에서 ComboBox에 있는 값을 선택했는데 동작이 잘 안되는데요?
A) ComboBox에 나타나는 값은 화면상에 존재하는 Function List입니다.
    기존의 Function을 Event에 등록할 경우에 사용하는 방법입니다.

FAQ 5

Q) HTML안에 있는 Script를 Copy후 MiPlatform Script에 써도됩니까?
A) 안됩니다.
    왜냐하면 MiPlatform은 Java Script를 사용하지만 IE에 있는 Script에는 IE객체에 대한 처리가 포함되어 있으므로 되지 않는것입니다.
    MiPlatform은 HTML을 Parsing 및 제어하지도 않고 IE객체를 제어하지도 않습니다.

FAQ 6

Q) 서로다른 Component( 예 : Static, Button )를 한꺼번에 선택하면 Property는 어떻게 나오나요?
A) 공통된 Property만 나옵니다.
    예를들어, Button에만 있는 Appearance Property는 나오지 않습니다.

FAQ 7

Q) Data를 처리할 때 화면에 꼭 Column, Record를 Design해야 하나요?
A) 아닙니다. 
    Server에서 실제 DB의 값을 가져오게 되면 화면에서 위와같이 Design한 Column, Rows는 Server에서 전달된 Column, Rows 정보로 대체 됩니다.   화면에서는 Column, Rows없이 Dataset만 만들어 놓으셔도 됩니다.  
    하지만, 위와같이 Column, Rows를 만드시면 화면 개발시 좀더 편하게 개발할 수 있습니다.
    Columns를 만들어 놓지 않으시면 Binding과정에서 Column의 List가 보이지 않으므로 개발이 불편할 것이고 Rows는 Test용 Data를 만들거나 성별 Code Data처럼 화면에서 Data를 지정하는 경우에 사용하면 됩니다.
    또한, V3.2부터는 UseClientLayout Property를 true로 설정하면 서버에서 받은 Layout으로 갱신되지 않게 할 수도 있습니다.

FAQ 8

Q) Dataset만 Copy할 수 있나요?
A) 아닙니다. 모든 Component는 화면간 Copy할 수 있습니다.

FAQ 9

Q) PID를 2개 열고서 다른 PID에 있는 Component도 Copy할 수 있나요?
A) PID가 여러 개 열려 있을경우 다른 PID에 있는 Component도 Copy할 수 있습니다.

FAQ 10

Q) Dataset의 개수, Column, Record의 개수에 제한이 있나요?
A) Record는 16777216( 2^24개), Column은 ( 65535개)까지만 지원 가능합니다.
   단, 해당 PC의 메모리 크기 이상은 불가합니다.
    Dataset의 갯수 및 Component의 갯수는 2^32개 까지 지원 가능하나, 실제로는 사용자의 Memory 크기 이내에서만 처리 가능합니다.

1. ComboBox처럼 List를 나타내는 Component는 ComboBox, ListBox, Radio Button이 있습니다.

ListBox, Radio Button의 경우도 ComboBox처럼 List를 나타낼때는 InnerDataset, CodeColumn, DataColumn을 사용하고 Binding은 BindDataset, Column을 사용합니다.

2. List를 나타낼때는 InnerDataset, CodeColumn, DataColumn을 동시에 지정해야 합니다.

3. 순서지정시 Property의 우선순위는 Value a Text a Index 입니다.

BindDataset과 Column이 설정되어 있으면 Column의 값으로 설정됩니다.

4. CodeColumn의 값과 Column의 값이 같아야 Binding됩니다.

단, Combo의 InnerDataset과 BindDataset이 같은 Dataset의 같은 Column으로 지정되어 있으면 Combo가 정상 동작할 수 없습니다.

♣ MiPlatform에서의 URL호출방법 및 실제 URL

Image AppGroup내의 button.jpg를 URL로 호출한다고 가정하면 ”Image::button.jpg”형태로 기술하는 것을 권장 합니다.
예) Image::button.jpg
위 예제 URL은 MiPlatform내에서 다음과 같은 순서로 실제 URL로 변경됩니다.
1) “Image::”은 AppGroup의 명이며 Image AppGroup의 BaseUrl의 값이 "C:\Education\Image\" 라면
     실제 URL = C:\Education\Image\
2) “::button.jpg”는 위 1)에서 만든 실제 URL뒤에 String을 붙여서 완성된 실제 Url을 만들게 됩니다.
     실제 URL = C:\Education\Image\button.jpg

※ URL을 사용할 때 File의 확장자를 반드시 기술하십시오.
● 이렇게 사용하도록 한 이유는
    기존 Web의 경우는 Html 내에 Url이 설정되었을 때 Server IP가 변경되거나 경로가 변경되면 Html내의 Url을 모두 바꿔야 하는 번거로움이 발생합니다.
    MiPlatform에서는 이러한 불편을 해소하고자 개발자의 편의성을 위해서 일부러 그렇게 한것입니다.
    즉, MiPlatform에서는 Server IP가 변경되거나 경로가 변경되면 Start Xml의 url만 변경하면 됩니다.

FAQ 1

Q) Image만 Url을 이렇게 지정하나요?
A) Image, 화면, Data(Jsp등)모두 Url이 사용되는 경우에는 모두 해당합니다.

FAQ 2

Q) http://…라고 직접 URL을 기술해도 됩니까?
A) 써도 됩니다. 단, 이경우에는 AppGroup이 기술되어 있지 않으므로 Cache를 사용할 수 없습니다.

FAQ 3

Q) AppGroup은 나누지 않고 Directory만 하위로 나눌경우는 Url을 어떻게 씁니까?
    예)  AppGroup/a,b,c Directory만 구분
A) AppGroup은 놔두시고 File명 자리에 Directory만 쓰시면 됩니다.
    예) Image::a/button.jpg

FAQ 4

Q) 상대경로를 줄 수는 없나요?
A) 줄 수 있습니다. 기준 경로는 StartXml이 위치한 경로입니다.

* TIP

확장자를 명시하지 않으면 AppGroup의 Ext값에 따르지만 확장자를 반드시 기입하십시오.

FAQ 1

Q) GroupBox가 Component Grouping을 하나요?
A) 아닙니다. Component Grouping은 Division을 사용합니다. GroupBox모양만 보여줍니다.

위 TraceMode를 ‘none’이 아닌 값으로 설정하고 사용자에게 최종 Release를 하게 되면 사용자 PC에 Log File이 계속 쌓이므로 속도가 점점 느려지게 되며 Log 내용이 사용자에게 노출되게 됩니다.

따라서, 최종 Release시에는 TraceMode를 ‘none’으로 설정하십시오.

Chapter4. Service개발 및 화면연계(JSP,ASP)

FAQ 1

Q) Service JSP/ASP의 역할이 무엇인가요?
A) 개발할 Service JSP/ASP는 MiPlatform에서 정의한 XML 또는 Binary Format형태의 
    Client와 주고 받을 Data를 기존 Legay System과 연계하는 역할을 합니다.

FAQ 2

Q) Service API의 역할이 무엇인가요?
A) MiPlatform에서 정의한 XML 또는Binary Format을 개발자가 좀더 쉽게 활용할 수 있도록 도와주는 Library입니다.

FAQ 3

Q) 왜 JSP/ASP를 사용하나요? Servlet은 안되나요?
A) Http Protocol을 사용하게 되면 e Web Server가 필요하게 되고 Web Server를 사용할 때 Client와 Data를 주고 받는 방법이 JSP/ASP/Servlet이기 때문입니다.
    JSP나 ASP를 사용하지 않고 Client와 Data를 주고 받는 다른 방법이 있을경우 해당 방법을 사용하면 됩니다. 만일, Http를 사용하지 않는다면 JSP/ASP가 필요없게 됩니다.
    또한, 기존 Legacy의 활용방법은 WAS에서 제공되는 활용방법을 그대로 사용하면 됩니다.

FAQ 4

Q) 기존에 Web에서 사용하고 있는 JSP를 그대로 사용할 수 있나요?
A) 수정하지 않고 그대로 사용하지는 못합니다.
    왜냐하면, 기존의 Web용 JSP의 결과물은 HTML인데 MiPlatform에서는 Data처리를 XML 또는 Binary Format을 사용합니다. 
    따라서, 기존의 Web용 JSP의 HTML Format부분에서 Data부분에 해당하는 부분을 추려서 MiPlatform의 XML Format으로 변경하는 작업이 필요합니다.

FAQ 5

Q) Service API의 설치는 어떻게 해야 하나요?
A) 교재내에는 Service API가 포함되어 있지 않습니다. 기술지원 Site에서 Down받으시면 됩니다.
    JSP나 Servlet과 같이 Java계열을 위한 Library는 Miplatform.jar File입니다.
    Setup file은 별도로 없고 Jar file이므로 Web Server에 common/lib directory에 Copy후 Web Server Restart하면 됩니다.

FAQ 6

Q) 기존의 Web용 FrameWork(예를 들어 Struts)이나 Legacy(EJB, Tuxedo등)과 연계하는데에 문제는 없나요?
A) 문제없습니다.
    MiPlatform에서 Server측에 제공하는 모듈은 Service API이외에 없습니다. 
    Service API는 Web Server나 Legacy와 직접적인 연계 부분이 없습니다.
 
    따라서, Legacy연동은 기존에 Web에서 사용하던 방법을 그대로 사용하면 되고
    FrameWork의 경우는 Data처리하는 부분에 MiPlatform연계용 Logic을 처리하면 됩니다.

FAQ 7

Q) Dataset의 Record수의 제한은 없나요? Memory는 어느정도 사용하나요?
A) 없습니다.
    H/W가 지원되는 한 처리하면 됩니다.
    단, Web의 설정에 따라 Download, Upload사이즈를 제한하는 경우가 있습니다.
    만일, Dataset의 처리시 사용되는 Memory량이 궁금하면 사용하는 Record내의 값의  Size X 4정도 하면 사용되는 Memory량을 계산할 수 있습니다.

FAQ 8

Q) JSP/ASP는 어떤 Tool을 이용하여 작성하나요?
A) 통상 JSP나 ASP를 개발할 때 사용하는 Tool( 예를 들어 EditPlus, Eclipse, VI 등) 을 사용하면 됩니다.

FAQ 9

Q) Get, Post방식의 조정은 어떻게 하나요?
A) 개발자가 조정할 수는 없고 자동조정됩니다.
    Server로 보낼 XML이 있는 경우는 Post방식으로 없는 경우에는 Get방식으로 자동으로 처리됩니다.

※ Data Format의 주요 사항매우 강조

MiPlatform은 1개의 Service와 Data를 연계시 N개의 변수, N개의 Dataset을 한번에 보내고
N개의 변수, N개의 Dataset을 한번에 받을 수 있도록 설정 되어 있습니다.
 
또한, 변수 및 Dataset이외의 정보는 Data로서의 의미가 없습니다.

※ Tip

ServiceApi를 사용치 않고 Format을 직접 만드시는 것은 바람직 하지 않습니다.
즉, out.print를 이용하여 XML을 직접만드실 수도 있지만 바람직한 방법은 아닙니다.
동시 사용자수가 많아지면 WebServer의 Buffer처리속도가 떨어지게 되어
MiPlatform성능에 영향을 미치게 되므로 가급적 out.print를 이용하기 보다는 Service API를 사용하십시오.

FAQ 1

Q) 입력 및 삭제시 DB에 반영되지는 않나요?
A) 입력 및 삭제는 DB에 반영이 아니라 화면에 있는 Dataset에만 반영하는 것입니다.
    왜냐하면 Dataset은 1 Record가 아닌 N개의 Record가 동시에 전달되기 때문입니다.

Async통신방식에 대하여

Protocol Adapter는 Async통신방식(Thread)이 default이므로 Server측 응답을 기다리지 않고 다음 Script Line을 수행합니다. 
따라서, 
예) Transaction(); 
alert(“TR시작”); 의 경우 응답보다 Transaction()의 응답 Message보다 
alert(“TR시작”)내용이 먼저 실행됩니다. Transaction()뿐만이 아니라 Dataset.Load()나 
Dataset.Append() 또한 Async통신방식으로 처리됩니다.

CallBack Function에 대하여

Async통신방식의 경우 Server측의 응답을 기다리지 않으므로 Server측의 응답처리를 할 곳이 마땅치 않아지게 됩니다.
CallBack Function이란 Async통신방식 사용시 함수(예 : Transaction())를 호출하여 처리할경우 응답이 도착할 때 호출될 함수를 의미합니다.
 
따라서, Transaction()의 경우는 응답처리를 반드시 CallBack Function을 사용해야 합니다.
또한, CallBack Function의 Argument는 3개로 고정되어 있으며 Argument명은 임의로 주셔도 되지만 순서는 고정되어 있습니다.
예) tr_save_result(trid, ErrorCode, ErrorMsg)에서
◈ trid : Transaction()의 첫번째 Argument, 즉, 위 예에서 “save”가 넘어옵니다.
◈ ErrorCode,ErrorMsg
Server에서 넘어온 ErrorCode, ErrorMsg변수 값
 
단, 이 값으로 Error값을 얻으려면 반드시 서버에서 변수명을 ErrorCode, ErrorMsg라고 주셔야 합니다.

※ ErrorCode, ErrorMsg

ErrorCode, ErrorMsg는 MiPlatform에서 사용하는 Reserved Word입니다.
JSP나 ASP에서 ErrorCode를 사용시 ErrorCode값이 음수이면 Server에서 넘어온 Dataset을 화면에서 받아주지 않습니다.
 
ErrorCode값은 음수이면 Error, 0이상의 값이면 정상으로 인식합니다.
즉, 음수이면 Dataset의 RowStatus가 Transaction함수 호출때와 동일하게 유지하고 0이거나 양수인 경우는 Normal로 처리됩니다.

FAQ 1

Q) 조회시는 Load()쓰고 TR시는 Transaction()을 쓰나요?
A)  아닙니다. 
     Load()는 Dataset의 Method이므로 Server로부터 Dataset 1개를 받을때에 사용하고 
     ( 보통 Code Data조회시 사용하고 많이 사용치는 않음 )
     Transaction()은 n개의 Dataset을 Server로 보내고, n개의 Dataset을 Server로부터 받을 때 사용합니다. ( Transaction()은 Data의 조회 및 저장시 제일많이 사용하는 함수입니다.)

FAQ 2

Q) 조회시는 Load()쓰고 TR시는 Transaction()을 쓰나요?
A) 아닙니다. 
    Load()는 Dataset의 Method이므로 Server로부터 Dataset 1개를 받을때에 사용하고 
    ( 보통 Code Data조회시 사용하고 많이 사용치는 않음 )
   Transaction()은 n개의 Dataset을 Server로 보내고, n개의 Dataset을 Server로부터 받을 때 사용합니다. 
   ( Transaction()은 Data의 조회 및 저장시 제일많이 사용하는 함수입니다.)

FAQ 3

Q) 화면에서 저장을 처리한 후 Data조회를 자동으로 하고싶습니다. 어떻게 하면 되나요?
A) 2가지 방법이 있을 수 있습니다.
   한가지는 화면에서 저장처리용 JSP호출 후 Callback Function에서 조회처리용 JSP를 호출하도록 할 수 있습니다.
   또 한가지는 저장 후 조회하는 처리를 JSP 하나로 만들어서 처리 할 수도 있습니다.
   위, 저장 후 조회처리를 JSP하나로 만들어서 처리하는 것을 권장합니다.
   WebServer연결 횟수가 많을수록 속도가 느려지기 때문입니다.
   이는 MiPlatform때문이 아니고 WebServer때문입니다.

FAQ 4

Q) Jsp에서 Dataset 2개를 보내도록 되어 있을경우 Dataset.Load()를 사용하여 1개의 Dataset만 받으려면 어떻게 하나요?
A) 만일, JSP에서 Dataset 2개를 보내도록 되어 있다면 원하는 Dataset의 ID를 ServiceDSetID에 넣어주면 선택해서 처리할 수 있습니다.

    예) 만일, JSP에서 output, output1 2개의 Dataset을 보내도록 처리되어 있고 
         화면의 ds라는 Dataset으로 JSP의 output Dataset을 받고자 한다면
         ds.ServiceDSetID = “output”;
         ds.Load(…); 
         라고 기술하면 됩니다.

Chapter5. 상세환경설정

FAQ 1

Q) IE에서 동작되고 있는 ActiveX를 MiPlatform에 올리니까 동작되지 않습니다.  어떻게 해야하나요?
A)  해당 ActiveX가 VC++, VB또는 4GL에서 동작되는지 확인해 보십시오.
     IE는 ActiveX가 잘못 만들어졌어도 동작되도록 처리하는 Logic이 별도로 들어가 있습니다. 
     이렇게 잘못 만들어진 ActiveX의 경우 해당 ActiveX는 VC++, VB나 4GL에서 동작되지 않을것입니다. 
     MiPlatform은 IE처럼 잘못 만들어진 ActiveX를 처리하는 별도의 Logic은 들어가 있지 않습니다.

FAQ 1

Q) AppGroup을 만드는 기준이 있나요?
A) AppGroup을 구분하는 기준은 별도로 없습니다. 
   해당 Project에 맞게 적절히 만드시면 됩니다.

Cache의 종류별 특성

1. Cache는 AppGroup단위로 지정됩니다. 화면단위로 지정할 수 없습니다.


2. Static Option의 경우

화면이 변경되면 StartXml의 AppGroup의 Version을 Up해야 변경된 화면이 반영됩니다.


3. None Option의 경우

Data의 경우는 보안 때문에 주로 사용합니다.

또한, Data처리시 Cache를 Static으로 주면 DB의 내용이 화면에 반영되지 않습니다.

단, 공통Code의 경우라면 예외적으로 Static으로 할 수도 있습니다.


4. Cache Option은 Default값이 Session입니다.

Cache Option을 지정하지 않으시면 Session으로 적용됩니다.


5. StartXml의 Version을 Up하면 Cache의 종류에 상관없이 Cache를 비우고 시작합니다.

단, Static을 제외하고는 Version을 Up안해도 변경된 화면이 반영 되게 됩니다.

FAQ 1

Q) StartXML은 Cache를 어떻게 처리해야 하나요?
A) StartXML은 Cache Option을 지정할 수 없습니다.
    StartXML은 무조건 Server에서 가져옵니다.
     단, Static Option의 Version비교를 위해 Cache에 저장은 됩니다.

FAQ 2

Q) 화면만 Cache하나요? Image는 Cache안하나요?
A) 화면, Image, Data등 Server Url이 연결되는 것은 모두 Cache의 대상입니다.

FAQ 3

Q) Local File을 읽을 때도 Cache가 처리되나요?
A) Local File은 Cache에 저장되지 않습니다.

※ 주의사항

Data의 경우는 보안 때문에 주로 Cache Option을 None으로 사용합니다.

또한, Data처리시 Cache를 Static등으로 주면 DB의 내용이 화면에 반영되지 않습니다.

단, 공통Code의 경우라면 예외적으로 Static으로 할 수도 있습니다.

FAQ 1

Q) 공통 Code를 이 Dataset에 넣고 쓰면 모든 화면에서 그때그때 Server로부터 공통 Code값을 가져오지 않고도 쓸 수 있나요?
B)    맞습니다. 이 Global Dataset은 질문한 내용의 용도로 쓰기 위해 만든것입니다.

FAQ 2

Q) 모든 Component의 Property가 Style에서 적용가능한가요?
A) MiPlatform에서 제공하는 Style은 Font, Color만 제공됩니다. 
    Performance향상을 위해 Font, Color만 제공토록 했습니다.

FAQ 3

Q) Web의 Style Sheet(css File)를 사용할 수 있나요?
A) 안됩니다.

FAQ 4

Q)Web의 Style Sheet와의 차이는 무엇인가요?
A) MiPlatform에서는 하위 Class지정이 되지 않습니다.

FAQ 5

Q) Component에 Style을 지정한 후 Color값을 특별히 지정하게 되면 어떻게 되나요?
A) 특별히 지정한 Color값이 처리됩니다.

※ 주의사항

Ansi버전도 domain기능(다국어지원)을 지원하지만 깨지는 글자가 발생할 여지가 있습니다.

그러므로 완벽한 지원을 위해서는 Unicode버전을 사용해야 합니다.

FAQ 1

Q) 현재 오픈된 MDI창을 어떻게 알 수 있나요?
A) AllWindows Collection을 이용해서 찾으시면 됩니다. 교재중 
    Tip::tip_collection.xml을 참조하세요.

FAQ 2

Q) A  AppGroup의 화면과 B  AppGroup의 화면의 Calendar가 다르게 표시됩니다.
    DateFormat은 SHORTDATE로 되어 있습니다. 어떻게 된건가요?
A) Calendar의 날짜표시 형식중 LONGDATE, SHORTDATE는 Language설정에 따른  
    국가별 언어설정의 Format에 따라갑니다.
    A  AppGroup의 Language와 B  AppGroup의 Language가 다르게 설정되어 있어서 
    그런 현상이 나타나게 된 것입니다.

FAQ 3

Q) 년도단위로 선택할 수는 없나요?
A) 년도단위로 선택은 안되고 Calendar의 Header부분을 Mouse로 Click후 누르고 있으면 
    1년치 달을 선택할 수는 있습니다.

Inner Dataset

FAQ 1

Q) 펼쳐지는 부분의 넓이는 어떻게 지정하나요?
A) 펼쳐지는 부분의 넓이는 Data의 길이에 따라 자동으로 넓어집니다.

FAQ 2

Q) Index, Text, Value를 동시에 주면 우선순위가 무엇인가요?
A) Value, Text, Index순입니다.

FAQ 4

Q) Confirm시 “확인”, “취소” 이외에 Button을 나타나게 하려면 어떻게 하나요?
A) Confirm은 기본적으로 “확인”, “취소” Button만 나타나게 되어 있습니다.
    이와 같은 경우에는 화면을 별도 제작해서 Dialog()를 사용해야 합니다.

FAQ 5

Q) go()사용시 IE처럼 History Back기능이 처리되나요?
C) Go()는 IE처럼 화면을 유지하는게 아니라 Chang하게 되어 있습니다.
    따라서, History Back기능은 처리되지 않습니다.
    왜냐하면, History Back기능을 추가하면 MiPlatform이 너무 무거워지기 때문입니다.

FAQ 6

Q) Tab이 화면에 Loading되면 2번째 Tab이 나옵니다. 1번째 Tab이 나오게 하려면 어떻게 해야 하나요? 
A) TabIndex Property는 Design시에 Tab을 설정할 때도 사용되지만 원래는 Tab의 초기 Page번호입니다.따라서 TabIndex를 ‘0’으로 설정하면 됩니다.

FAQ 7

Q) Tab Button의 글자를 2줄로 표시하고자 합니다. 어떻게 하면 되나요?
A) Tab Button의 글자는 2줄로 표시되지 않습니다. Option Component중 MultiLine Tab Component를 사용하세요.

FAQ 8

Q) WebBrowser Component안에 있는 HTML객체를 직접제어 할 수 있나요?
A) 제어할 수 없습니다.
    만일, 직접제어할 경우가 필요하면 MS에서 제공하는 IE Browser ActiveX를 등록해서 사용하면 제어할 수 있습니다.

FAQ 9

Q) Script에서 Dataset의 Copy, Clear, Column Add등이 가능합니까?
A) 예 물론 가능합니다. Manual에 보시면 각종 Method가 제공됩니다.

FAQ 10

Q) 한글 Column명이 되나요?
A) 처리는 되지만 권장사항은 아닙니다.

FAQ 11

Q) Component Template을 개발자끼리 공유하려면 어떻게 하나요?
A) 이렇게 작성된 Component Template은 “기본설치경로\Project명_ct.xml File” 로 저장됩니다.
    개발자간 Component Template공유는 이 File을 복사해서 사용하면 됩니다.

고급기능 및 Tip

FAQ 1

Q) 통신을 강제로 중단하고자 할 경우에는 어떻게 처리하면 되나요?
A) “ESC” Key를 누르시면 됩니다.

FAQ 2

Q) Server로 Data전송시 Binary Format처리가 잘 되지 않는데요?
A) 설정환경에 따라 처리가 잘 되지 않는경우가 있을 수 있습니다.
   이 경우에는 http Protocol Adapter에서 Compress=true, CompressMethod=ZLIB로 명확히 지정하고 실행해 보십시오.

FAQ 3

Q) 2개이상의 Grid를 한꺼번에 Excel로 보낼 수 있나요?
A) V3.11이상에서는 CreateExportObject()를 이용하여 처리할 수 있습니다.

FAQ 4

Q) Expression에서 사용하는 언어문법 및 API의 종류는 무엇인가요?
A) 언어는 Java Script로 Coding하면 되고 API의 종류에는 제약이 없습니다. 
    Script Coding과 동일하게 하면 됩니다.

운영

1.     만일 Cache가 Static이고 화면변경이 이루어진경우는 StatXML내의 해당 AppGroup의 
        Version을 Up해주어야 합니다. 
        ( 예: StartXML의 AppGroup의 Version을 1000에서 1001로)
2.     만일, AppGroup의 BaseUrl을 상대경로를 지정하면 별도의 Server용 StartXml을 만들지 
       않아도 됩니다. 상대경로는 StartXml 경로를 기준으로 적용됩니다.
3.     Web Server의 종류에 따라 Mime Type을 정확히 설정하지 않으면 Browser나 Component가 
       설치되지 않는 경우가 있습니다.
       이 경우 Web Server에서 Mime Type을 “application/octet-stream”으로 지정하십시오.
       
       예) Tomcat의 경우 
       Tomcat설치 Directory/conf/web.xml에서 
       <mime-mapping> 부분에 Mime Type을 설정하십시오.

FAQ 1

Q) Project단위가 아니라 개별파일별로 Compile을 적용하는 방법은 없나요?
A) 다음장에서 언급되는 MiDeploy( PID에서 제공하는 FTP기능)에서 ‘Compile XML’ Option을 이용하면 됩니다.

FAQ 2

Q) Project단위가 아니라 개별파일별로 Compile을 적용하는 방법은 없나요?
A) “Compile XML” Option을 Check하면 각 화면을 Server로 Copy시에 Compile할 수 있습니다.

FAQ 3

Q) 개발한 화면도 설치해야 하나요?
A) 아닙니다. 개발한 화면은 Server에 두시기만 하면 됩니다.

FAQ 4

Q) Updater를 사용하지 않고 Setup으로 제공하고 싶은데 사용자용 Setup File이 있나요?
A) 사용자용 Setup File은 제공하지 않습니다. 
    이유는 Project마다 사용하는 Component의 종류가 다를 수 있기 때문입니다.
    따라서, Setup File은 직접 제작해야 합니다.

FAQ 5

Q) MiPlatform Browser종류( ActiveX형태 or EXE 형태)에 따라 화면 Coding이 달라지나요?
A) 달라지지 않습니다. 개발한 화면을 그대로 사용하면 됩니다.
    단, ActiveX형태의 Browser를 사용할 경우에는 Browser가 구동될 수 있는 
    Application( HTML or C/S Application )을 제작한 후 그 위에 Browser를 탑재하면 됩니다.

FAQ 6

Q) Shortcut형태로 구동한다는 것은 무엇을 의미하나요?
A) 바탕화면의 Icon형태로 구동할 수 있다는 것입니다.

FAQ 7

Q) Update Info File이 반드시 필요한가요?
A) 반드시 있어야 합니다. Update List File들을 기술하면 됩니다.

FAQ 8

Q) Update List File내에는 Browser/Component만 기술해야 하나요?
A) 아닙니다. File종류에 제약이 없습니다.

FAQ 9

Q) Update Info File을 무조건 먼저 구동해야 하나요?
A) 예, 먼저 구동해야 합니다.
    Updater에서 사용하는 Update URL에는 Update Info File의 경로를 주셔야 합니다.
    왜냐하면 Device별로 달리 운용될 수 있기 때문입니다.

FAQ 10

Q) Update XML 편집 Tool은 제공치 않나요?
A) 예, Tool은 별도로 제공되지 않습니다. MiPlatform Homepage 에 가시면 
    Update XML을 관리하는 화면 소스를 제공하므로 이를 이용하면 좀더 편리하게 
    처리할 수 있습니다.

FAQ 11

Q) Sample과 같이 Update List File을 여러 개로 나누는 특별한 이유가 있나요?
A) Update List File은 반드시 여러 개를 둘 필요는 없지만 
   통상적으로는, Project를 운영시 MiPlatform이 설치되는 경로에 따라 
   여러 개의 File을 만들어 사용하며 MiPlatform설치 File
   ( 예 : Updater_system.xml ), 
   Component설치 File
   ( 예 : Updater_component.xml ), 
   기타 Project에 운영에 필요한 설치 File등으로 나누어 관리합니다.
Update List File의 경우 설치 단위로 활용됩니다. 1개의 리스트를 기준으로 다운/설치를 진행하며, 
리스트의 파일중 1개가 설치에 실패하면 해당 List의 설치를 모두 중단하게 됩니다.
Windows VISTA의 경우 ActiveX를 설치 시 %UserApp%에 복사할 경우 사용에 문제가 될수 있습니다. 
ActiveX는 사용자 별로 설치 하도록 제작된 것만을 %UserApp%에 복사해 사용이 가능하며, 
일반적으로 시스템당 설치를 요구하는 경우 System디렉토리 또는 프로그램 디렉토리에 설치 되어야만 합니다.

※ 주의사항
MiPlatformX Browser를 사용할 때도 Updater를 이용하여 Browser 및 Component등을 설치해야 합니다.
MiPlatformX Browser 는 Browser틀만 가지고 있으므로 OCX File만 설치해서는 구동되지 않습니다.
또한, Updater처리용 HTML과 MiPlatfromX Browser구동용 HTML은 서로 분리하여 처리하십시오.

FAQ 12

Q) HTML에 MiPlatform을 넣어서 띄울때 사이즈 조절이 가능한가요?
A) MiPlatformX Browser의 크기 조절을 원할 경우에는 예제(MiPlatformX.js)에서와 같이
    AutoSize = fales(기본값은 true) 및 height, width를 조정하면 됩니다.
    예) <OBJECT id=MiPlatformCtrl AutoSize=”false” height=”600” width=”800” …

FAQ 13

Q) MS사가 소송에서 패소하여 ActiveX를 사용하는 법이 바뀌어서 ActiveX를 한번 더 
    선택해야 활성화 되는 것으로 아는데 MiPlatformX Browser를 사용시 이러한 문제를 어떻게 
    처리해야 하나요?
A) HTML Tag를 document.write형태로 바꾸면 됩니다. MiUpdater.js 나 MiPlatformX.js를 참조하세요.

FAQ 14

Q) MiPlatform화면에서 WebBrowser에 있는 HTML내의 EditBox를 제어하거나 
    form.submit()등을 수행하려면 어떻게 해야 하나요?
A) MS에서 제공하는 AxMSIE ActiveX Component를 이용하면 처리할 수 있습니다.
    상세한 처리내용은 MiPlatform Homepage의 강좌 및 Tip에 가시면 처리방법이 있으니 참조하세요.

XPLATFORM Pattern300 소스와 문서

'XPLATFORM Pattern300' 은 기술지원사이트에 올라온 게시물의 조회수와 
샘플 다운로드 회수가 많은 게시물들을 수집하여 일관된 샘플과 문서로 정리한 내용입니다.
300 여개의 샘플로 구성되어 있으며 주요 구성은 다음과 같습니다.

샘플

- Component : 화면의 UI를 구성하는 컴포넌트를 사용하여 기능을 구현하는 방법을 제시
- Script : XPLATFORM의 기능을 JavaScript로 제어하여 기능을 구현하는 방법을 제시
- Application : 화면간, 또는 XPATFORM과 이 기종 시스템과의 기능을 구현하는 방법을 제시

문서

- 샘플의 예시와 작성순서, 소스, 설명 등의 내용으로 구성

참고

- Pattern300 은 XPLATFORM9.2 Runtime 기준으로 작성되었습니다.
- 샘플과 문서를 같이 보시기 바랍니다. 샘플에는 소스만 문서에는 그에 대한 설명만 기재되어 있습니다.
- 제품의 일부로 배포되는 내용이 아니므로 (주)투비소프트 고객지원센터에서는 이와 관련한 어떠한 
  기술문의도 받지 않습니다.

문서, 샘플 다운로드

아래 링크를 통해 문서로 샘플소스를 다운로드 할 수 있습니다.

http://www.miplatform.co.kr/portal/edu_cd/xp/300_20131120.zip

수정이력

2013/11/20

- 파      일 : Pattern-300\Component\Comp_Dataset_SearchFilter.xfdl
- 변경내용 : 데이터에 특수문자(', ")가 들어있는 경우 필터가 정상적으로 처리되지 않아 replace 추가함.

XP9.2 Runtime 셀프스터디

목적

제품 교육 없이도 혼자서 공부가 가능하도록 하기 위함 ( 100%가능하리라고는 생각지 않음 )
- 온라인 형태의 교재를 만들 때 Flash를 쓰고 싶지 않아서 XP로 만들었습니다.    
- 샘플따로 문서따로 보는 귀찮음을 없애기 위해 샘플과 문서가 결합되어 있는 형태로 만들었습니다.
    ( 실제로 해보니 Word나 PowerPoint보다 UxStudio가 콘텐츠를 만들기에 더 편합니다. )

작성버전

XP 9.2 2013.4.30.1 버전 기준임

종류

XP9.2 Self Study For Beginner V201311

XPALTFORM을 처음 써 보는 사람들을 위한 XPLATFORM9.2 Runtime 혼자서 공부하기
UI개발경험은 있지만 MP는 경험 없고, XP는 처음 써보는 사람 대상

XP9.2 Self Study vs MP Education V201311

MiPlatform을 써본 사람들을 위한 XPLATFORM9.2 Runtime 혼자서 공부하기
MP 경험은 있지만, XP는 처음 써보는 사람 대상. 내용은 MP Education샘플을 기준으로 했음

실행 방법

개발자들의 소스보기 원츠(wants)를 고려하여 Tool로 동작시키는 것을 기준으로 함. 소스 공개
① 첨부파일에 있는 zip파일을 다운한 후 임의의 폴더에 압축을 해제합니다.
② XP 9.2를 설치합니다.
③ 압축해제한 폴더내의 Project파일을 UX Studio로 엽니다.
④ Tool에서 Launch Project 클릭해서 공부합니다.

소스 다운로드

아래 링크를 통해 문서로 샘플소스를 다운로드 할 수 있습니다.
*** XP9.2 Self Study vs MP Education V201311 다운로드 ***
*** XP9.2 Self Study For Beginner V201311 다운로드***

※부족하지만 XP9.2 활용에 많은 도움이 되시길 바랍니다.