3.배포

Edit

3.1배포란?

3.1.1배포의 의미

배포란 서비스를 위하여 필요한 프로그램 모듈을 사용자용 PC 또는 단말기에 설치하는 작업을 뜻합니다.

개발된 BS와 PI를 사용자용 단말기에서 사용하려면 프로그램 일부를 MiPlatform에서 다운로드해야 합니다. 이 과정을 '배포'라고 하며, 사용자는 배포 후 원하는 서비스를 이용할 수 있습니다. MiPlatform은 UNICODE와 ANSI의 2가지 버전을 가지고 있으며, 세부적인 설정값이 UNICODE와 ANSI 버전이 상이할 수 있습니다.

3.1.2배포의 단계 (배포 모듈별)

배포는 "배포 프로그램 배포", "주요 모듈 배포", "추가 파일 배포"의 3가지가 있으며 "배포 프로그램 배포"와 "주요 모듈 배포"는 반드시 필요한 단계입니다. 또한 "배포 프로그램 배포"가 가장 먼저 실행되어야만 합니다.

배포 프로그램 배포 단계

배포 활동을 담당하는 제어 모듈을 배포합니다.

주요 모듈 배포 단계

배포의 주요 모듈인 MiPlatform(MiPlatform의 전용 Browser 및 Engine 모듈)과 component를 배포합니다.

MiUpdater를 통해 배포되며, MiPlatform의 주요 모듈들이 모두 이 단계에서 배포됩니다.

추가 파일 배포 단계

그 밖에 개발자가 지정한 추가 파일을 배포합니다.

MiUpdater를 통해 배포되며, 개발자의 필요에 따라 선택하는 단계입니다.

3.1.3배포의 단계 (시간별)

그림 3-1배포의 단계 - 시간별

1단계 : 배포 프로그램의 자동 설치

MS Internet Explorer에서 Launch File을 통하여 배포 프로그램(MiUpdater)을 사용자의 장치에 설치합니다. Launch File은 Cab설치 방식을 사용해 배포 프로그램을 설치합니다. 따라서 개발자는 MiPlatform이 제공하는 MiUpdater의 CAB 파일을 사용자가 다운로드할 수 있도록 Web Server에 올려놓아야 합니다. Launch File은 3.2.1장에서 상세하게 설명합니다.

2단계 : MiUpdater 구동

사용자의 장치에 설치된 MiUpdater는 Launch File에 의해 자동으로 실행됩니다

3단계 : Update Info File 받기

MiUpdater는 Web Server로부터 Update Info File을 다운로드합니다. MiUpdater는 설정된 UpdateURL을 통해 Update Info File의 경로를 찾습니다. Update Info File은 3.2.3장에서 상세하게 설명합니다.

4단계 : Update Info File의 분석

MiUpdater는 Update Info File을 분석하여 실제 다운로드 및 설치할 Update List File을 선택합니다. Version 관리 기법에 의해 Update Info File에 설정된 파일 중 업데이트가 필요한 Update List File 파일을 선택합니다. 다운로드 대상을 선택하는 과정은 "Version 관리" 및 "Cashing 방법"과 연관이 있으며, 4장 버전 관리에서 상세하게 설명합니다.

5단계 : Update List File 받기

MiUpdater는 4단계에서 선택한 Update List File들을 Web Server로부터 다운로드합니다. Update List File 안에는 다음 단계에서 업데이트할 파일들의 리스트가 담겨있습니다. Update List File은 3.2.4장에서 상세하게 설명합니다.

6단계 : Update List File의 분석

MiUpdater는 Update List File을 분석하여 실제 다운로드 및 설치할 파일을 선택합니다. Version 관리 기법에 의해 Update List File에 설정된 파일 중 업데이트가 필요한 대상을 선택합니다. 다운로드 대상을 선택하는 과정은 "Version 관리" 및 "Cashing 방법"과 연관이 있으며 4장 버전 관리에서 상세하게 설명합니다.

7단계 : 파일 다운로드

MiUpdater는 Web Server로부터 6단계에서 선택한 파일을 다운로드합니다. 다운로드 파일의 URL은 Update List File에 등록되어 있습니다. 다운로드된 파일은 MiUpdater가 관리하는 임시 디렉토리에 저장됩니다.

8단계 : download file의 배치

MiUpdater는 7단계에서 임시 디렉토리에 저장했던 파일을 사용자의 장치에 설치합니다. 설치 방법은 복사, 설치파일 실행 등 Update List File에 지정된 방법을 통해 설치 하게 됩니다.

9단계 : download file의 가공

MiUpdater는 8단계에서 지정된 설치를 수행한 뒤 COM 서버를 등록하거나 실행할 수 있습니다. Update List File의 설정에 따라 이 단계가 사용됩니다. 개발자가 Update List File을 구성하는 방법은 Update List File에서 설명합니다.

3.1.4모듈 배포 방법의 종류

배포는 MiPlatform과 MiUpdater의 실행 환경에 따라 4가지 방법으로 나뉩니다. 실행 환경 정보는 Launch File에서 저장됩니다. Launch File은 3.2.1장에서 상세하게 설명합니다.

배포 방법 1~4는 MiUpdater를 통해서 배포하는 방법입니다. MiUpdater는 Update Info File, Update List File을 참고하여 필요한 파일을 배포합니다.

배포 방법 1

그림 3-2배포 방법 1

배포 방법 1은 [그림 3-2]과 같이 모듈 배포에서부터 MiPlatform 실행까지 모두 PC의 Web Browser를 통해서 이루어지는 배포 Method입니다.

표 3-1배포 방법 1 - 실행환경

항목

실행 환경

MiUpdater 다운로드

PC (Microsoft Windows - Microsoft Internet Explorer)

MiUpdater 실행

PC (Microsoft Windows - Microsoft Internet Explorer)

MiPlatform 실행

PC (Microsoft Windows - Microsoft Internet Explorer)

배포 프로그램 배포 단계

사용자 PC에서 Microsoft Internet Explorer(이하 IE)를 통해 배포 프로그램 모듈인 MiUpdater Cab을 다운로드하여 MiUpdater가 설치된 후 IE 상에서 MiUpdater ActiveX가 실행됩니다.

주요 모듈 배포 단계

MiUpdater ActiveX는 MiPlatform의 주요 모듈인 MiPlatform(MiPlatform의 전용 Browser)과 component를 다운로드하여 설치합니다. 이 설치 과정은 IE에 MiUpdater ActiveX를 포함하여 동작하도록 구현되어 있습니다. 설치가 완료되면 IE 상에서 MiUpdater ActiveX가 실행중인 Html이 MiPlatform ActiveX가 포함된 Html로 화면을 전환하여 MiPlatform을 실행합니다.

일반적인 배포에는 "추가 모듈 배포단계"를 예시하지 않았습니다. 만일 추가 모듈을 배포하는 경우라면 Update List File 및 Update Info File의 구성을 변경하여 MiPlatform을 실행하기 전에 추가 모듈을 배포해야 합니다.

배포 방법 2

그림 3-3배포 방법 2

배포 방법 2는 [그림 3-3]와 같이 모듈 배포는 PC의 Web Browser에서 이루어지며, 배포가 완료된 후 MiPlatform Browser가 실행되는 배포 방법입니다.

표 3-2배포 방법 2 - 실행환경

항목

실행 환경

MiUpdater 다운로드

PC (Microsoft Windows - Microsoft Internet Explorer)

MiUpdater 실행

PC (Microsoft Windows - Microsoft Internet Explorer)

MiPlatform 실행

PC (Microsoft Windows - TOBESOFT MiPlatform Browser)

배포 프로그램 배포 단계

사용자 PC에서 IE를 통해 배포 프로그램 모듈인 MiUpdater Cab을 다운로드하여 MiUpdater가 설치된 후 IE 상에서 MiUpdater ActiveX가 실행됩니다.

(이 단계는 방법1과 동일합니다)

주요 모듈 배포 단계

MiUpdater ActiveX는 MiPlatform의 주요 모듈인 MiPlatform(MiPlatform의 전용 Browser)과 component를 다운로드하여 설치합니다. 이 설치 과정은 IE에 MiUpdater ActiveX를 포함하여 동작하도록 구현되어 있습니다.

설치가 완료되면 MiUpdater ActiveX가 포함된 Html에서 MiPlatform Browser를 실행합니다. 일반적으로 실행 후 IE의 Window를 닫거나 다른 Page로 이동하는 것을 권장합니다.

일반적인 배포에는 "추가 모듈 배포단계"를 예시하지 않았습니다. 만일 추가 모듈을 배포하는 경우라면 Update List File 및 Update Info File의 구성을 변경하여 MiPlatform을 실행하기 전에 추가 모듈을 배포해야 합니다.

배포 방법 3

그림 3-4배포 방법 3

배포 방법3은 [그림 3-4]과 같이 배포 프로그램 모듈을 Web Browser에서, 주요 모듈은 MiUpdater에서 배포하며 배포가 완료된 후 MiPlatform Browser를 실행하는 배포 방법입니다.

표 3-3배포 방법 3 - 실행환경

항목

실행 환경

MiUpdater 다운로드

PC (Microsoft Windows - Microsoft Internet Explorer)

MiUpdater 실행

PC (Microsoft Windows - TOBESOFT MiUpdater)

MiPlatform 실행

PC (Microsoft Windows - TOBESOFT MiPlatform)

배포 프로그램 배포 단계

사용자 PC에서 IE를 통해 배포 프로그램 모듈인 MiUpdater Cab을 다운로드하여 MiUpdater가 설치된 후 MiUpdater가 별도의 프로세스로 실행됩니다.

주요 모듈 배포 단계

MiUpdater는 MiPlatform의 주요 모듈인 MiPlatform, component를 다운로드하여 설치합니다. 이 설치 과정은 MiUpdater에서 자동적으로 진행됩니다. 모든 설치가 완료된 후 MiUpdater는 MiPlatform Browser를 실행합니다.

일반적인 배포에는 "추가 모듈 배포단계"를 예시하지 않았습니다. 만일 추가 모듈을 배포하는 경우라면 Update List File 및 Update Info File의 구성을 변경하여 MiPlatform을 실행하기 전에 추가 모듈을 배포해야 합니다.

배포 방법 4

그림 3-5배포 방법 4

배포 방법 4는 [그림 3-5]과 같이 주로 배포 프로그램 모듈이 PC에서 Microsoft ActiveSync를 통해 PDA에 이미 설치되어 있거나 설치하는 경우입니다. PDA에 설치된 MiUpdater로 주요 모듈이 배포된 후 MiPlatform Browser를 실행하는 배포 방법입니다. 이 배포 방법은 PDA에서 사용됩니다.

인터넷 연결이 가능한 경우 웹브라우저를 통해 cab 파일만 다운로드하도록 유도할 수 있습니다.

표 3-4배포 방법 4 - 실행환경

항목

실행 환경

MiUpdater 설치

개인용 PC (Microsoft Windows - Microsoft ActiveSync)

MiUpdater 실행

PDA (Microsoft Windows CE - TOBESOFT MiUpdater)

MiPlatform 실행

PDA (Microsoft Windows CE - TOBESOFT MiPlatform)

배포 프로그램 배포 단계

사용자의 PC에서 Microsoft ActiveSync로 PDA에 배포 프로그램 모듈인 MiUpdater Cab을 다운로드하여 PDA에 MiUpdater 모듈이 설치된 후 MiUpdater가 실행됩니다.

사용자의 PC에서 Microsoft ActiveSync를 통해 PDA로 배포 프로그램을 다운로드하는 일련의 작업은 별도의 Setup을 작성하여 자동화할 수 있습니다.

주요 모듈 배포 단계

MiUpdater는 MiPlatform의 주요 모듈인 MiPlatform과 component를 다운로드하여 설치합니다. 이 설치 과정은 MiUpdater 프로그램에서 자동으로 진행됩니다. 모든 설치가 완료된 후 MiUpdater는 MiPlatform Browser를 실행합니다.

일반적인 배포에는 "추가 모듈 배포단계"를 예시하지 않았습니다. 만일 추가 모듈을 배포하는 경우라면 Update List File 및 Update Info File의 구성을 변경하여 MiPlatform을 실행하기 전에 추가 모듈을 배포해야 합니다.

3.1.5화면 배포 방법

화면이란 StartXML, PI, Local BS, Resource등 MiPlatform을 실행할 때 필요한 파일(설정 파일) 또는 서비스 파일을 의미합니다.

StartXML은 화면 배포의 시작점이 되며, 화면의 배치정보 및 Application Group에 대한 정보가 포함되어 있습니다. 따라서 StartXML이 화면 중 가장 먼저 배포되어야 합니다. StartXML에 대해서는 3.2.5장에서 자세히 설명합니다.

StartXML을 제외한 기타 화면에 대한 배포는 "4. 버전관리"에서 설명하는 버전 관리 기법에 따라서 Cache되고 관리됩니다. 따라서 WebServer에 업로드되어 있다 하더라도 최소한의 다운로드로 운영됩니다.

StartXML 배포

MiPlatform의 시작점인 StartXML은 HTTP 또는 HTTPS 또는 FILE 프로토콜을 통해 접근이 가능합니다.

HTTP나 HTTPS 프로토콜을 사용하고자 한다면, WebServer에 업로드되어야 하며, 해당 WebServer가 Web을 통해 접근 가능한 네트워크 상에 있어야 합니다.

FILE 프로토콜을 사용하고자 한다면 MiUpdater를 통해 추가적인 파일과 함께 미리 StartXML을 받아 사용자 장치에 설치 되어 있어야 합니다.

기타 화면 배포

MiPlatform에서 사용하는 화면은 StartXML에 등록된 Protocol을 통해 접근이 가능합니다.

TOBESOFT에서는 MiPlatform에서 사용하기 위한 HTTP, HTTPS, FILE 프로토콜을 기본으로 제공합니다. 필요한 경우 추가적으로 개발된 프로토콜 Adapter를 StartXML에 등록하여 사용할 수 있습니다.

HTTP, HTTPS를 사용하는 경우 StartXML과 마찬가지로, WebServer에 업로드되고, Application Group, 에 대한 상대 경로 또는 절대 경로를 사용해 접근이 가능합니다.

FILE프로토콜을 사용할 경우에는 MiUpdater를 통해 WebServer로부터 미리 화면을 다운로드 받아 사용자 장치에 설치 되어 있어야 합니다.

3.2배포에 필요한 파일들

모듈 배포에 필요한 5개 파일의 내용에 따라 5가지 배포 방식 중 하나를 선택합니다. [그림 3-7]은 배포 후 MiPlatform이 실행되기까지 과정입니다. 1~9 단계는 앞에서 설명한 배포 과정이므로 간단하게 설명하고, 배포에 필요한 파일을 설명합니다.

그림 3-6배포 후 실행

1. 사용자는 Launch File을 통해 MiUpdater를 설치합니다.
2. 구동된 MiUpdater는 Update Info File을 다운로드합니다.
3~4. MiUpdater에서 Update Info File을 받습니다. Update Info file에 포함된 Update List File의 경로 정보를 분석합니다. 이때 Update 되어야 할 List 파일을 선택합니다.
5~6. MiUpdater에서 Update List File을 받습니다. Update List File을 분석합니다. Update List File분석을 통해 설치 대상 파일의 목록과 원본의 위치를 구합니다.
7. 설치 대상 파일을 서버로부터 받습니다. 이 단계는 Update List 단위로 이루어지게 됩니다.
8~9. 설치 대상 파일을 설치 및 가공합니다. 8~9단계는 Update List 단위로 7단계가 종료된 시점에서 수행합니다.
10. MiPlatform View 화면으로 전환된 후 MiPlatform에 의해 11~13단계가 수행됩니다.

3.2.1Launch File

Launch File은 MiPlatform이 실행되는데 필요한 모듈을 배포하는 Html 파일입니다.

Launch File은 IE를 통해서 MiUpdater CAB 파일을 설치하고 각 배포 방법에 맞는 방법으로 MiUpdater와 MiPlatform을 실행합니다.

Launch File에서 MiUpdater의 파라미터 값은 배포 환경에 맞게 설정되어야 합니다. MiUpdater의 설정값에 대해서는 "5.2 MiUpdater"에서 자세히 설명합니다.

Launch File에서 MiUpdater의 UpdateURL 파라미터 값을 설정해야 배포가 가능합니다.

MiPlatform 3.3을 배포할 경우 ComponentPath를 반드시 설정할 것을 권장합니다.

개발자는 배포 방법을 선택 후 배포 방법에 맞추어 Launch File을 제작해야 됩니다. 배포 방법에 대한 내용은 "3.1.4 모듈 배포의 종류"를 참고하십시오.

Launch File의 용도

배포 프로그램 모듈 설치

Launch File에는 배포 프로그램 모듈을 다운로드하여 설치하는데 필요한 정보를 등록합니다.

표 3-5배포 프로그램 모듈

배포 프로그램 모듈

주요 기능

MiUpdater331.Cab

- MiUpdater를 사용자 장치에 설치합니다.

- MiUpdater의 구성에 대해서는 "5.2 MiUpdater"를 참조 하십시오.

MiUpdater 실행 및 관리

Launch File의 예제

배포 프로그램 모듈 배포 예제

여기서 설명하는 것은 배포 프로그램 모듈을 다운로드하여 설치하는 부분입니다.

실제 사용 시 배포 프로그램 모듈만 배포하는 경우는 없으나, 배포프로그램 모듈 예제는 배포 방법 1에서 배포방법 3까지의 공통 부분이므로 별도로 설명합니다.

배포 모듈 예제는 재사용이 가능한 MiInstlr.js의 예제와 개발자가 개발 화면에 맞추어 재구성해야 되는 Launch File ( HTML 페이지)로 구성되어 있습니다.

MiInstlr.js

function CreateMiInstlr(CodeBase,,DeviceType,Version,Key) {
    document.write(
    "<OBJECT id='"+"' classid='clsid:1A000B1F-B285-4fbf-B3CD-B50845003EBB' "+
        "width=0 height=0 CodeBase='" + CodeBase + "#VERSION=" + CabVersion + "' >" +
        "<PARAM NAME=DeviceType VALUE="' + DeviceType + '" >" +
        "<PARAM NAME=Version VALUE='" + Version + "' >" +
        "<PARAM NAME=key VALUE='" + Key + "' >" +
    "</OBJECT>" );
}

MiUpdater중 ActiveX로 구성되어 Internet Explorer에서 사용할 수 있도록 구성된 부분이 MiInstaller입니다. ( 5.2 MiUpdater에서 자세히 설명합니다.)

MiInstaller를 생성은 JavaScript (또는 VisualBasic Script)를 사용해 동적으로 생성해야 합니다.

http://www.microsoft.com/korea/windows/ie/ie6/activex/default.mspx 참조

LaunchFile

<HTML>
    <HEAD>
        <TITLE> CAB 파일 배포 예제</TITLE>
    </HEAD>
    <BODY>
        <SCRIPT LANGUAGE="Javascript" type="Javascript/text" src="./MiInstlr.js"></SCRIPT>
        <SCRIPT language="Javascript" type="Javascript/text" >
            CreateMiInstlr("./MiUpdater331.cab","2009,7,1,1","MiInstlr",
                "WIN32U","3.3","Demo");
        </SCRIPT>
    </BODY>
</HTML>

예제의 스크립트(6~10 라인)는 배포 방법 1~4에 반드시 포함되어야 합니다.

MiInstaller는 여러 장치와 버전의 MiPlatform을 Update하기 위한 부분이므로 업데이트를 진행할 대상 장치와 Version을 생성할 때 입력해야 합니다.

또한 정확한 사용자 환경을 찾고 결정하기 위해 Key 값을 입력합니다.

DeviceType 및 Version에 입력할 수 있는 값은 "5.2 MiUpdater"에서 설명합니다.

배포 방법1의 Launch File 예제

배포 방법 1은 Launch File에서 MiUpdater를 사용해 MiPlatform을 배포하고, 배포된 MiPlatform을 MiPlatform View HTML로 이동하는 예제입니다.

이 방식은 기존의 HTML 페이지와 MiPlatform을 연속적으로 사용하고자 할 때 유용한 방법입니다.

LaunchFile

<HTML>
    <HEAD>
        <TITLE> 배포 방법 1의 예제</TITLE>
        <META http-equiv="Content-Type" content="text/html; charset=euc-kr">
        <SCRIPT language="JavaScript" type="Javascript/text" for="MiInstlr"
            event="OnEndDownLoad(VersionFileName,DownFileName,Type,TotalCnt,CurIndex)" >
            if ( Type == 1 ) // EVENTCONFIG
            {
                //TotalVersionFileCnt = TotalCnt;
                alert("Install Completed !! ");
                // MiPlatform 뷰어가 포함된 HTML 페이지로 이동
                window.location = "./MiPlatformView.html";
            }
        </SCRIPT>
        <SCRIPT language="JavaScript" type="JavaScript/text">
            function fnonload() {
                var bIsNeedUpdate = MiInstlr.ExistVersionUpCnt();
                if (bIsNeedUpdate)
                    MiInstlr.StartDownload();
                else
                {
                    // 배포 대상이 없으므로 MiPlatform 뷰어가 포함된 HTML 페이지로 이동
                    window.location = "./MiPlatformView.html";
                }
            }
        </SCRIPT>
    </HEAD>
    <BODY onload="fnonload">
        <SCRIPT language="JavaScript" type="Javascript/text"  src="./MiInstlr.js"></SCRIPT>
        <SCRIPT language="JavaScript" type="Javascript/text" >
            CreateMiInstlr("./MiUpdater331.cab","2009,7,1,1","MiInstlr",
                "WIN32U","3.3","Demo");
            MiInstlr.Launch = false;
        MiInstlr.UpdateURL = "http://your.site.com/site/update/update-info-file.xml";
            MiInstlr.StartXML = "http://your.site.com/site/key/StartXML.xml";
            MiInstlr.Componentpath = "%UserApp%\\Company\\KeyName\\Component";
        </SCRIPT>
    </BODY>
</HTML>

MiUpdater의 Property, Method, Event는 "5. 주요 모듈 설명"에서 설명합니다.

MiPlatformView.html은 "~~ MiPlatform View File"에서 설명합니다.

배포 방법 2의 Launch File 예제

배포 방법 2는 Launch File에서 MiUpdater를 사용해 MiPlatform을 배포하고, 배포된 MiPlatform을 별도의 프로세스로 구동하는 예제입니다.

이 방식은 기존의 HTML페이지에서 MiPlatform전용 브라우저로 사용하고자 할 때 유용한 방법입니다.

LaunchFile

<HTML>
    <HEAD>
        <TITLE> 배포 방법 2의 예제</TITLE>
        <META http-equiv="Content-Type" content="text/html; charset=euc-kr">
        <SCRIPT language="JavaScript" type="Javascript/text" for="MiInstlr"
            event="OnEndDownLoad(VersionFileName,DownFileName,Type,TotalCnt,CurIndex)" >
            function fndorun() {
                // MiPlatform 전용 Browser실행
                MiInstlr.Run();
                // 배포 화면 종료.
                window.location = "/index.html";
            };
            if ( Type == 1 ) // EVENTCONFIG
            {
                //TotalVersionFileCnt = TotalCnt;
                alert("Install Completed !! ");
                fndorun();
            }
        </SCRIPT>
        <SCRIPT language="JavaScript" type="JavaScript/text">
            function fnonload() {
                var bIsNeedUpdate = MiInstlr.ExistVersionUpCnt(); 
                if ( bIsNeedUpdate )
                    MiInstlr.StartDownload();
                else
                    fndorun();
            }
        </SCRIPT>
    </HEAD>
    <BODY onload="fnonload">
        <SCRIPT language="JavaScript" type="Javascript/text"  src="./MiInstlr.js"></SCRIPT>
        <SCRIPT language="JavaScript" type="Javascript/text" >
            CreateMiInstlr("./MiUpdater331.cab","2009,7,1,1","MiInstlr",
                "WIN32U","3.3","Demo");
            MiInstlr.Launch = false;
            MiInstlr.UpdateURL = "http://your.site.com/site/update/update-info-file.xml";
            MiInstlr.StartXML = "http://your.site.com/site/key/StartXML.xml";
            MiInstlr.Componentpath = "%UserApp%\\Company\\KeyName\\Component";
            MiInstlr.GlobalVal = "Data for Single-Sign-On";
            MiInstlr.Width = 1032; // 구동될 전용 Browser의 넓이
            MiInstlr.Height = 732; // 구동될 전용 Browser의 높이
        </SCRIPT>
    </BODY>
</HTML>

MiUpdater의 Property, Method, Event는 "5. 주요 모듈 설명"에서 설명합니다.

배포 방법 3의 Launch File 예제

배포 방법 3은 Launch File에서 MiUpdater를 별도의 프로세스로 구동하고, MiUpdater에서 MiPlatform을 배포하고, 배포된 MiPlatform을 전용 브라우저로 구동하는 예제입니다.

이 방식은 최초 설치 시 HTML로 된 기존의 페이지로 접근해 MiPlatform을 배포하고, 이후 전용 프로그램의 형태로 MiPlatform을 이용할 때 유용한 방법입니다.

개발자는 사용자에게 최초설치 이후 직접 MiPlatform을 실행하도록 하기 위해 ShortCut의 생성 또는 mpl 파일의 배포를 할 수 있습니다.

LaunchFile

<HTML>
    <HEAD>
        <TITLE> 배포 방법 3의 예제</TITLE>
        <META http-equiv="Content-Type" content="text/html; charset=euc-kr">
        <SCRIPT language="JavaScript" type="JavaScript/text">
            function fnonload() {
                MiInstlr.MakeShortCut("%system%\\MiUpdater331.exe", 
                    "-R false -L true -D WIN32U -V 3.3 -K key",
                    "Site Name", 
                    "%UserApp%\\Company\\KeyName\\icon.ico", "desktop");
            }
        </SCRIPT>
    </HEAD>
    <BODY onload="fnonload">
        <SCRIPT language="JavaScript" type="Javascript/text"  src="./MiInstlr.js"></SCRIPT>
        <SCRIPT language="JavaScript" type="Javascript/text" >
            CreateMiInstlr("./MiUpdater331.cab","2009,7,1,1","MiInstlr",
                "WIN32U","3.3","Demo");
            MiInstlr.Launch = false;
        MiInstlr.UpdateURL = "http://your.site.com/site/update/update-info-file.xml";
            MiInstlr.StartXML = "http://your.site.com/site/key/StartXML.xml";
            MiInstlr.Componentpath = "%UserApp%\\Company\\KeyName\\Component";
            MiInstlr.GlobalVal = "Data for Single-Sign-On";
            MiInstlr.Width = 1032; // 구동될 전용 Browser의 넓이
            MiInstlr.Height = 732; // 구동될 전용 Browser의 높이
        </SCRIPT>
    </BODY>
</HTML>

MiUpdater의 Property, Method, Event는 "5. 주요 모듈 설명"에서 설명합니다.

배포 방법4의 Launch File 예제

배포 방법 4는 PDA에서 MiPlatform 전용 브라우저를 설치하고 실행하기 위한 방법입니다.

PDA용 Internet Explorer는 Cab의 설치 및 ActiveX의 사용에 제약이 있으므로 Cab 파일의 설치 및 구동을 사용자가 수행해야 합니다. ActiveSync 또는 메모리 카드 복사를 통한 Cab 파일의 복사는 별도로 하고 웹 브라우저를 이용하여 Cab 파일을 배포하는 것에 대해 설명합니다.

PDA용에 대한 배포는 용량 및 각 고객사별 단축 아이콘 생성 등을 위해 Cab을 각 고객사에 맞추어 제작되어야 합니다.

LaunchFile

<HTML>
    <HEAD>
        <TITLE> 배포 방법 4의 예제</TITLE>
        <META http-equiv="Content-Type" content="text/html; charset=euc-kr">
    </HEAD>
    <BODY>
        <A href="http://your.site.com/site/key/PocketPC/MiUpdater331.cab "> 설치 시작</A>
    </BODY>
</HTML>

PDA용 MiUpdater331.cab은 개발자가 직접 작성해야 합니다.

Cab의 설치가 완료되면 PDA상에 바로가기 아이콘이 생성되고, 그 아이콘을 실행하여 MiUpdater 또는 MiPlatform을 실행해야 됩니다.

3.2.2MiPlatform View File

MiPlatform View File은 IE상에서 MiPlatform ActiveX를 실행하는 HTML 파일입니다.

MiPlatform View File은 배포 방법 1에서 사용됩니다.

MiPlatform View File의 제작은 각 화면의 배치, 이용 방법등에 따라서 개발자에 의해 개발되어야 합니다.

MiPlatform View File의 이름 또는 화면의 구성은 개발자에 의해 임의로 정의될 수 있습니다.

MiPlatform View File의 용도

MiPlatform View File의 예제

MiPlatformX와 MiPlatformMX는 "5.1.3 MiPlatformX"와 "5.1.4 MiPlatformMX"에서 더 자세히 설명합니다. 샘플은 UNICODE 버전을 기준으로 작성되었습니다.

MiPlatformCtrl.js

function CreateMiPlatformX(id,Key,nWidth,nHeight) {
    document.write("<OBJECT classid='clsid:761C6511-03CE-4B78-ACD8-645CEF3CB714' id='" + id + "' " +
        "width=" + nWidth + " height=" + nHeight + ">" +
        "<PARAM E=LUE='" + Key + "' >" +
        "<PARAM E=AutoSize LUE='false' >" +
        "</OBJECT>");
}

function CreateMiPlatformMX(id,Key,nWidth,nHeight) {
    document.write("<OBJECT classid='clsid:3F4762E6-3DBD-458C-9BE8-10C0F26C969D' id='" + id + "' " +
        "width=" + nWidth + " height=" + nHeight + ">" +
        "<PARAM E=LUE='" + Key + "' >" +
        "<PARAM E=AutoSize LUE='false' >" +
        "</OBJECT>");
}

MiPlatformView File

<HTML>
    <HEAD>
        <TITLE> MiPlatform View File의 예제</TITLE>
        <META http-equiv="Content-Type" content="text/html; charset=euc-kr">
        <SCRIPT language="JavaScript" for=MipX event="Initialize(RefHostwnd)" >
            alert("Initialize");
        </SCRIPT>
        <SCRIPT language="JavaScript" for=MipX event="UserNotify(nNotifyID,Msg)" >
            alert("UserNotify(bStart : " + bStart)
        </SCRIPT>
        <SCRIPT language="JavaScript" for=MipX event="Communication(disp,bStart)" >
            alert("Communication(bStart : " + bStart)
        </SCRIPT>
        <SCRIPT lnaguage="javaScript" type=="Javascript/text">
            function fnOnLoad(){
                MipX.DoRun();
            }
        </SCRIPT>
    </HEAD>
    <BODY OnLoad="fnOnLoad()">
        <SCRIPT language="JavaScript" type="Javascript/text" src="./MiPlatformCtrl.js"></SCRIPT>
        <SCRIPT language="JavaScript" type="Javascript/text">
            CreateMiPlatformX("MipX","Demo",1024,768);
        </SCRIPT>
    </BODY>
</HTML>

3.2.3Update Info File

Update Info File은 MiUpdater에서 배포할 파일의 목록을 관리하는 XML 파일입니다.

Update Info File의 용도

Update Info File의 XML Schema

표 3-6Update Info File의 XML Schema

Params


Param id ="VERSION" type = "string"

Update Info File의 Version

Param id ="Config" type = "string"

Update Info File

항상 true 값을 갖습니다.

Param id ="DEVICE" type="string"

DeviceType (Win32 또는 CE 중 택일)

Param id ="STATUS" type="string"

다운로드 상태를 저장합니다.

사용자 장치에서만 의미 있는 정보입니다.

오류 발생 시 Local에 저장되어 있는 파일에서 배포 상태를 점검 할 수 있습니다.

0: client에 배포 안됨

1: 다운로드 완료(임시 디렉토리)

2: 배포 완료

※ 시스템에서 사용하는 부분이므로 "0"으로 세팅합니다.

N회

반복

dataset id=DeviceName


colinfo id='DEVICE' type='string' size='255'

colinfo id='SOURCE' type='string' size='255'

colinfo id='VERSION' type='string' size='255'

colinfo id='UACFIX' type='string' size='255'

colinfo id='STATUS' type='string' size='2'

N회반복

DEVICE

DeviceType (Win32 또는 CE 중 택일)

SOURCE

Update List File의 URL

상대 경로의 형태로 입력 시 Update Info File의 경로를 기준으로 인식됩니다.

VERSION

Version 정보 (ex: 2009.7.1.1)

UACFIX

Window Vista 이후 버전에서 UAC 기능과 관련해 ActiveX 등록을 HKLM에 해야 할 경우에 대해 판단합니다.

TRUE 또는 1 : HKLM에 등록해야 하는 경우.

FALSE 또는 0 : HKLM에 등록할 필요가 없는 경우.

이외의 값 : 상관없이 다운로드

STATUS

다운로드 상태를 저장합니다.

사용자 장치에서만 의미 있는 정보입니다.

오류 발생 시 Local에 저장되어 있는 파일에서 다운로드 상태를 점검할 수 있습니다.

0: client에 배포 안됨

1: 다운로드 완료(임시 디렉토리)

2: 배포 완료

※ 시스템에서 사용하는 부분이므로 "0"으로 세팅합니다.

필수 항목은 회색음영으로 표시했습니다.

Update Info File의 예제

Update Info File

<?xml version='1.0' encoding='euc-kr'?>
<root>
    <params>
        <param id='VERSION' type='string'>2009,7,1,1</param>
        <param id='Config' type='string'>true</param>                
    </params>
    <!-- Device: 'win32  Device명: win32, Jupiter, Nexio, PocketPC -->
    <dataset id='win32'>
        <colinfo id='SOURCE' type="string" size='255'/>
        <colinfo id='DEVICE' type='string' size='255'/>
        <colinfo id='VERSION' type="string" size='255'/>
        <colinfo id='STATUS' type="string" size='2'/>
        <!--목록 리스트 -->
        <record>
            <DEVICE>win32</DEVICE>  <!--Win32, Ce -->
            <SOURCE>/win32/MiPlatform_engine.xml</SOURCE>
        </record>
        <record>
            <DEVICE>win32</DEVICE>
            <SOURCE>/win32/MiPlatform_component.xml</SOURCE>
        </record>
    </dataset>

    <dataset id='PocketPC'>
        <colinfo id='SOURCE' type="string" size='255'/> 
        <colinfo id='DEVICE' type='string' size='255'/>
        <colinfo id='VERSION' type="string" size='255'/>
        <colinfo id='STATUS' type="string" size='2'/>
        <record>
            <DEVICE>ce</DEVICE>
            <SOURCE>/ppc/MiPlatform.xml</SOURCE>
        </record>
    </dataset>
</root>

3.2.4Update List File

Update List File은 다운로드하여 설치할 파일의 목록과 정보를 가지고 있는 XML 파일입니다.

Update List File의 용도

Update List File의 XML Schema

표 3-7Update List File의 XML Schema

Params


Param id ="DEVICE" type = "string"

DeviceType (Win32 또는 CE 중 택일)

Param id ="SOURCE" type = "string"

Download File의 URL

Update List File의 위치를 기준으로 상대위치로 지정가능합니다.

Param id ="TARGET" type = "string"

설치 대상 파일이 설치될 위치.

일부 설치 방법에 대해서는 다른 용도로 사용됩니다.

사용자 장치의 경로를 표현 할때는 다음 Alias형태를 사용할 수 있습니다.

"%Alias이름%상대경로"

ex) %COMPOENT%

또는

%UserApp%Company\KeyName\

Alias의 목록은 "7.2 MiUpdater에서 사용하는 Alias 목록"을 참조하십시오.

ACTION이 DOWN이면서 TARGET이 GUID의 형태로 지정되면 설치 방식을 CAB파일로 인지합니다.

ACTION이 MSI라면 TARGET은 Product Code로 지정되어야 합니다.

Param id ="FILENAME" type = "string"

다운로드할 파일 이름.

또는 다운로드할 MSI 파일 이름.

Param id ="PATCHFILENAME" type = "string"

배포할 MSP 파일 이름.

ACTION이 MSI인 경우에만 OLDVERSION과 함께 사용됩니다.

Param id ="VERSION" type = "string"

배포할 파일의 Version

대상이 DLL 또는 Exe의 경우에 Version 정보 앞에 "System::"이 붙어 있으면 사용자 장치에 저장된 Update List File에 저장된 버전을 사용하지 않고 실제 파일의 버전 정보를 비교합니다.

(설치 대상이 MSI, DLL, EXE, OCX, CAB의 경우에만 정상 동작합니다.)

ACTION이 MSI인 경우에는 "[Major].[Minor].[Release]" 포맷을 사용합니다.

예) 3.30.10

DLL, EXE, OCX, CAB의 경우 4자리 형태의 버전 정보를 사용합니다.

예) 2009.7.1.1

Param id ="UACFIX" type = "string"

Window Vista 이후 버전에서 UAC 기능과 관련해 ActiveX 등록을 HKLM에 해야할 경우에 대해 판단합니다.

TRUE 또는 1 : HKLM에 등록해야 하는 경우.

FALSE 또는 0 : HKLM에 등록할 필요가 없는 경우.

이외의 값 : 상관없이 다운로드

Param id ="OLDVERSION" type = "string"

MSP로 설치 되어도 되는 버전.

ACTION이 MSI이고 PATCHFILENAME이 설정된 경우에만 사용됩니다.

현재 사용자 장치에 저장된 버전이 OLDVERSION보다 이전 버전이라면 MSI를 통해 설치 되고, 이후 버전이라면 MSP를 통해 설치됩니다.

Param id ="ACTION" type = "string"

설치 방법 지정.

MSI, DOWN과 같은 형태로 입력하며 "[표 38] ACTION의 종류와 동작 방식"에서 자세히 설명합니다.

Param id ="STATUS" type = "string"

다운로드 상태를 저장.

사용자 장치에서만 의미 있는 정보입니다.

오류 발생 시 Local에 저장되어 있는 파일에서 배포 상태를 점검 할 수 있습니다.

0: client에 배포 안됨

1: 다운로드 완료(임시 디렉토리)

2: 배포 완료

※ 시스템에서 사용하는 부분이므로 "0"으로 세팅합니다.

Param id ="ARGUMENT" type = "string"

설치 수행 시 부가적인 정보를 저장.

ACTION이 MSI, DOWNRUN, DOWNLAUNCH일 때, 실행되는 프로그램의 인자를 지정합니다.

N회

반복

dataset id=output


colinfo id='DEVICE' type='string' size='255'

colinfo id='SOURCE' type='string' size='255'

colinfo id='TARGET' type='string' size='255'

colinfo id='FILENAME' type='string' size='255'

colinfo id='PATCHFILENAME type='string' size='255'

colinfo id='VERSION' type='string' size='255'

colinfo id='UAC' type='string' size='255'

colinfo id='OLDVERSION' type='string' size='255'

colinfo id='ACTION' type='string' size='255'

colinfo id='STATUS' type='string' size='2'

colinfo id='ARGUMENT' type='string' size='255'

N회반복

DEVICE

Params의 DEVICE와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

SOURCE

Params의 SOURCE와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

TARGET

Params의 TARGET와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

VERSION

Params의 VERSION와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

UAC

Params의 UAC와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

ACTION

Params의 ACTION와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

FILENAME

Params의 FILENAME와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

PATCHFILENAME

Params의 PATCHFILENAME와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

OLDVERSION

Params의 OLDVERSION와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

ARGUMENT

Params의 ARGUMENT와 동일한 용도입니다.

이 Element가 없으면 Params의 값을 사용합니다.

필수 항목은 회색음영으로 표시했습니다.

ACTION

표 3-8ACTION의 종류와 동작 방식

ACTION 이름

의미 및 동작 방식

MSI

MSI/MSP 형태의 설치파일을 수행하여 설치.

MSI (Microsoft Installer)형태와 MSP(Microsoft Patch)의 형태로 제공된 설치 파일을 설치 합니다.

TCHFILENAME을 이용해 MSI와 MSP중선택을 하게 됩니다. 사용자 장치가 Microsoft Windows인 경우에만 사용이 가능 합니다. (PDA 불가)

MSP가 MSI보다 용량이 작지만, MSP 사용에는 다음과 같은 제약 조건이 있습니다.

  1. MSI로 설치된 대상에 대해서만 사용이 가능.

  2. 설치된 Product Version에 MSP파일이 허용하는 버전에서만 가능.

위의 조건을 만족하는 OLDVERSION미만의 버전으로 설치되어 있거나, 설치가 되어 있지 않으면 MSI를 사용하고, MSP가 사용 가능하다면 MSP를 사용하도록 되어 있습니다.


"4. 버전관리"에서 추가 적으로 설명합니다.

주의) MSI파일은 최초 설치시와 중간 Update시 msi파일의 이름이 동일하지 않은경우 설치 장애가 발생합니다.

MSI사용시 각 Field의 내용은 다음과 같이 입력하게 됩니다.

<ACTION> : "MSI"문자열.

<FILENAME> : MSI확장자를 가지는 설치 파일의 파일명

<PATCHFILENAME> : MSP확장자를 가지는 패치 파일의 파일명.

<SOURCE> : FILENAME의 설치 파일 또는 PATCHFILENAME의 패치 파일이 있는 서버의 URL,

(상대경로로 입력한 경우 Update List File의 경로가 BaseURL로 사용됩니다.)

<TARGET> : 설치될 MSI의 Product Code값.

설치 여부 및 버전상태를 알기 위한값입니다.

<VERSION> : 서버에 위치한 MSI파일의 Product Version.

설치 여부를 결정하기 위해 사용됩니다.

<OLDVERSION> : MSI와 MSP중 어떤 파일을 사용할지 결정하기 위한 최소 버전.

<ARGUMENT> : msi설치시 msiexec.exe(MS사에서 제공하는 msi구동 프로그램)에 전달할 추가적인 인자 값.

MSI engine의 버전에 따라 가능한 옵션을 조금씩 다르지만, 일반적으로 다음 2가지 옵션이 많이 사용됩니다.

"/qb" : Install 시 발생하는 진행바와 최소한의 UI만을 표시

"/qn REBOOT=ReallySupress" : UI를 발생하지 않음. 단, 설치시점에 해당파일이 사용 중이라면 재시작이 필요합니다.

DOWN

파일을 다운로드 하여 TARGET의 경로로 복사.

TARGET이 CAB의 CLSID이고( GUID의 형태), 대상 파일일 CAB인경우 CAB을 설치 방식을 사용합니다. (Cab 설치 기능은 Microsoft Windows 전용이며 PDA에서는 동작하지 않습니다.)

CAB형태의 설치를 하게 되는경우 <VERSION>태그에 "System::"키워드가 입력되었다면 주어진 GUID를 CLSID로 가지는 COM(ActiveX)파일을 찾아 해당 파일의 파일 버전을 읽어들이게 됩니다.

DOWNREG

파일을 다운로드 하여 TARGET의 경로로 복사 후, COM의 SelfRegistry를 수행.

COM 형태의 DLL 또는 OCX파일의 설치에 이용됩니다.(ActiveX포함)

DOWNREG는 PC에서는 실패할 가능성이 있으므로 권장되지 않으며, PDA에서만 사용할 것을 권장합니다.

내부적으로 Microsoft Windows에서는 regsvr32.exe를 사용해 등록하며, PDA에서는 regsvrce.exe를 사용해 등록합니다.

DOWNRUN

파일을 다운로드 하여 TARGET의 경로로 복사 후 실행.

실행이 종료될 때까지 대기합니다.

최초 설치시 1회 실해되거나, 업데이트 마다 1회 실행되어야하는 설치 파일을 위한 기능입니다.(실행후 해당 파일은 보존하게 됩니다.)

DOWNLAUNCH

파일을 다운로드 하여 TARGET의 경로로 복사 후 실행.

실행이 종료되기를 기다리지 않으며, Update Info File에서 지정된 모든 대상이 배포 완료되는 시점에 실행됩니다.

업데이트 완료 시점에 최초 설치시 1회 실행되거나, 업데이트마다 1회 실행되어야 하는 설치 파일을 위한 기능입니다.

CECAB

PDA용으로 제작된 CAB파일을 설치.

DEVCIVE가 CE로 설정되어 있어야 정상 동작 합니다.

TARGET은 설치를 수행 하기전에 임시로 설치할 경로로 설정합니다.

DELETE

TARGET으로 지정된 파일을 제거.

DELETEREG

TARGET으로 지정된 파일을 제거.

COM 형태의 DLL 또는 OCX파일의 제거에 이용됩니다.(ActiveX포함)

단, 제거하기 전에 COM의 Self-Register기능을 이용해 등록해제 후 삭제합니다. Windows에서는 내부적으로 regsvr32.exe를 사용하며, PDA에서는 regsvrce.exe를 사용해 등록 해제합니다.

등록 해제 실패 여부와 무관하게 파일은 삭제됩니다.

GUID의 형태 : "{"로 시작되어 "}"로 끝나며, 24자리의 16진수로 표기함.

예) {12345678-1234-1234-1234-123456789ABC}

Update List File의 예제

Windows용 예제

Windows용 MiPlatform 3.3 UNICODE버전의 Base Library와 Engine을 설치 하는 예제 입니다.

<?xml version='1.0' encoding='euc-kr'?>
<root>
    <params> <!--디폴트값설정-->
        <param id='DEVICE' type='string'>WIN32</param>
        <param id='SOURCE' type='string'>/msi/</param>
    </params>
    <dataset id='output'>
        <colinfo id='DEVICE' type="string" size='255'/>
        <colinfo id='SOURCE' type="string" size='255'/>
        <colinfo id='TARGET' type="string" size='255'/>
        <colinfo id='FILENAME' type="string" size='255'/>
        <colinfo id='PATCHFILENAME' type="string" size='255' />
        <colinfo id='VERSION' type="string" size='255'/>
        <colinfo id='OLDVERSION' type="string" size='255'/>
        <colinfo id='ACTION' type="string" size='255'/>
        <colinfo id='ARGUMENT' type="string" size='255'/>
        <colinfo id='STATUS' type="string" size='2'/>
        <record>
            <ACTION>MSI</ACTION>
            <TARGET>{3964575C-D828-4587-AED1-E538EAAFC083}</TARGET>
            <FILENAME>MiPlatform_InstallBase330.msi</FILENAME>
            <VERSION>System::3.30.1</VERSION>
            <ARGUMENT>/qb</ARGUMENT> 
        </record>    
        <record>
            <ACTION>MSI</ACTION>
            <TARGET>{65673658-248C-49AC-9EC4-25682074A312}</TARGET>
            <FILENAME>MiPlatform_InstallEngine330U.msi</FILENAME>
            <PATCHFILENAME>MiPlatform_InstallEngine330U.msp</PATCHFILENAME>
            <VERSION>System::3.30.20</VERSION>
            <OLDVERSION>3.30.10</OLDVERSION>
            <ARGUMENT>/qb</ARGUMENT> 
        </record>
    </dataset>
</root>

PocketPC용 예제

cketPC용 예제이나, PDA가 모두 유사한 형태로 사용됩니다.

cketPC에서는 Cab형태의 설치보다 파일 복사 형태의 설치가 유용합니다.

<?xml version='1.0' encoding='euc-kr'?>
<root>
    <params> <!--디폴트값설정-->
        <param id='ACTION' type='string'>DOWN</param>
        <param id='DEVICE' type='string'>CE</param>
        <param id='SOURCE' type='string'>/engine/</param>
    </params>
    <dataset id='output'>
        <colinfo id='DEVICE' type="string" size='255'/>
        <colinfo id='SOURCE' type="string" size='255'/>
        <colinfo id='TARGET' type="string" size='255'/>
        <colinfo id='FILENAME' type="string" size='255'/>
        <colinfo id='PATCHFILENAME' type="string" size='255' />
        <colinfo id='VERSION' type="string" size='255'/>
        <colinfo id='OLDVERSION' type="string" size='255'/>
        <colinfo id='ACTION' type="string" size='255'/>
        <colinfo id='ARGUMENT' type="string" size='255'/>
        <colinfo id='STATUS' type="string" size='2'/>
        <record>
            <TARGET>%WINDOW%</TARGET>
            <FILENAME>CyBaseLib330U.dll</FILENAME>
            <VERSION>System::2009,4,1,1</VERSION>
        </record>    
        <record>
            <ACTION>DOWNREG</ACTION>
            <TARGET>%MIPLATFORM%</TARGET>
            <FILENAME>MiPlatformX330.ocx</FILENAME>
            <VERSION>System::2009,4,1,1</VERSION>
        </record>    
    </dataset>
</root>

3.2.5StartXML File

StartXML File은 MiPlatform 서비스의 설정 정보와 기본 정보가 포함된 XML 파일입니다.

MiPatform(MiPlatform의 전용브라우저)은 서비스 정보를 얻기 위하여 StartXML File을 가장 먼저 다운로드 합니다. 즉, MiUpdater가 Update Info File을 제일 처음 다운로드하는 것처럼 MiPlatform은 StartXML File을 가장 먼저 다운로드해야 합니다. StartXML File은 다운로드된 후 Local에 Cache되며, 서버의 StartXML 파일이 변경되면 다시 다운로드됩니다.

MiPlatform은 "5. 주요 모듈 설명"에서 자세히 설명합니다.

StartXML File의 용도

StartXML File의 구성

Element Tree

<?xml version="1.0" encoding="euc-kr"?>
<ConnectGroup> <!-- Root Element -->
    <Resource/>
    <Variables>
        <Var/> <!-- 1~n -->
    </Variables>
    <Usercolor/>
    <GlobalStyle>
        <Style/> <!-- 1~n -->
    </GlobalStyle>
    <Datasets>
        <Dataset> <!-- 1~n -->
            <Contents>
                <Column/> <!-- 1~n -->
                <ColInfo/> <!-- 1~n -->
                <Record/> <!-- 1~n -->
            </Contents>
        </Dataset>
    </Datasets>
    <DataObjects>
        <DataObject> <!-- 1~n -->
            <Contents/>
        </DataObject>
    </DataObjects>
    <ServiceObjects>
        <ServiceObject/> <!-- 1~n -->
    </ServiceObjects>
    <Container>
        <Component/>
    </Container>
    <ActiveX>
        <Component/> <!-- 1~n -->
    </ActiveX>
    <Protocols>
        <Protocol/> <!-- 1~n -->
    </Protocols>
    <ExtApis>
        <ExtApi/> <!-- 1~n -->
    </ExtApis>
    <MDIInfo>
        <Forms>
            <Form/> <!-- 1~n -->
        </Forms>
        <Shortcuts>
            <Shortcut/> <!-- 1~n -->
            <Variables>
                <Var/> <!-- 1~n -->
            </Variables>
        </Shortcuts>
    </MDIInfo>
    <DockBars>
        <DockBar/> <!-- 1~n -->
    </DockBars>
    <Domaininfo/>
    <AppGroups>
        <DataGroup/> <!-- 1~n -->
        <AppGroup> <!-- 1~n -->
            <Script/>
            <Resource/>
            <Variables>
                <Var/> <!-- 1~n -->
            </Variables>
        </AppGroup>
    </AppGroups>
    <Menu>
        <Item> <!-- 1~n -->
            <Item/> <!-- 1~n -->
        </Item>
    </Menu>
    <Script>
        <![CDATA[]]>
    </Script>
</ConnectGroup>

Prolog Element

Prolog는 Root Element가 나오기 전에 선언되는 Header 정보입니다. Prolog는 XML선언문과 DTD에 관한 정보로 나뉘는데 StartXML File에서는 XML 선언문만 사용합니다.

표 3-9Prolog Element

Attribute

설명

version

W3C에서 발표된 XML Version

encoding

CharSet

<?xml version="1.0" encoding="euc-kr"?>

Root Element

Root Element는 전역변수와 컴포넌트 통신 Protocol을 정의하고 기본 메뉴를 설정합니다.

태그는 <ConnectGroup>로 시작하여 </ConnectGroup>으로 종료합니다.

표 3-10Root Element

Attribute

입력값 / 형태

설명

예시

필수여부

id

String / default값은 "global"

X

Startxml을 구분할 수 있는 고유 id 값

Id="abc"

AboutDlgType

UserDefineDefault(Default)

X

MiPlatform의 AboutBox Type을 결정하는 인자.

값은 Userdefine과 Default로 구분된다. 값을 입력하지 않은 경우 Default로 적용됩니다.

Userdefine의 경우 AboutBox의 디자인은 사용자가 하게 된다. AboutString의 데이터를 이용하여 AboutBox를 구성하게 됩니다. 이 경우 기존의 AboutString의 입력값과는 다른 형태로 입력값을 지원합니다. 사용법은 AboutString 참조. 반드시 필요한 인자값은 아니며 없을 경우 Default AboutBox가 실행됩니다.

  • Default AboutBox의 경우 하단의 Powered By Tobesoft는 변경할 수 없음. (PDA, Window 포함)

  • PDA에서는 PDA 제약사항으로 Aboutimage를 통한 image 변경할 수 없음. (PDA 제약사항)

  • AboutBox의 상단 Static만이 AboutString을 통해서 변경 가능함.

  • 하단 및 이미지 변경을 원하는 경우 AboutDlgType = "UserDefine"으로 설정 후 디자인한 페이지를 AboutString을 통해 URL로 넘겨주면 됨.

AboutDlgType="UserDefine" or AboutDlgType="Default"

AboutImage

imageid | x 좌표 | y좌표

X

MiPlatform의 AboutBox에서 보여주는 회사 이미지

  • PDA에서는 PDA 제약사항으로 Aboutimage를 통한 image 변경할 수 없음. (PDA 제약사항)

  • 이미지 변경을 원하는 경우 AboutDlgType = "UserDefine"으로 설정 후 디자인한 페이지를 AboutString을 통해 URL로 넘겨주면 됨.

AboutImage="IMG_LEVEL_3|10|50"

AboutScroll

True / False (Default Value)

X

MiPlatform의 AboutBox에서 문자열의 스크롤 여부

(Win32에서만 사용 가능)

AboutScroll="false"

AboutString

AboutDlgType이 Default 이거나 AboutDlgType이 없는 경우

- 스트링|URL|x좌표

Default Value - \n\nMiPlatform Ver 1.0\n Copyright (c) 2003, Tobesoft

AboutDlgType이 UserDefine인 경우

- URL|x좌표|y좌표Default값은 없다. 반드시 URL값은 있어야 한다.

X

AboutDlgType이 Default 이거나 AboutDlgType이 없는 경우 MiPlatform의 AboutBox에서 보여주는 문자로 보통 회사명 URL을 입력하는 경우 AboutBox에서 문자를 클릭하여 IE에서 해당 URL을 띄울 수 있습니다.

AboutDlgType이 UserDefine인 경우 사용자가 디자인한 xml파일을 띄워줍니다.

  • AboutDlgType이 Default 인 AboutBox의 경우 하단의 Powered By Tobesoft는 변경할 수 없음. (PDA, Window 포함)

  • 하단 변경을 원하는 경우 AboutDlgType = "UserDefine"으로 설정 후 디자인한 페이지를 AboutString을 통해 URL로 넘겨주면 된다.

// AboutDlgType이 Default 이거나 AboutDlgType이 없는 경우 
AboutString="Miplatform||50
Copyright (C) 2003, TobeSoft
WebSite:http://www.tobesoft.com|http://www.tobesoft.com|30
mailto:comnik@tobesoft.com|mailto:comnik@tobesoft.com|30"

// AboutDlgType이 UserDefine인 경우 
AboutString="Part::test.xml|10|10"

CodePage

Default Value - Prolog에는 encoding 값

X

전체에 사용되는 default CodePage

CodePage="EUC-KR"

Language

Language의 Locale identifier

X

전체에 사용되는 default Language

(※V3.3에서는 아랍어권 언어로 선택하면 타이틀, 시스템 메뉴, 창 메뉴 등의 위치가 오른쪽 중심으로 변경되는 기능이 추가되었습니다.)

Language="1042"

Font

"FontName,FontSize, Bold, Italic, StrikeOut, Underline"

Default Value - Thahoma, 9

X

Default Font정의

Font="굴림,12,Bold"

Initurl

AppGroup의 prefix::화면이름

O

초기화면 이름

SDI에서 SessionURL이 있는 경우 SessionURL이 먼저 Load되고 Session Form이 Close되면 InitURL이 활성화됩니다.

MDI에서는 의미 없는 값입니다.

initurl="sales::Login"

ReSize

True / False (Default Value)

X

MiPlatform resize 가능 여부

ReSize= "true"

Title

""

X

초기 화면이 Load 되기 전 화면Title

MDI에서 MainTitle로 사용됩니다. ChildWindow의 Title과 통합되어 MainTitle로 사용됩니다.

title="test"

Version

""

X

Version 정보

version="1.0"

XMLFormat

True (Default Value) / False

X

통신 시 Xml Format 사용 여부

True인 경우는 XML 통신

False인 경우는 Binary통신

XMLFormat="false"

Titlebar

True (Default Value) / False

X

MiPlatForm에서 타이틀 바 표시 여부

Titlebar= "True"

Statusbar

True (Default Value) / False

X

MiPlatForm에서 상태 바 표시

여부

Statusbar= "True"

TraceMode

New / Append / None(Default Value)

X

Trace 내용을 File로 Write할 때의 방식 정의

개발자 버전은 PID에서 보여줍니다.

사용자 버전은 File로 Write됩니다.

TraceMode가 New인 경우는 기존 내용을 무시하고 새로 TraceFile로 작성됩니다.

TraceMode가 Append인 경우에는 기존 TraceFile에 내용뒤에 추가됩니다.

TraceMode가 None인 경우에는 Tracefile을 삭제 합니다.

File 저장 경로는 %UserApp%\ TOBESOFT\MiPlatform330(U)\TraceLog_MiPlatform.txt 입니다.

%UserApp%는 Alias에 대한 항목은 "7.2 MiUpdater에서 사용하는 Alias 목록"를 참고하십시오.

TraceMode="none"

UseUpdateMenu

True (Default Value) / False

X

PDA의 Updater Menu 사용 여부

UseUpdateMenu="True"

sessionURL

AppGroup의 prefix::화면 이름

X

Session 연결을 위한 Form Url

로그인 Form으로 사용됩니다.

Session 처리 방법을 임의로 선택할 수 있습니다.

Session Form에서 Session 여부를 설정합니다. Component reference의 Form Api의 함수(initsession, closesession 등이 있음)

sessionURL="Tutorial::Session.xml"

sessionopenstyle

Title: Titlebar 생성 여부

Status: Statusbar 생성 여부

Closeflag: 닫기 버튼 생성 여부

Resize: Form Resize 가능 여부

Scroll: Form Resize 시 Scroll 생성 여부

Titlebar: Titlebar 생성 여부

Statusbar: Statusbar 생성 여부

Width: 초기 화면 크기

Height: 초기 화면 크기

X

MDI에서 Session 연결을 위한 Form의 Open 될 때 Style

Argument, OpenStyle 형식과 유사합니다.

sessionopenstyle="titlebar=false Closeflag=false "

style

""

X

Default Style ID

GlobalStyle에서 지정된 Style 중 하나를 선택할 수 있습니다.

style=""

hideframe

True / False(Default Value)

X

MDI에서 Session Form이 실행될 때 Main창 Open 여부

단, PlatformGlobal의 AppStatus 속성을 지정하는 경우 Main창이 Open됩니다.

hideframe="true"

bkwidth

""

Max : 현재 정의된 align을 기준으로 Maximize

X

MDI Main 창의 BackGround에 표시될 이미지의 Width

bkwidth=""

bkheight

""

Max : 현재 정의된 align을 기준으로 Maximize

X

MDI Main 창의 BackGround에 표시될 이미지의 Height

bkheight=""

bkvalign

""

Top : MDI Main 창 상단

Middle : MDI Main 창 중앙

Bottom : MDI Main 창 하단

X

MDI Main 창의 BackGround에

표시될 이미지의 세로 위치

bkvalign="middle"

bkalign

""

Left : MDI Main 창 좌측

Center : MDI Main 창 중앙

Right : MDI Main 창 우측

X

MDI Main 창의 BackGround에

표시될 이미지의 가로 위치

bkalign="left"

Bkimage

""

X

MDI Main 창의 BackGround에 표시될 이미지

Resource에 지정된 Image에서 선택

bkimage=""

BkColor


X

MDI Main 창의 BackGround 색

BkColor="yellow"

Fixedmenu

True / False(Default Value)

X

Menu 고정 여부

FixedMenu="true"

border

True(Default Value) / False

X

MDI에서 MDIClient영역의 Border

Border="false"

OkButton

True / False(Default Value)

X

PocketPC계열의 PDA에서 Main Browser의 SmartMinimize버튼 대신 Ok버튼을 사용할지여부.

OkButton="true"

UseDefaultMenu

True(Default Value) / False

X

MiPlatform Browser의 기본 메뉴을 사용할 지 여부.

Windows에서는 기본메뉴로 Exit가 있습니다.

PDA에서는 기본메뉴로 Exit와 About메뉴를 포함합니다.

UseDefaultMenu="false"

ShowSubTitleText

True(DefaultValue) / False

X

MDI의 ChildFrame이 Maximize된경우 MainTitle에 MdiChild의 SubTitle을 더해 보여줄지여부.

ShowSubTitleText="false"

ShowSubTitleButton

True(Defualt Value) / False

X

메뉴가 없을때 childframe이 max가 되면 mainframe에 childframe을 제어하는 restore/min/close버튼들을 보일지 여부

ShowSubTitleButton="false"

EnforcedIgnoreInput

True / False(Default)

X

통신중에 사용자 입력을 금지할 수 있는 여부

true로 설정되면 SetCapture와 WaitCursor가 동작중일때, 마우스 및 키보드의 입력을 받아 들이지 않게 됩니다. 단, ESC키는 통신 중단을 의미하므로 받아 들여 통신 중단 여부를 처리합니다. 통신시 WaitCursor를 사용하는 경우에도 영향을 주게 됩니다.

EnforcedIgnoreInput = "true"

Event

Platform Global(StartXML)과 관련된 Event입니다. Event는 <ConnectGroup> 태그 상에 기술되며 일반 컴포넌트의 Event와 유사하게 처리됩니다. Script는 StartXML에 기술됩니다.

표 3-11Event

Event

Argument

예시

필수

여부

설명

OnInit

obj

OnInit="InitGlobal"

X

obj:Platform Global Object

StartXML을 다운로드한 후 Loading이 완료되면 발생됩니다.

OnExit

obj

OnExit="ExitGlobal"

X

obj:Platform Global Object

전체 프로그램을 종료하기 전에 발생됩니다. 하지만 이미 엔진쪽은 내려간 상태이므로 정상적인 작업을 할 수 없습니다. 단지 Browser를 닫지 않은 상태로만 유지할 수 있으므로 엔진쪽을 종료시키지 않으려면 OnBeforeExit Event나 Form의 OnUnLoadCompleted Event에서 false를 리턴합니다.

리턴 값에 따라 Exit 여부가 결정됩니다. 리턴 값을 True로 설정하면 Exit 됩니다. 리턴 값을 False로 설정하면 Exit 되지 않습니다.

OnLoadCompleted

obj,

strURL

OnLoadCompleted="GlobalLoadCompleted"

X

obj:Platform Global Object

strURL:Load가 완료된 URL

StartXML을 다운로드한 후 Load가 완료되면 발생됩니다.

OnError

obj

nErrorCode

strErrorMsg

OnError="ErrorGlobal"

X

obj:Platform Global Object

nErrorCode:에러 코드

strErrorMsg:에러 메시지

실행 중에 에러가 발생한 경우에 발생됩니다.

OnBeforeExit

obj

OnBeforeExit="Global_BeforeExit"

X

obj:Platform Global Object

OnExit Event가 발생되기 전에 발생됩니다.

리턴 값에 따라 OnExit Event를 발생하지 여부가 결정됩니다.

리턴 값을 True로 설정하면 OnExit Event가 발생됩니다.

리턴 값을 False로 설정하면 OnExit Event가 발생되지 않습니다. 종료를 무시하고 싶은 경우에는 OnBeforeExit Event에서 False를 리턴합니다.

onCopydata

obj

strData

nLen

OnCopyData="Globla_CopyData"

X

obj:Platform Global Object

strData:받은 데이터

nLen:받은 데이터의 사이즈

다른 어플리케이션으로부터 WM_COPYDATA 메시지를 받을 경우에 발생합니다. Global에 OnCopyData Event를 처리하는 함수가 있을 경우에 Global의 처리 함수를 수행합니다. Global에 OnCopyData Event를 처리하는 함수가 없을 경우에는 현재 활성돠 되어 있는 Form에서 처리 함수를 수행합니다. Global과 Form에 모두 처리함수가 있을 경우에는 Global의 함수만 처리됩니다.

Form의 OnCopyData Event와 유사하므로 자세한 사항은 Component reference 매뉴얼을 참조합니다.

onActivate

obj

onActivate ="Globla_Activate"

X

obj:Platform Global Object

MainFrame이 Active될때 발생합니다.

onDeactivate

obj

onDeactivate ="Global_DeActivate"

X

obj:Platform Global Object

MainFrame이 DeActive될때 발생합니다

OnSize

obj,

strType,

nCx,

nCy

OnSize="Global_Size"

X

obj:Platform Global Object

strType: Minimize/Maximize/Restore

nCx:변경된 width 사이즈

nCy:변경된 Height 사이즈 MainFrame의 크기가 변경될 때 발생합니다.

OnDetectLaunchingBrowser

obj

OnDetectLaunchingBrowser="Global_ DetectLaunchingBrowser"

X

obj:Platform Global Object Browser(배포모듈)가 OnlyOne 속성이 True일 때 두번째 이상 Browser 생성 요청시 최초 생성되어 있는 Browser를 인지하여 Browser를 활성화한 후 Event를 발생시킵니다.

OnKeyDown

obj,

objSenderObj

nChar,

bShift,

bControl,

bAlt,

nLLParam,

nHLParam

OnKeyDown="Global_ OnKeyDown"

X

obj:Platform Global Object

ojbSenderObj:최초 key를 입력받은 object

nchar:입력받은 key값,

bShift: shiftkey가 눌렸는지 여부

bControl: control key가 눌렸는지 여부

bAlt:alt key가 눌렸는지 여부

nLLParam:windwos에서 key발생시 Low data

nHLParam:windows에서 key발생시 High data

MDI환경에서 ChildForm이 없을 때 MainFrame의 Key가 눌렸을 때 발생하는 Event입니다.

Form의 OnKeyDown Event와 동일한 값이므로 자세한 사항은 Component reference 매뉴얼을 참조합니다.

OnCommunication

obj,

bStatus

OnCommunication ="Global_OnCommunication"

X

obj:Platform Global Object

bStatus: 통신 시작 되었을 때는 true, 끝났을때는 false

통신의 시작과 끝이되었을 때 Event가 발생합니다.

통신시 dialog를 띄우거나 할 때 유용합니다.

Resource

모든 Application Group에서 사용 가능한 Resource를 선언하는 부분입니다. Resource는 MiPlatform에서 사용 가능한 이미지들의 집합입니다. 선언된 Resource 안의 이미지는 서비스를 하는 모든 화면에서 사용할 수 있습니다. 또한 모든 Device에서 공통으로 사용하는 Resource는 따로 정의할 수 있습니다. Server StartXML의 Resource Version이 Local에 저장되어 있는 Resource Version 보다 최신이면 파일을 Local에 다운로드 합니다. 생략할 수 있습니다

표 3-12Resource

Attribute

입력값/형태

예시

필수

여부

설명

Url

""

url="http://www.abc.co.kr/ global.res"

O

모든 단말기에서 쓰이는 Resource 파일 이름

StartXML을 기준으로 한 상대경로도 가능합니다.

Version

""

version="1000"

O

Version 정보

Ext

""

Ext="res"

X

확장자 이름

Variables

모든 화면에서 사용되는 전역 변수와 엔진 변수를 선언합니다. 생략 가능합니다.

엔진 변수는 통신 시 서버쪽으로 보내는 변수를 말합니다.

Var

표 3-13Variables - Var

Attribute

입력값/형태

예시

필수

여부

설명

Id

""

id="name"

O

변수 이름

Value

""

Value=""

X

변수 초기값

Type

Global(Default Value)

Share

type="global"

X

변수 Type

- global : 전역 변수

모든 화면에서 공통으로 사용되는 변수

- share : 엔진 변수

통신 시 Cookie에 담아 서버쪽으로 보내는 변수로 Local과 서버에서 공유할 수 있습니다.

Usercolor

화면을 디자인할 때 사용자가 사용할 Color를 선언합니다. 디자인을 변경할 때 각 화면의 Color값을 수정하지 않고 UserColor의 값을 변경하여 색을 수정합니다. 생략할 수 있습니다.

표 3-14Usercolor

Attribute

입력값/형태

예시

필수

여부

설명

UserN

""

User0="red"

X

Color 선언.

User0부터 User63까지 선언할 수 있습니다.

Color Property 지정 시 red, blue값 대신 user0, user1로 값을 설정할 수 있습니다.

GlobalStyle

Style은 Font, Color의 모든 속성을 정의한 것입니다.

GlobalStyle은 전체 화면에서 사용할 수 있는 Style을 정의한 것입니다. 툴에서 Style은 Component별로 설정할 수 있습니다.

Component의 Style을 기술합니다. 생략할 수 있습니다.

Style

표 3-15GlobalStyle - Style

Attribute

입력값/형태

설명

예시

필수

여부

ID

""

Style 이름

id="name"

O

Font

""

Font

font="tahoma,9"

X

FixedFont

""

글자 길이가 같게 표시되는 Component Font

fixedfont="tahoma,9"

X

TextColor

""

Font Color

textcolor="BTNTEXT"

X

WindowColor

""

Window Color

windowcolor="white"

X

ButtonColor

""

Button Color

buttoncolor="BTNFACE"

X

FormColor

""

Form Color

formcolor="white"

X

EditColor

""

Edit Color

editcolor="white"

X

DisableColor

""

Component가 Disable 된 경우 Color

disablecolor="GRAYTEXT"

X

DisableBKColor

""

Component가 Disable 된 경우 Background Color

disablebkcolor="BTNFACE"

X

BorderColor

""

Component의 윤곽선 Color

bordercolor="black"

X

DKShadowColor

""

Component의 Border가 Flat이 아닌 경우 Dark Shadow Color

DKSHADOWcolor="3DDKSHADOW"

X

Hilight3dColor

""

선택된 Grid, ListBox, ComboBox 등의 3D Color

HILIGHT3dcolor="BTNHIGHLIGHT"

X

HilightTextColor

""

선택된 Grid, ListBox, ComboBox 등의 Text Color

HILIGHTTextcolor="HIGHLIGHTTEXT"

X

HilightColor

""

선택된 Grid, ListBox, ComboBox 등의 Color

HILIGHTcolor="HIGHLIGHT"

X

Shadowcolor

""

Component의 Border가 Flat이 아닌 경우 Shadow Color

Shadowcolor="BTNSHADOW"

X

Face3dColor

""

Component의 Border가 Flat이 아닌 경우 표면 Color

face3dcolor="BTNFACE"

X

Light3dcolor

""

Component의 Border가 Flat이 아닌 경우 밝게 표시되는 Color

Light3dcolor="3DLIGHT"

X

Datasets

Global로 사용하는 Dataset을 기술합니다. 생략할 수 있습니다. 간단하게만 서술하고 자세한 부분은Component 매뉴얼 중 Dataset 부분을 참고하십시오.

Dataset

Global로 사용하는 Dataset을 기술합니다.

표 3-16Datasets - Dataset

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

Dataset의 ID

Id="g_test" 

O

GroupKey

""

Dataset을 Groupping할 Column 이름

GroupKey="column1"

X

PivotKey

""

Dataset을 Pivoting할 Column 이름

PivotKey="column1"

X

Auto

True(Default Value)False

Dataset에 ServiceID가 있는 경우 MiPlatform이 Loading될 때 Dataset의 자동 로드 여부

Auto="false"

X

ServiceID

""

Dataset과

연결된 Business Service

DataGroup의 "Prefix::경로"으로 입력합니다.

ServiceID="TestDB::Test.xml"

X

ServiceDSetID

""

ServiceID 호출 결과로 받을 Dataset 이름

ServiceDSetID="output"

X

UpdateControl

True(Default Value)False

Datset의 레코드별 상태 자동 제어 여부

True이면 자동으로 관리되며, 변경된 사항은 원본 레코드에 저장됩니다.

UpdateControl = "false"

X

Argument

""

ServiceID를 실행할 때 Argument값

"변수명=값 변수명=값"형식으로 입력합니다.

Argument="a=b c=d"

X

Event

""

Dataset과 연결된 Event

OnColumnChanged="g_test_OnColumnChanged"

X

DatasetType

Dataset (Default)

WebService

Pivot

Filter

Group

Dataset의 종류

Dataset 형태가 아닌 다른경우에는 모두 DataObject가 지정되어야 합니다.

DatasetType = "dataset"

X

DataObject

"DatasetID"

"DataObject"

DatasetType가 WebService 일때에는 DataObjectID 를

그외 DatasetType가 Dataset이 아닌 Filter/Pivot/Group 일때에는 DatasetID가 지정됩니다.

DataObject = "datasetid"
DataObject = "dataobjectid"

X

contents

Dataset의 Column, Const Column, Record를 기술합니다.

표 3-17Datasets - Dataset - contents

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

Dataset의 ID

Id=" g_test" 

O

column

Const(상수) Column을 기술합니다.

표 3-18Datasets - Dataset - column

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

Column(Const Column)의 이름

id="item_cd"

O

Type

""

Column(Const Column)의 Type

type="STRING"

O

colinfo

Dataset을 구성하고 있는 Column 정보를 기술입니다.

표 3-19Datasets - Dataset - colinfo

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

Column의 이름

id="item_cd"

O

Size

""

Column의 Size

size="50"

O

Type

""

Column의 Type

type="STRING"

O

Summ

""

Count/min/avg/max/sumtext속성이 있습니다. 이 속성은 논리적인 row에 의해 column이 가상으로 생성되고, 설정에 따른 값이 저장됩니다. (Count는 GroupKey 속성과 연동됩니다.)

Summ="Count"

X

BindCol

""

GroupDataset의 경우

해당 컬럼이 가져야할 원본 Dataset의 컬럼ID를 지정합니다.

BindCol ="ColumnID"

X

Record

Dataset에 포함된 Data의 내용입니다. 여러 개의 레코드를 기술할 수 있습니다.

DataObjects

V3.3에서는 PID에서 Web Service부분을 제거했으므로 이 부분도 제거 되었습니다.

ServiceObjects

V3.3에서는 PID에서 Web Service부분을 제거했으므로 이 부분도 제거 되었습니다.

Container

Sub Element에 기술되는 Component의 공통 속성을 기술합니다.

Sub Element에 기술되는 Component의 Version이 없는 경우 Default Version 값을 대신 사용합니다.

표 3-20Container

Attribute

입력값/형태

설명

예시

필수

여부

url

""

다운로드할 Component 경로

지정된 경로에 파일이 존재하지 않는 경우, 다운로드하여 저장할 경로로 사용됩니다.

url="http://www.aaa.com/CompLoc"

X

Version

""

Version 정보

Version="1000"

O

Component

화면에서 사용할 Component List를 기술합니다.

표 3-21Container - Component

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

각 XML 파일에서

사용될 Component ID

id="Edit"

O

Name

""

Component DLL 파일 이름

Component DLL 내부의 Component 이름

name="cyEdit"

O

Moudle

""

Component DLL 파일 이름

Module="CyComCtl330"

X

Style

""

Component ID 별

Default Style

Stlye="Stlye0"

X

Version

""

Default Value

- Container 에

있는 version 값

Version 정보

Version="1000"

X

새로운 Component를 개발한 경우, 추가 및 사용 방법

1. 새로 만든 Component 파일을 기존 Component가 설치된 경로에 추가합니다.

2. StartXML에 Component Tag를 추가하여 새로 만든 Component를 등록합니다.

예) User Component가 MyNewComp.dll인 경우

> Copy MyNewComp.dll Component가 설치된 경로

StartXML에는 다음과 같이 등록합니다.

<component id=" NewComp" name="MyNewComp" version="1000"/>

ActiveX

MiPlatform에서 ActiveX를 사용할 때 기술합니다.

MiPlatform에서 ActiveX를 사용하는 방법은 StartXML에 ActiveX만 등록하여 사용하는 방법과 ActiveX를 ComponentDLL로 랩핑해서 사용하는 방법이 있습니다.

보통 대부분의 경우는 StartXML에 등록해서 사용합니다. 하지만 LicenseKey와 관련된 프로그래밍을 하거나 Binding과 관련된 추가 코딩이 필요한 경우에 ActiveX를 Component DLL로 랩핑해서 사용합니다.

Sub Element에 기술되는 ActiveX의 공통 속성을 기술합니다.

Sub Element에 기술되는 ActiveX의 Version이 없는 경우 Default Version값을 대신 사용합니다

표 3-22ActiveX

Attribute

입력값/형태

설명

예시

필수

여부

url

""

Version이 바뀐 경우

다운로드할 ActiveX의 경로

url="http://www.aaa.com/CompLoc" 

X

Version

""

Version 정보

Version="1000"

X

Component

전체 화면에서 사용하는 ActivX Component를 기술합니다.

표 3-23ActiveX - Component

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

각 XML 파일에서

사용될 Component ID

Id="AxChartFx"

O

Progid

""

ActiveX Program ID.

ActiveX CLSID

Progid="ChartFX.Chart"
Progid="{&hellip;}"

O

Nowindow

""

Component 윈도우 부재 여부

Nowindow="true"

X

Version

""

Default Value

- ActiveX에 있는 version 값

Version 정보

Version="1000"

X

Image

""

툴에서 제공되는 컴포넌트 이미지 번호

Image="28"

O

Title

""

툴에서 표시될

Component Title

Title="ActiveX1"

X

UsePersistdata

""

PersistData를 사용 여부

UsePersistdata="true"

X

LicenseKey

""

사용자 버전 배포용 해당 ActiveX LicenseKey

LicenseKey=""

X

Protocols

통신 또는 DB 사용 시 사용되는 Protocol의 정보를 기술합니다.

Sub Element에 기술되는 Protocol의 공통 속성을 기술합니다

Sub Element에 기술되는 Protocol의 Version이 없는 경우 Default Version값을 대신 사용합니다

표 3-24Protocols

Attribute

입력값/형태

설명

예시

필수

여부

Version

""

Version 정보

version="1000"

O

url

""

Down받을 Protocol이 있는

위치

url="http://www.aaa.com/ProtoLoc/"

X

Protocol

사용하는 Protocol List를 기술합니다.

Protocol Adaptor는 기본적으로 HttpAdp, DB와 관련된 LiteDbAdp를 제공합니다.

Protocol마다 Attribute 리스트는 따로 정의됩니다. 기본 Attribute는 다음과 같습니다.

AppGroups Sub Tag 중 경로에 해당되는 Attribute값의 Prefix로 Protocol id를 사용합니다.

표 3-25Protocols - Protocol

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

각 XML 파일에서

사용된 Protocol ID

Id="http"

O

Name

""

Protocol DLL 파일 이름

name="CyHttpAdp"

O

Version

""

Default Value

- Protocols에 있는 Version 값

Version 정보

version="1000"

X

새로운 Adaptor를 개발한 경우, 추가 및 사용 방법

1. 기존 Component가 설치된 경로에 새로 만든 Component 파일을 추가합니다.

2. StartXML에 Component Tag를 추가하여 새로 만든 Component를 등록합니다

예) User Component가 MyNewAdp.dll인 경우

> Copy MyNewAdp.dll Component가 설치된 경로

StartXML에는 다음과 같이 등록합니다.

<protocol id="NewAdp" name="MyNewAdp" version="1000"/>

HttpAdp

HttpAdp는 통신을 담당하는 Adaptor입니다.

HttpAdp에서 제공되는 Attribute는 다음과 같습니다.

HttpAdp의 자세한 내용은 Component Reference 메뉴를 참고하십시오.

표 3-26Protocols - HttpAdp

Attribute

입력값/

형태

설명

예시

필수

여부

Id

""

각 XML 파일에서

사용된 Protocol ID

id="file"
id="http"    

O

Name

""

Protocol DLL 파일 이름

name="CyHttpAdp"
name="CyHttpAdp"

O

Version

""

Version 정보

Version="1000"

X

Compress

True

False (Default Value)

통신 시 압축 여부

Compress="false"
Compress="True"

X

XMLFormat

True (Default Value)

False

True인 경우 XML 통신

False인 경우는 Binary 통신

XMLFormat="True"
XMLFormat="False"

X

GWServer

IP

GateWay Server IP

GWServer="10.1.54.1"

X

GWPort

Port

GateWay Server Port

GWPort ="6000"

X

CodePage

CodePage

CodePage 이름

Null인 경우 <ConnectGroup>의 CodePage를 참고합니다.

CodePage="EUC-KR"

X

ScriptPath

경로

HttpAdp가 Local에 있는 파일을 접근할 때 사용되는 Script 경로

scriptPath="script:GetReg('ScriptPath','c:\\Script\\')"

X

UseCache

True (Default Value)

False

Cache 여부

usecache="true"
usecache="false"

X

Sync

True

False(Default Value)

통신 Sync 방식

Sync인 경우 데이터 처리가 완료될 때까지 다음 작업을 대기합니다.

Async인 경우 데이터 처리가 완료될 때까지 기다리지 않고 다음 작업을 진행합니다.

Sync를 선택한 경우 통신 응답을 받는 동안 멈춤 현상이 발생할 수 있습니다.

Sync="false"

X

UseWaitCursor

True(Default Value)

False

WaitCursor 사용 여부

UseWaitCursor="true"

X

Retry

""

Default Value

-"2"

통신 시 Retry 횟수

Retry="3"

X

TimeOut

""

Default Value

-"30"

통신 시 TimeOut(Second)

TimeOut="20"

X

AutoCookie

True

(Default Value)

False

통신 시 Shared Global 변수를 Cookie 변수로 전달 여부

AutoCookie="false"

X

SendHttpStr


통신 시 보낸 Http Header String

(Simulatform에서는 항상 LogView에 표현되며, MiPlatform에서는 TraceMode가 True인 경우에만 Log 파일에 표현됩니다.)

ReadOnly

X

RecvHttpStr


통신 시 받은 Http Header String

(Simulatform에서는 항상 LogView에 표현되며, MiPlatform에서는 TraceMode가 True인 경우에만 Log 파일에 표현됩니다.)

ReadOnly

X

SendContents


통신 시 보낸 Contents

(Simulatform에서는 항상 LogView에 표현되며, MiPlatform에서는 TraceMode가 True인 경우에만 Log 파일에 표현됩니다.)

ReadOnly

X

RecvContents


통신 시 받은 Contents

(Simulatform에서는 항상 LogView에 표현되며, MiPlatform에서는 TraceMode가 True인 경우에만 Log 파일에 표현됩니다.)

ReadOnly

X

CompressMethod

"ZLIB"

"LZSS"(Default Value)

압축 방식

CompressMethod="Zlib"

X

TraceMode

True

False(Default Value)

Simulator인 경우에는 LogView에, MiPlatform인 경우에는 Log 파일에 표현됩니다.

TraceMode="true"

X

LiteAdp

LiteAdp는 DB 관련 작업을 담당하는 Adaptor입니다.

LiteAdp에서 제공되는 Attribute는 다음과 같습니다.

LiteAdp 자세한 내용은 Component Reference 메뉴를 참고하십시오.

표 3-27Protocols - LiteAdp

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

각 XML 파일에서

사용될 Protocol ID

id="ldb" 
id="ldb"

O

Name

""

Protocol DLL 파일 이름

name="CyLiteDBAdp"

O

Version

""

Version 정보

Version="1000"

X

Driver_Id

ADO/ODBC

Driver Adaptor ID

driver_id="ODBC"
driver_id="ADO"

X

Driver_name

AdaptDBAdo/

AdaptDBAdoce/

AdaptDBOdbc

Driver Adaptor 파일 이름

driver_name="adaptdbodbc"
driver_name="adaptdbado"

X

Driver_ver

숫자

Driver Adaptor Version

driver_ver="10000"

X

PreConnect

True(Defualt Value)

false

사전 DB 연결 여부

PreConnect="True"
PreConnect="false"

X

Extapi_id

""

DB별 Extension API

Extapi_id="StrFunc"

X

Extapi_name

""

Extension Adaptor 파일 이름

Extapi_name="CyStrFunc"

X

Extapi_ver

숫자

Extension

API의 Version

Extapi_ver="1000"

X

ConnectionString

ado(Provider= ;Data Source=;Persist Security Info=;)

Connection할 때 필요한 스트링

ConnectionString="Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\\DB\\Test.mdb"
ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\BJH_MineTech\DB\smilk.mdb;Persist Security Info=False"

X

odbc(Driver=;DBQ=;)

(driver에 따라 다름)

X

dbuser

""

DB 접근 사용자 ID

dbuser="user"

X

dbpass

""

DB 접근 사용자 비밀번호

dbpass="1234"

X

DBSyncCall

True

False(Default Value)

Thread 내에서 순차적 DB 연결 여부

(동시 DB 접근 시 문제가 생기는 경우에 사용됩니다.)

DBSyncCall=true

X

Connected

True

False

현재 DB Connect 상태

ReadOnly

X

BindMethod

"Replace"

"Ordered"

(Default Value)

"Named"

Bind Method 종류

BindMethod="ordered"

X

Sync

True

False (Default Value)

통신 Sync 방식

Sync인 경우 데이터 처리가 완료될 때까지 다음 작업을 대기합니다.

Async인 경우 데이터 처리가 완료될 때까지 기다리지 않고 다음 작업을 진행합니다.

Sync를 선택한 경우 통신 응답을 받는 동안 멈춤 현상이 발생할 수 있습니다.

Sync="False"
Sync="True"

X

ExtApis

외부 Libray를 Wrapping한 Dll의 속성을 기술합니다. 생략할 수 있습니다.

ExtApi

ExtApi에서 제공되는 Attribute는 다음과 같습니다

표 3-28ExtApis - ExtApi

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

외부Dll의 ID

id="ApiSample"

O

Name

""

외부Dll의 파일 이름

Name="CyApiSample"

O

* MDIInfo

MDIInfo는 MDI에서 사용되는 Icon 정보와 Sub 화면으로 사용될 Form을 정의합니다.

MDI를 사용할 때 기술합니다. 생략 가능합니다.

forms

MDI Sub Form의 공통 속성을 기술합니다.

표 3-29MDIInfo - forms

Attribute

입력값/형태

설명

예시

필수

여부

Left

""

MDI Sub Form의 Left

Left="20"

X

Top

""

MDI Sub Form의 Top

Top="0"

X

Width

""

MDI Sub Form의 Width

width="240"

X

Height

""

MDI Sub Form의 Height

height="320"

X

OpenStyle

""

MDI Sub Form의 생성 Style

-Status(StatusBar):StatusBar 사용 여부

True/False

-Title(TitleBar) :TitleBar 사용 여부

True/False

-CloseFlag :Close button 사용 여부

True/False

-AutoSize :Form Size 변경 여부

True/False

-Session :SessionURL 통과 확인 여부

True/False

-Scroll :Scroll 사용 여부

True/False

-Openstyle :Noraml(Resize 가능)

Min(Minimize)

Max(Maximze)

Fixed(Resize 불가능)

-Instance : Multi(여러 개의 Instance 사용 가능)

Single(한 개의 Instance 사용 가능)

Argument 형식과 유사

OpenStyle="normal"
OpenStyle=
"Title=false CloseFlag=false"

X

Form

MDI에서 Sub 화면으로 사용될 Form을 기술합니다.

표 3-30MDIInfo - forms - form

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

MDI Sub Form으로 사용될 ID

id ="MDIForm1"

O

IconID

""

MDI Sub Form의 Icon Resource ID

IconID="IDB_COMBO2"

X

Left

""

MDI Sub Form의 Left

Left="10"

X

Top

""

MDI Sub Form의 Top

Top="10"

X

Width

""

MDI Sub Form의 Width

width="240"

X

Height

""

MDI Sub Form의 Height

height="320"

X

initURL

""

MDI Sub Form으로 사용될 Form URL

Prefix::경로

initURL="Tutorial::GridTest.xml"

O

OpenStyle

""

Default OpenStyle값을 참고합니다.

OpenStyle="Closeflag=false title=false"

X

StartXML

""

연결할 프로젝트의

StartXML

StartXML=""

X

Sessionurl

""

최초 연결 시 사용될

Form Url

로그인 Form으로 사용됩니다.

Prefix::경로

sessionurl=""

X

Autostart

True

False

(Default Value)

초기화 시 화면 호출 여부

autostart="true"

X

Session

True

(Default Value)

False

SessionURL 통과 확인 여부

session="false"

X

Scroll

True

(Default Value)

False

Scroll 사용 여부

Scroll="false"

X

Shortcuts

MDI에서 Sub Form 바로가기 아이콘의 공통 설정을 기술합니다.

표 3-31MDIInfo - Shortcuts

Attribute

입력값/형태

설명

예시

필수

여부

Align

""

vertical:

수직정렬

Horizon:

수평정렬(Default Value)

Custom:정의된 좌표를 따라

정렬

아이콘 정렬 순서

align="vertical"

O

Font

""

Font

font="Tahoma,9"

O

Color

""

아이콘 Color

color="black"

O

BKColor

""

아이콘 BKColor

bkColor="red"

X

ImageID

""

아이콘의 이미지 Resource ID

StartXML의 Global에 설정된Resource입니다.

Script에서 NewWindow 또는 NewWindowEx를 사용해 MDI Sub Form을 띄운 후 Minimize한 경우와 Script Form의 Icon Property가 없는 경우 Minimize Icon이 됩니다.투명색은 RGB(0, 128, 128)입니다.

RGB(0,0,0)도 투명하게 처리되므로 주의하십시오.

ImageID="IDB_COMBO1"

O

TopMargin

""

아이콘이 표시될 MDI Main 화면의 상단 여백

TopMargin="30"

O

LeftMargin

""

아이콘이 표시될 MDI Main 화면의 좌측 여백

LeftMargin="40"

O

Text

""

아이콘 Text

Text=""

X

DisplayType

"Icon"(Default Value)

"Report"중 택일

Icon Manager의 Display형태를 ICon형식(기존과 동일한 형식)으로 보여줄지 Report형식으로 보여줄지 설정

Report 일 경우에는 Header를 선택하면 자동 소트됩니다.

DisplayType ="Report"

X

HeaderTitle

"A:B:C"

:으로 구분하며 3개의 값을 입력합니다.

Default

("Title:

Description:

Status")

DisplayType이 "Report"일 경우 Header Title을 정의

Report의 Column개수는 3개로 고정이며 첫 Column은 Title정보, 두번째 Column은 Description 정보, 세번째 Column은 Form의 상태를 보여줍니다.

HeaderTitle="이름:설명:상태"

X

Description

""

DisplayType이 "Report"일 경우 아이템의 두번째 Column에 해당하는 문자값

Description="Description"

X

Shortcut

MDI에서 Sub Form 바로가기 아이콘의 설정을 기술합니다.

표 3-32MDIInfo - Shortcuts - Shortcut

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

바로가기 아이콘 ID

Id="icon1" 

O

ImageID

""

아이콘의 이미지 Resource ID

StartXML의 Global에 설정된Resource입니다.

ImageID="IDB_COMBO2"

X

Form

""

아이콘과 연결될 MDI Sub Form ID로 상단 form에 설정된 ID를 입력해야 합니다.

Form="MDIForm2"

O

Text

""

아이콘 Text

Text="부동산"

X

Instance

""

Single : MDI Sub Form 한 번만 생성(Default Value)

Multi : MDI Sub Form 여러 번 생성

바로가기 실행 시 MDI Sub Form 반복 생성 여부

Instance="single"

O

Left

""

아이콘의 Left

Left="10"

X

Top

""

아이콘의 Top

Top="10"

X

Description

""

Default (Shortcuts의 Description의 값)

DisplayType이 "Report"일 경우 아이템의 두번째 Column에 해당하는 문자값

Description="Description"

X

Variables

MDI Sub Form 실행 시 전달될 Variable을 지정합니다.

바로가기 아이콘이 선택되어 MDI Sub Form이 실행될 때 Argument로 전달되는 값입니다. MDI Sub Form에서 변수를 접근할 수 있습니다. 생략할 수 있습니다.

var

MDI Sub Form 실행 시 전달할 Variable에 대해 기술합니다.

표 3-33MDIInfo - Shortcuts - Variables - var

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

변수 ID

id="gv_company" 

O

Value

""

변수 Value

value=""

O

DockBars

MiPlatformX를 나타내는 DockBar를 Docking할 수 있습니다.

DockBar의 공통 속성을 기술합니다. 생략할 수 있습니다.

표 3-34DockBars

Attribute

입력값/형태

설명

예시

필수

여부

Fixed

True(Defalult Value)

False

DockBar의 Docking 여부

Fixed ="true"

O

DockBar

DockBar의 속성을 기술합니다.

표 3-35DockBars - DockBar

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

DockBar의 ID

id="DockBar" 

O

Fixed

True(lue)

False

DockBar의 고정 위치 Docking 여부

Fixed가 false인 경우에 Left, Top, Right, Bottom에 Docking 가능합니다. Left, Right에서 Top, Bottom으로 변경할때나 Top, Bottom에서 Left,Right로 변경할 때 초기 사이즈를 주고 싶으면 HorzCx, HorzCy, VertCx, VertCy 값을 설정합니다.

Fixed ="true"

X

Text

""

Popup 메뉴의 DockBar Text

text ="DockBar1"

X

Scroll

True

False(Defalut Value)

Scroll 사용 여부

scroll="false"

X

Name

""

DockBar에 표시될 Control.

현재는 MiPlatformX만 사용 가능

name="MiPlatformX"

X

Version

""

DockBar Version

Version=""

X

InitURL

""

MiPlatformX로 표시되는 Form Url. Prefix::경로

InitURL="Tutorial::Menu.xml"

X

StartXML


연결할 프로젝트의 StartXML

StartXML=""

X

Sessionurl


최초 연결 시 사용되는

Form Url

로그인 Form으로 사용됩니다.

Prefix::경로

sessionurl=""

X

Left

""

DockBar의 Left

left="0"

X

Top

""

DockBar의 top

top="0"

X

Right

""

DockBar의 Right

right="300"

X

Bottom

""

DockBar의 Bottom

bottom ="20"

X

Width

""

DockBar의 Width

Align이 Left, Right일 때 적용됩니다.

Width="30"

X

Height

""

DockBar의 height

Align이 Top, Bottom일때 적용됩니다.

Height="30"

X

Align

""

left:왼쪽

top:위쪽

right:오른쪽

bottom:아래쪽

DockBar의 위치

align="top"

X

Xbutton

True

False

DockBar의 Close 아이콘 표시 여부

Fixed = True일 때 Default Value는 False

Fixed = False일 때 Default Value는 True

Xbutton="false"

X

Ledge

""

DockBar에 표시되는

MiPlatform과의 좌측 여백

ledge=""

X

Tedge

""

DockBar에 표시되는

MiPlatform과의 상단 여백

tedge=""

X

Redge

""

DockBar에 표시되는

MiPlatform과의 우측 여백

redge=""

X

Bedge

""

DockBar에 표시되는

MiPlatform과의 하단 여백

bedge=""

X

AddMenu

True(Default Value)

False

DockBar의 Popup 메뉴 표시 여부

AddMenu="false"

X

Visible

True(Defalult Value)

False

DockBar의 Visible 여부

Visible="false"

X

Border

True(Default Value)

False

DockBar의 Border 생성 여부

Border="false"

X

Session

True(Default Value)

False

SessionURL의 통과 확인 여부

Session="false"

X

Float

True

False(DefaultValue)

DockBar가 초기에 Float상태로 생성될지 여부

Docking될 때 사이즈와 Float시 사이즈를 다르게 주고 싶을때는 FloatCx, FloatCy값을 설정합니다.

Float="false"

X

FixedSize

True

False(DefaultValue)

Docking되었을때 DockBar의 사이즈를 자동으로 조절하지 않고 고정할지 여부

FixedSize="true"

X

Index

""

DockBar가 생성될 때 위치 정보

같은 Align값을 갖는 DockBar들 사이에서 Index번호가 정해진다.

Align이 Left,Right일 경우에는 왼쪽을 0으로 오른쪽으로 갈수록 값이 증가합니다. Align이 Top, Bottom인 경우에는 위쪽을 0으로 하여 아래로 갈수록 값이 증가합니다.

Index="0"

X

SubIndex

""

같은 Index를 가지는 DockBar에서의 Sub위치 정보

SubIndex="1"

X

HorzCx

""

DockBar이 Top, Bottom에 Docking될때 넓이

HorzCx="200"

X

HorzCy

""

DockBar이 Top, Bottom에 Docking될때 높이

HorzCy="100"

X

VertCx

""

DockBar이 Left, Right에 Docking될때 넓이

VertCx="200"

X

VertCy

""

DockBar이 Left, Right에 Docking될때 넓이

VertCy="100"

X

FloatCx

""

DockBar이 Floating될때 넓이

FloatCx="200"

X

FloatCy

""

DockBar이 Floating될때 넓이

FloatCy="100"

X

Domaininfo

국가별, 사용자별 등 다양한 요구에 따라 해당 Component에 표현 방식을 다르게 할 수 있는 기능입니다.

XML로 되어있는 Domain정보 파일을 읽어와서 Component에 적용해 주는 기능입니다. Domain 상세 정보는 부록 7-6. Domain 정보 파일 XML을 참고 합니다.

표 3-36Domain Info

Attribute

입력값/형태

설명

예시

필수

여부

Ext

""

X

prefix="xml"

X

URL

""

Domain정보가 들어있는 경로

StartXML을 기준으로 한 상대경로도 가능합니다.

AppGroup의 prefix::화면 이름 경로도 가능합니다.

URL=".\domain.xml"

O

Version

"

Version 정보

Version ="1000"

O

CacheLevel

none/

static/

dynamic/

session

(Default Value)

Cache기능 사용 여부

None : Cache하지 않습니다.

Static : Cache합니다.

(local부터 찾아본 후 없으면

통신을 통해 다운로드 합니다.)

session: 서버 연결 시, Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다.

Dynamic : session과 같은 방법을 사용합니다. 단, 같은 화면에 대해서도 매번 요청 작업을 합니다.

자세한 사항은 4.3 Caching을 참고합니다.

CacheLevel ="static"
CacheLevel ="dynamic"

X

AppGroups

AppGroup은 서비스를 Group으로 묶어서 관리를 쉽게하기 위한 단위입니다.

AppGroup에는 화면의 Data를 관리하는 DataGroup과 화면을 관리하는 Application Group으로 나뉩니다. DataGroup은 Data를 받을 경로, CacheLevel 및 TrMethod를 설정합니다. DataGroup은 Dataset을 Load하거나 Transaction Method를 호출할 때 사용됩니다. Application Group은 화면을 받을 경로, Resource를 받올 경로 및 Group 내에서 사용하는 변수 등을 설정합니다. Application Group은 화면 전환 시, Dialog 또는 Open Method를 호출할 때 URL정보로도 사용됩니다.

Server StartXML의 DataGroup별 CacheLevel과 Version 정보에 따라서 Server로부터 변경된 Data 수신 여부가 결정됩니다. Server의 StartXML Version 정보가 Local의 Version 정보보다 최신인 경우 다운로드 합니다. 단, CacheLevel에 따라 다운로드 여부가 달라질 수 있습니다.

DataGroup

화면을 구성하는 Data에 관한정보를 기술합니다.

표 3-37AppGroups - DataGroup

Attribute

입력값/형태

설명

예시

필수

여부

Prefix

""

사용자 분류ID

prefix="none"
prefix="db"

O

Type

ASP/JSP/ SAP/

Local DB/

MiServer

PID에서 인지하기위한 대상 서비스의 Type.

PID에서 실제Data와 연계하여 개발하기 위해 사용됩니다.

Type="ASP"


Baseurl

(Url)

""

DataSource의 기본 경로

WebListner와 DBManager를 사용하는 경우는 "http://서버경로? group=DBM&service=" 형태로 명시하며 Script 내부에서는 Prefix::Service명으로 사용합니다.

ProtocolID::경로

baseurl="http://10.1.54.2/nwl/
CyWebLsnrIIS300.dll?
group=DBM&service="
baseurl="ldb://ldbsvc::"

O

CacheLevel

none/static

dynamic/

session


Default Value

- Session

Cache 기능 사용 여부

None : Cache하지 않습니다.

static : Cache합니다.

(local부터 찾아본 후 없으면

통신을 통해 다운로드 합니다.)

Session : 서버 연결 시, Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다.

Dynamic : session과 같은 방법을 사용합니다. 단, 같은 화면에 대해서도 매번 요청 작업을 합니다.

자세한 사항은 4.2 Caching을 참고합니다.

cachelevel="dynamic"
cachelevel="none"

X

Ext

Default Value

: dbs

Cache된 정보가 저장되는 파일의 확장자

ext="dbs" 

X

CodePage

code page

Default Value

- ConnectGroup에 있는 CodePage 값

code page 이름

Null인 경우 <ConnectGroup>의 CodePage를 참고합니다.

codePage="EUC-KR"

X

Language

Locale ID

Locale ID

Language=" 1042"
Language 관련 부록을 참고하십시오.

X

Version

Default Value

- 1000

Version 정보

version="1000"

O

TrMethod

All

Update

normal

(Default Value)

Transaction 실행 시 Method Type

trMethod="update"

X

StreamVer

3100

4000(DefaultValue)

Http Adaptor를 통해 통신할 때 Binary Type으로 통신을 Call할 때 LayOut을 설정하며 3.3이전 버전과 다르므로 전버전과 호환을 하기 위해서는 "3100"으로 설정합니다.

3.3버전으로 업그레이드 하는 경우에는 서버쪽도 3.3용 라이브러리를 사용해서 변경작업을 해야합니다.

StreamVer ="3100"

X

KeepAlive

TrueFalse(Default)

KeepAlive 기능을 사용함

(HTTP 프로토콜만 지원합니다.)

KeepAlive="True"

X

KeepAliveTime

60 (Default) -1(계속 유지)

KeepAlive 기능을 유지 시킬 시간 초(second)-1 입력시 계속 유지

(HTTP 프로토콜만 지원합니다.)

KeepAliveTime="60"

X

SocketCount

5(Default)

KeepAlive를 사용 할 때 유지하고 있을 Socket의 개수

(HTTP 프로토콜만 지원합니다.)

SocketCount="5"

X

AppGroup

그룹별 Script, Resource, Variables 정보를 기술합니다.

표 3-38AppGroups - AppGroup

Attribute

입력값/형태

설명

예시

필수

여부

Title

""

Application Group의 제목

Title="품질관리"

X

Prefix

""

사용자 분류 ID

prefix="Sample"

O

Type

form/js/bs/file

PID에서 인지하기위한 AppGroup의 용도.

AppGroup에 연결된 대상에 대해 PID가 처리할 방법에 대해 지정합니다.

Type="form"


CacheLevel

none/static

dynamic/

session


Default Value

- Session

Cache 기능 사용 여부

None : Cache하지 않습니다.

Static : Cache합니다.

(local부터 찾아본 후 없으면

통신을 통해 다운로드 합니다.)

session: 서버 연결 시 Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다.

dynamic: session과 같은 방법을 사용합니다. 단, 같은 화면에 대해서도 매번 요청 작업을 합니다.

자세한 사항은 4.3 Caching을 참고합니다.

cachelevel="dynamic"
cachelevel="none"

X

Ext

""

Default Value -

"log"

cache된 정보가 저장되는

default 확장자 이름

Ext="log"

X

CodePage

code page

Default Value

- ConnectGroup에 있는 CodePage값

code page 이름

codePage="EUC-KR"

X

Version


Version 정보

version="1.0" 

O

Language

Locale ID

Locale ID

Language=" 1042"
Language 관련 부록을 참고하십시오.

X

KeepAlive

TrueFalse(Default)

KeepAlive 기능을 사용함

(HTTP 프로토콜만 지원합니다.)

KeepAlive="True"

X

KeepAliveTime

60 (Default) -1(계속 유지)

KeepAlive 기능을 유지 시킬 시간 초(second)-1 입력시 계속 유지

(HTTP 프로토콜만 지원합니다.)

KeepAliveTime="60"

X

SocketCount

5(Default)

KeepAlive를 사용 할 때 유지하고 있을 Socket의 개수

(HTTP 프로토콜만 지원합니다.)

SocketCount="5"

X

Script

AppGroup 내에서 화면을 구성할 XML 파일의 정보를 기술합니다.

표 3-39AppGroups - Script

Attribute

입력값/형태

설명

예시

필수

여부

Baseurl

(Url)

""

화면 구성 XML파일의 기본 경로

WebListner를 사용하는 경우에는 "서버경로? ReqType=Script&id="형식으로 입력합니다.

ProtocolID::경로

baseurl="http://www.aaa.com/nwl/CyWebLsnrIIS300.dll?
ReqType=Script&id=" 
baseurl="\MineTech\Services\" 

O

Ext

""

Cache되는 파일의 확장자 이름

ext="xml"

X

CacheLevel

none/static

dynamic/

session


Default Value

-

AppGroup에 있는 CacheLevel값

Cache기능 사용 여부

none: Cache하지 않습니다.

static:Cache합니다.

(local부터 찾아본 후 없으면

통신을 통해 다운로드 합니다)

session: 서버 연결 시, Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다.

dynamic: session과 같은 방법을 사용합니다. 단 같은 화면에 대해서도 매번 요청 작업을 합니다.

자세한 사항은 4.3 Caching을 참고합니다.

CacheLevel =" dynamic"
cachelevel="none"

X

CodePage

code page

Default Value

- AppGroup 에 있는 CodePage 값

code page 이름

codePage="EUC-KR"

X

Version

""

Default Value

- AppGroup 에 있는 Version 값

Version 정보

Version="1000"

X

TrMethod

All/

update/

normal

(Default Value)

Transaction 실행 시 Method Type

trMethod="update"

X

ScriptUrl

""

Script의 경로

Scripturl="file://d:\"

X

Language

Locale ID

Locale ID

Language=" 1042"
Language 관련 부록을 참고하십시오.

X

Resource

AppGroup 내에서 사용하는 Resource 정보를 기술합니다. 생략할 수 있습니다.

표 3-40AppGroups - Resource

Attribute

입력값/형태

설명

예시

필수

여부

Url

(BaseUrl)

""

Resource 파일의 기본경로

WebListner를 사용하는 경우에는 "서버경로? ReqType=res&id=resource이름"형식으로 입력합니다.

ProtocolID::경로

url="http://www.aaa.com/nwl/
CyWebLsnrIIS300.dll?
ReqType=res&id=demo" 
url="file://D:\Resource\Test.res"

O

Ext

""

Cache 파일의 확장자 이름

ext="xml"
ext="res"

X

CacheLevel

none/static

dynamic/

session


Default Value

-

AppGroup에 있는 CacheLevel값

Cache기능 사용 여부

None : Cache하지 않습니다.

Static : Cache합니다.

(local부터 찾아본 후 없으면

통신을 통해 다운로드 합니다.)

session: 서버 연결 시, Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다.

Dynamic : session과 같은 방법을 사용합니다. 단, 같은 화면에 대해서도 매번 요청 작업을 합니다.

자세한 사항은 4.3 Caching을 참고합니다.

CacheLevel ="static"
CacheLevel ="dynamic"

X

CodePage

code page

Default Value

- AppGroup 에 있는 CodePage값

code page 이름

codePage="EUC-KR"

X

Version

""

Default Value

- AppGroup 에 있는 Version값

Version 정보

version="1000"

X

Variables

해당 AppGroup 내의 전역변수를 기술합니다. 생략 가능합니다.

Var

표 3-41AppGroups - Variables - Var

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

변수 이름

id="level"

O

value

""

변수 초기값

value="2"

X

Menu

프로그램에서 사용되는 전체 화면 메뉴 설정합니다.

Item

Menu의 Sub Element로 각 메뉴항목에 대한 정의입니다. Item의 Sub Element로 item이 옵니다.

표 3-42Menu - Item

Attribute

입력값/형태

설명

예시

필수

여부

Id

""

Item ID

id="111"

O

Text

""

메뉴 Text

Text가 없거나 "-" 일 경우는 구분선으로 사용

Text="현재장애조회"

O

url

Prefix::XML파일 이름

Script:함수이름

메뉴가 선택되었을 때 표시할 화면 이름 또는 "Script:"로 시작하면 선택되었을 때 실행되어야 하는 현재 Form에 있는 함수 이름

url="sales::trouble_cur_ret"
url="script:Click_Menu"

X

자식이 없는 경우

필수

Enable

True (Default Value)

False

Enable/Disable 여부

enable="True"
enable="false"

X

Script

Global 영역에서 실행되는 Script를 작성합니다. Global Event의 구현부도 작성합니다.

StartXML File의 예제

<?xml version="1.0" encoding="euc-kr"?>
<!--connectGroup title="Tutorial" version="1.0" initurl="Tutorial::mstest.xml" -->
<connectGroup id="MiPlatform V3.3"   sessionURL="Tutorial::Session.xml" sessionopenstyle="titlebar=false" titlebar="true" Statusbar="true" style="" tracemode="true" hideframe="true" resize="false" bkwidth="" bkheight=""  bkvalign="middle" bkalign="left" bkimage="" 
  font="tahoma,9"  title="Medical" version="1.0" initurl="Tutorial::testcalendarex" 
 AboutScroll="true" AboutImage="|10|50" AboutString="&#10;MiPlatform||50&#10;&#10;Copyright (C) 2003, TOBESOFT&#10;WebSite:&#10;http://www.TOBESOFT.com|http://www.TOBESOFT.com|30&#10;mailto:&#10;comnik@TOBESOFT.com|mailto:\comnik@TOBESOFT.com|30" >

    <resource url="D:\PIDScript\Tutorial.res" version="1000" ext="res"/>
    <variables>        
        <var id="gs_id" value="" type="global" />
        <var id="test_share" value="xxxxxx" type="share" />
    </variables>
    <GlobalStyle>
        <style id="Mild" font="tahoma,9" fixedfont="tahoma,9" textcolor="#666666" windowcolor="#CCCC00" buttoncolor="#FFFF66" formcolor="#FFFFCC" editcolor="#FFFFFF" disablecolor="#333300" disablebkcolor="#CCCC99" bordercolor="#CCCCCC" DKSHADOWcolor="#666600" HILIGHT3Dcolor="#FFFFFF" HILIGHTTextcolor="#FFFF33" HILIGHTcolor="#FFFF33" Shadowcolor="#666600" face3dcolor="#FFFF33" Light3dcolor="#FFFFCC" Arrowcolor="red" ScrollbarColor="red" Scrollbarwidth="14"/>
        <style id="Impact" font="tahoma,9,bold" fixedfont="tahoma,9,bold" textcolor="black" windowcolor="gray" buttoncolor="#CC33CC" formcolor="#FFCC00" editcolor="#FF9999" disablecolor="red" disablebkcolor="white" bordercolor="red" DKSHADOWcolor="#330033" HILIGHT3dcolor="#CC99FF" HILIGHTTextcolor="black" HILIGHTcolor="red" Shadowcolor="#330033" face3dcolor="#CC99FF" Light3dcolor="#996699" Arrowcolor="red" ScrollbarColor="red" Scrollbarwidth="14"/>
        <style id="System" font="tahoma,9" fixedfont="tahoma,9" textcolor="BTNTEXT" windowcolor="white" buttoncolor="BTNFACE" formcolor="white" editcolor="white" disablecolor="GRAYTEXT" disablebkcolor="BTNFACE" bordercolor="black" DKSHADOWcolor="3DDKSHADOW" HILIGHT3dcolor="BTNHIGHLIGHT" HILIGHTTextcolor="HIGHLIGHTTEXT" HILIGHTcolor="HIGHLIGHT" Shadowcolor="BTNSHADOW" face3dcolor="BTNFACE" Light3dcolor="3DLIGHT" Arrowcolor="black" ScrollbarColor="SCROLLBAR" Scrollbarwidth="14"/>
        <style id="first" font="굴림,20" fixedfont="굴림체,9" textcolor="blue" windowcolor="gray" buttoncolor="red" formcolor="yellow" editcolor="cyan" disablecolor="brown" disablebkcolor="burlywood" bordercolor="beige" DKSHADOWcolor="black" HILIGHT3dcolor="bisque" Shadowcolor="blanchedalmond" face3dcolor="gray" light3dcolor="gray" HILIGHTcolor="blue" HILIGHTTextcolor="white" Arrowcolor="black" ScrollbarColor="lightgray" Scrollbarwidth="14"/>
        <style id="second" font="굴림,9" fixedfont="굴림체,9" textcolor="red" windowcolor="gray" buttoncolor="red" formcolor="blue" editcolor="cyan" disablecolor="brown" disablebkcolor="burlywood" bordercolor="beige" DKSHADOWcolor="black" HILIGHTcolor="bisque" Shadowcolor="blanchedalmond"/>
    </GlobalStyle>
    <Datasets>
        <Dataset Id="g_test" ServiceDSetID="output" OnColumnChanged="g_test_OnColumnChanged" CanRowPosChange="g_test_CanRowPosChange" CanColumnChange="g_test_CanColumnChange">
            <contents id="g_test">
                <colinfo id="item_cd" size="50" type="STRING"/>
                <colinfo id="Item_dt" size="8" type="DATE"/>
                <colinfo id="item_nm" size="50" type="STRING"/>
                <record>
                    <item_cd>1</item_cd>
                    <Item_dt>20040601</Item_dt>
                    <item_nm>첫번째</item_nm>
                </record>
                <record>
                    <item_cd>2</item_cd>
                    <Item_dt>20040701</Item_dt>
                    <item_nm>두번째</item_nm>
                </record>
                <record>
                    <item_cd>3</item_cd>
                    <Item_dt>20040714</Item_dt>
                    <item_nm>세번째</item_nm>
                </record>
                <record>
                    <item_cd>4</item_cd>
                    <Item_dt>20040725</Item_dt>
                    <item_nm>네번째</item_nm>
                </record>
                <record>
                    <item_cd>5</item_cd>
                    <Item_dt>20040725</Item_dt>
                    <item_nm>다섯번째</item_nm>
                </record>
                <record>
                    <item_cd>6</item_cd>
                    <Item_dt>20040725</Item_dt>
                    <item_nm>여섯번째</item_nm>
                </record>
                <record>
                    <item_cd>7</item_cd>
                    <Item_dt>20040725</Item_dt>
                    <item_nm>일곱번째</item_nm>
                </record>
                <record>
                    <item_cd>8</item_cd>
                    <Item_dt>20040725</Item_dt>
                    <item_nm>여덟번째</item_nm>
                </record>
                <record>
                    <item_cd>9</item_cd>
                    <Item_dt>20040801</Item_dt>
                    <item_nm>아홉번째</item_nm>
                </record>
            </contents>
        </Dataset>
    </Datasets>

    <container version="1000" url="C:\\Program Files\\TOBESOFT\\MiPlatform\\DevComponent">
        <component id="edit" name="cyedit" version="1000" image="3" title="Edit"/>
        <component id="button" name="cybutton" version="1000"  image="2" title="Button"/>
        <component id="checkbox" name="cycheckbox" version="1000"  image="4" title="Check Box"/>
        <component id="radio" name="cyradio" version="1000"  image="7" title="Radio"/>    
        <component id="TextArea" name="cyTextArea" version="1000"  image="16" title="Text Area"/>    
        <component id="Chart" name="cyChart" version="1000"  image="17" title="Chart"/>            
        <component id="List" name="cyListBox" version="1000"  image="6" title="List"/>            
        <component id="FileDialog" name="cyFileDialog" version="1000"  image="18" title="File Dialog" bitmapID="183"/>    
        <component id="TreeView" name="cyTreeView" version="1000"  image="11" title="Tree View"/>            
        <component id="Grid" name="cyGrid" version="1000"  image="1" title="Grid"/>            
        <component id="image" name="CyImage" version="1000"  image="9" title="Image" bitmapID="183"/>
        <component id="spin" name="CySpin" version="1000"  image="10" title="Spin"/>
        <component id="CalendarEx" name="cyCalendarEx" version="1000"  image="13" title="CalendarEx"/>    
        <component id="Calendar" name="cyCalendar" version="1000"  image="13" title="Calendar"/>    
        <component id="Static" name="cyStatic" version="1000"  image="8" title="Static"/>
        <component id="maskedit" name="cyMaskedit" version="1000"  image="19" title="MaskEdit"/>    
        <component id="div" name="CyDiv" version="1000"  image="20" title="Division"/>    
        <component id="Tab" name="CyTab" version="1000"  image="12" title="Tab"/>    
        <component id="file" name="CyFile" version="1000" image="18" title="File" bitmapID="183"/>
        <component id="shape" name="CyShape" version="1000" image="18" title="Shape" bitmapID="183"/>
        <component id="Combo" name="CyComboEx" version="1000"  image="5" title="ComboBoxEx"/>            
        <component id="Menu" name="CyMenuBar" version="1000"  image="5" title="MenuBar"/>    
    </container>

        <activeX version="1000" url="file://C:\\Program&#32;Files\\TOBESOFT\\MiPlatform\\DevComponent\\">
        <Component Id="AxChartFx" Progid="ChartFX.Chart" nowindow="true" Version="1000" Image="28" Title="activeX1"/>
    </activeX>

    <protocols version="1000" url="c:\\program files\\TOBESOFT\\MiPlatform">
        <protocol id="file" name="CyHttpAdp" version="1000" 
        scriptPath="script:GetReg('ScriptPath','D:\PIDScript\script')" 
        usecache="false"/>
        <!--
        <protocol id="ldb" name="CyLiteDBAdp"   version="1000"
        driver_id="ODBC" driver_name="AdaptDBOdbc" driver_ver="10000" 
        PreConnect="false"
        extapi_id="" extapi_name="" extapi_ver="10000"
            ConnectionString="DRIVER={Oracle Lite 40 ODBC Driver}; DSN=KIMJANG_Tutorial;"
           dbuser="" dbpass="" />
           -->
      </protocols>

    <MDIInfo>
        <forms Left="20" Top="0" width="240" height="320" OpenStyle="normal">
            <!--<form id ="MDIForm1" IconID="IDB_COMBO2" Left="10" Top="10" width="240" height="320" initURL="Tutorial::GridTest.xml"   OpenStyle="max"/>
            -->
            <form id ="MDIForm1"  IconID="IDB_COMBO2" Left="10" Top="10" width="240" height="320" initURL="Tutorial::GridTest.xml"  OpenStyle="max" />
            <form id ="MDIForm2"  IconID="IDB_COMBO1"   initURL="Tutorial::test1" />
            <form id ="MDIForm3"  IconID="IDB_COMBO1"   initURL="Tutorial::test1" OpenStyle="Fixed"/>
        <!--    
            <form id ="MDIForm3" IconID="IDB_COMBO1"   initURL="Tutorial::test1" startxml="" sessionurl="" autostart="true" session="false" OpenStyle="max"/>
            <form id ="MDIForm4" IconID="IDB_COMBO1"   initURL="Tutorial::test1" autostart="true" session="false" OpenStyle="fixed"/>
            <form id ="MDIForm5" IconID="IDB_COMBO1"   initURL="Tutorial::test1" autostart="false" session="true" />
        -->
        </forms>

        <Shortcuts align="vertical" font="tahoma,9" color="black"  ImageID="IDB_COMBO1" TopMargin ="30" LeftMargin="40" Text="" >
            <Shortcut id ="icon1" ImageID="IDB_COMBO2"  Form="MDIForm2" text ="부동산" Instance="single"  Left="10" Top="10" >
              <variables>
               <var id="gv_company" value=""/> 
               <var id="gv_name" value=""/>
             </variables>
            </Shortcut>
            <Shortcut id ="icon2" text ="투비소프트" Form="MDIForm1" Instance="multi"  Left="10" Top="50" />
            <Shortcut id ="icon3" text ="1" Form="MDIForm3" Instance="multi"  Left="10" Top="90" />
        </Shortcuts>            
    </MDIInfo>

    <DockBars Fixed ="true">
        <DockBar id = "DockBar" Fixed ="true" text ="DockBar1" scroll="false" name="MiPlatformX" version=""  InitURL="Tutorial::Menu.xml" left="0" top="0" right="300" bottom ="20" align="top" xbutton="false" ledge="" tedge="" redge="" bedge="" AddMenu="false"/>    
    </DockBars>

    <AppGroups>

        <AppGroup   prefix="Tutorial" version="1.0" type="form">
            <script baseurl="D:\PIDScript\Win32-1" scripturl="D:\PIDScript\script" cachelevel="dynamic" ext="xml" version="1000" />    
        </AppGroup>
        <AppGroup prefix="ldbsvc" version="1.0">
            <script baseurl="file://D:\PIDScript\Win32-1" cachelevel="none" ext="xml" version="1000" />
        </AppGroup>
        <DataGroup prefix="Tutorial_DB" baseurl="ldb://ldbsvc::" cachelevel="none" version="1000" />
    </AppGroups>
    <menu>
        <item id="1" text="Component&#32;Example" enable="true">
            <item id="101" text="Button" url="script:g_test1()" enable="true"/>
            <item id="102" text="Calendar" url="script:g_test2()" enable="true"/>
            <item id="103" text="Chart" url="Tutorial_Chart" enable="true"/>
            <item id="104" text="CheckBox" url="Tutorial_CheckBox" enable="true"/>
            <item id="105" text="Combo" url="Tutorial_Combo" enable="true"/>
            <item id="106" text="Div" url="Tutorial_Div" enable="true"/>
            <item id="107" text="Dummy" url="Tutorial_Dummy" enable="true"/>
            <item id="108" text="edit" url="Tutorial_Edit" enable="true"/>
            <item id="109" text="ExtImage" url="Tutorial_ExtImage" enable="true"/>
            <item id="110" text="File" url="Tutorial_File" enable="true"/>
            <item id="111" text="FileDialog" url="Tutorial_FileDialog" enable="true"/>
            <item id="112" text="Flash" url="Tutorial_Flash" enable="true"/>
            <item id="113" text="Form" url="Tutorial_Form" enable="true"/>
            <item id="114" text="Grid" url="Tutorial_Grid" enable="true"/>
            <item id="115" text="Grid_Contents" url="Tutorial_GridContents"                     enable="true"/>
            <item id="116" text="Image" url="Tutorial_Image" enable="true"/>
            <item id="117" text="List" url="Tutorial_List" enable="true"/>
            <item id="118" text="MaskEdit" url="Tutorial_MaskEdit" enable="true"/>
            <item id="119" text="Radio" url="Tutorial_Radio" enable="true"/>
            <item id="120" text="Spin" url="Tutorial_Spin" enable="true"/>
            <item id="121" text="Static" url="Tutorial_Static" enable="true"/>
            <item id="122" text="Tab" url="Tutorial_Tab" enable="true"/>
            <item id="123" text="TextArea" url="Tutorial_TextArea" enable="true"/>
            <item id="124" text="TreeView" url="Tutorial_TreeView" enable="true"/>
            <item id="125" text="WebBrowser" url="Tutorial_WebBrowser" enable="true"/>
        </item>
        <item id="2" text="ScriptAPI&#32;Example" enable="true">
            <item id="201" text="Script&#32;API" url="Tutorial_ScriptApi" enable="true"/>
            <item id="203" text="Engine&#32;Script&#32;API" url="Tutorial_ScriptEngine" enable="true"/>
            <item id="204" text="DataSet&#32;API" url="Tutorial_ScriptDataSet" enable="true"/>
        </item>
    </menu>
    <script><![CDATA[
function g_test1()
{
    trace('call global g_test1 function!');
}

function g_test2()
{
    trace('call global g_test2 function!');    
}
]]>
    </script>
  </connectGroup>