32.기타- 참고문서

32.1MiPlatform Architectures Guide 입니다.

아래 주소를 클릭하여 해당 자료를 다운로드 받을 수 있습니다.
http://www.miplatform.co.kr/faq/data/docs/ArchitecturesGuide_ver1.0-20070701.doc

32.2Miplatform 디자인교육작업시 참고문서입니다.

아래 주소를 클릭하여 해당 자료를 다운로드 받을 수 있습니다.
http://www.miplatform.co.kr/faq/data/docs/20120629_161743146_MiplatformDesign.zip

32.3Service Layout 연동

UI 개발시 화면에 서비스 목록과 서비스의 Input/Output 정보(서비스 리스트와 Dataset의 헤더정보)를 미리 가져와 빠르고 편리하게 데이터 바인딩을 구현하기 위한 개발 툴의 특징적인 기능입니다.

그림 32-1servicelayout1

그림 32-2servicelayout2

32.3.1MiPlatform PID에서 연동

Service Layout

Service List의 전문은 MiPlatform server api를 사용하여 생성하고, In/Out Dataset Layout 전문의 경우 server api를 사용하지 못하고 별도 xml전문을 생성해야 합니다. (샘플파일 DefaultService.java 파일 참조)

Service List 및 In/Out Dataset Layout 조회 서비스 설정

MiPlatform에서 해당 기능을 사용하기 위해서는 해당 기능을 하기 위한 파일이 Servlet으로 작성되어야
하며, PID에서 default_service를 호출하도록 되어 있으므로 WEB-INF폴더의 web.xml 파일에 servlet-name을 default_service로 servlet mapping을 해야 합니다.
ex)
<servlet>
    <servlet-name>default_service</servlet-name>
    <servlet-class>mi.DefaultService</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>default_service</servlet-name>
    <url-pattern>/servlet/default_service</url-pattern>
</servlet-mapping>

default_service 호출 시 Parameter 정보

- service_id : Service List 와 In/Out Dataset Layout 구분
  target : 선택한 Service명을 보냄
- Service List 조회 시 default_service?service_id=dbm_svc_get_svclist로 호출됨
- In/Out Dataset Layout 조회 시 default_service?service_id=dbm_get_iolayout&target=testService로 
  호출됨 target 변수에 선택한 Service명을 보냄

Service List Layout

Service 목록을 가져올 때 전문 Layout

<?xml version="1.0" encoding="utf-8"?>
<root>
 <params>
  <param id="ErrorMsg" type="STRING">조회&#32;성공</param>
  <param id="ErrorCode" type="INTEGER">0</param>
 </params>
 <dataset id="output">
  <colinfo id="name" size="255" type="STRING"/>
  <record>
   <name>testService</name>
  </record>
 </dataset>
</root>

In/Out Dataset Layout

- Element 정보
   class2 : 선택한 서비스의 상세정보 Layout의 시작
   dataset : 해당 서비스의 In/Out Dataset 정보
                io properties 값에 따라 In/Out Dataset을 구분합니다.
- 선택한 서비스에 대한 In/Out Dataset 정보를 가져올 때 전문 Layout
<?xml version='1.0' encoding='euc-kr'?>
<class2>
 <dataset id='ds_input' io='input'>
  <colinfo id='col01' type='INT' size='100'/>
  <colinfo id='col02' type='STRING' size='100'/>
  <colinfo id='col03' type='STRING' size='100'/>
 </dataset>
 <dataset id='COLUM_TEST' io='output'>
  <colinfo id='TEST1' type='DECIMAL' size='22'/>
  <colinfo id='TEST2' type='STRING' size='1000'/>
  <colinfo id='TEST3' type='DATE' size='7'/>
  <colinfo id='TEST5' type='STRING' size='20'/>
 </dataset>
</class2>

PID 설정

DataGroups 추가

default_service를 제외한 경로
ex) http://localhost:8088/mi/servlet/default_service 에서 http://localhost:8088/mi/servlet/ 까지만 등록

그림 32-3servicelayout3

default_service 조회

default_service는 추가한 DataGroup의 Base URL에 default_service를 자동으로 추가해 조회합니다.
추가한 DataGroup을 reload(F8키) 하여 서비스 조회

그림 32-4servicelayout4

화면 form간 연동

조회된 서비스의 데이터셋을 form의 component 또는 form의 Dataset탭으로 drag&drop하여 데이터셋 레이아웃을 복사하여 사용

그림 32-5servicelayout5

32.3.2XPLATFORM UXStudio에서 연동

Service Layout

XPLATFORM의 경우 Service Layout을 별도로 만들 필요 없이 XPLATFORM의 server api를 사용해 전문을 생성하면 됩니다.(샘플파일 serviceList.jsp, serviceDetail.jsp 파일 참조)

Service List Layout

Service 목록을 가져올 때 전문 Layout

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns="http://www.tobesoft.com/platform/dataset" ver="5000">
 <Parameters>
  <Parameter id="ErrorCode" type="int">0</Parameter>
  <Parameter id="ErrorMsg" type="string">조회&#32;성공</Parameter>
 </Parameters>
 <Dataset id="output">
  <ColumnInfo>
   <Column id="DOMAIN" type="string" size="255"/>
   <Column id="MODEL" type="string" size="255"/>
   <Column id="DESCRIPTION" type="string" size="255"/>
   <Column id="DATASOURCE" type="string" size="255"/>
  </ColumnInfo>
  <Rows>
   <Row>
    <Col id="DOMAIN">testDomain</Col>
    <Col id="MODEL">testService</Col>
    <Col id="DESCRIPTION"></Col>
    <Col id="DATASOURCE">DB</Col>
   </Row>
  </Rows>
 </Dataset>
</Root>

In/Out Dataset Layout

선택한 서비스에 대한 In/Out Dataset 정보를 가져올 때 전문 Layout
<?xml version="1.0" encoding="utf-8"?>
<Root xmlns="http://www.tobesoft.com/platform/dataset" ver="5000">
 <Parameters>
  <Parameter id="ErrorCode" type="int">0</Parameter>
  <Parameter id="ErrorMsg" type="string">조회&#32;성공</Parameter>
 </Parameters>
 <Dataset id="input">
  <ColumnInfo>
   <Column id="NAME" type="string" size="255"/>
   <Column id="TYPE" type="string" size="255"/>
   <Column id="SIZE" type="string" size="255"/>
   <Column id="ALIAS" type="string" size="255"/>
   <Column id="DESCRIPTION" type="string" size="255"/>
   <Column id="DEFAULT" type="string" size="255"/>
  </ColumnInfo>
  <Rows>
   <Row>
    <Col id="NAME">ds_input</Col>
    <Col id="TYPE">DataSet</Col>
   </Row>
  </Rows>
 </Dataset>
 <Dataset id="ds_input">
  <ColumnInfo>
   <Column id="col01" type="string" size="100"/>
   <Column id="col02" type="string" size="100"/>
   <Column id="col03" type="string" size="100"/>
  </ColumnInfo>
  <Rows>
  </Rows>
 </Dataset>
 <Dataset id="output">
  <ColumnInfo>
   <Column id="NAME" type="string" size="255"/>
   <Column id="TYPE" type="string" size="255"/>
   <Column id="SIZE" type="string" size="255"/>
   <Column id="ALIAS" type="string" size="255"/>
   <Column id="DESCRIPTION" type="string" size="255"/>
   <Column id="DEFAULT" type="string" size="255"/>
  </ColumnInfo>
  <Rows>
   <Row>
    <Col id="NAME">ds_output</Col>
    <Col id="TYPE">DataSet</Col>
   </Row>
  </Rows>
 </Dataset>
 <Dataset id="ds_output">
  <ColumnInfo>
   <Column id="TEST1" type="bigdecimal" size="22"/>
   <Column id="TEST2" type="string" size="1000"/>
   <Column id="TEST3" type="date" size="7"/>
   <Column id="TEST5" type="string" size="20"/>
  </ColumnInfo>
  <Rows>
  </Rows>
 </Dataset>
</Root>

UXStudio 설정

TypeDefinition 설정

그림 32-6servicelayout6

Edit TypeDefinition에서 Services탭에 Add버튼으로 서비스 추가 하여 아래 그림과 같이 필수 값 지정 Service List와 In/Out Dataset Layout정보를 조회하는 서비스를 등록

Service List와 In/Out Dataset Layout 조회

등록된 서비스에서 Refresh하여 조회합니다.

그림 32-7servicelayout7

화면 form간 연동

조회된 서비스의 데이터셋을 form의 component 또는 form의 Invisible Objects창으로 drag&drop하여 데이터셋 레이아웃을 복사하여 사용

그림 32-8servicelayout8

32.4REPORT연동

32.4.1Report Designer

RD 연동 for XPLATFORM

RD 설치

RD viewer를 설치한다. 설치에 필요한 파일은 해당업체를 통해서 제공받는다.
이번 예제는 RD 5.0을 기준으로 작성되었다.

그림 32-9install_program1

프로그램 추가/제거 에서 설치된 프로그램 확인

화면에 Viewer 구성하기

그림 32-10install_program2

ActiveX를 화면에 그린 후 progid를 설치된 RD Viewer로 지정한다.

그림 32-11install_program3

Report Designer 5.0 control를 선택한 후 Insert버튼을 클릭한다.

Script 코딩

Report Designer로 만든 mrd파일의 fullpath를 지정한다.
fnRdFileOpen함수를 호출한다.
function btn_report_onclick(obj:Button,  e:ClickEventInfo)
{
    var sMrdPath  = "D:\\rdtest.mrd";
    var sParams  = ""; 
    fnRdFileOpen( atx_RD, sMrdPath, sParams, "dsPrint");
}
RD Viewer의 Property를 알맞게 설정한다.
Dataset의 내용을 RD에 알맞은 문자열로 변환하고 오픈한다.
function fnRdFileOpen( rdObj, strRdPath, strValue, dsName) {
 
 if (strValue == null || strValue == "") 
 {
  strValue = "";
 }
 // RDViewer Set
 atx_RD.AutoAdjust = false;   // 자동조정 유/무 (ZoomRatio 사용하려면 반드시 false Setting)
 atx_RD.ZoomRatio  = 100;     // 배율 
 atx_RD.SetMessageboxShow(0); // 메세지창 출력안함.    
 var extComapi  = new ExtCommon();
 var strRdxml  = "";
 strRdxml = extComapi.ds2mp_SaveXml(dsName);
 atx_RD.SetRData(strRdxml);   // DataSet 설정(XML 문자열)    
 atx_RD.FileOpen(strRdPath, "/rv " + strValue);  // 보고서 CALL      
 // 에러처리
 if(atx_RD.IsError() == true)
 {
  alert(atx_RD.GetLastErrorMsg());
  return;
 }
}
XPLATFORM 데이타를 RD로 넘겨주기 위해 extCommon API에서 제공되는 함수를 사용
예)
extComapi.ds2mp_SaveXml(dsName);

관련소스

RD 연동 for MiPlatform

RD 설치

RD viewer를 설치한다. 설치에 필요한 파일은 해당업체를 통해서 제공받는다.
이번 예제는 RD 5.0을 기준으로 작성되었다.

그림 32-12install_program1

프로그램 추가/제거 에서 설치된 프로그램 확인

Component 등록

Tolls > Project Manager > Project Manager를 오픈한다.
Components탭 선택 > +버튼 클릭 > Active X Controls 탭 클릭 > RD Viewer선택

그림 32-13install_program4

화면구성

Report 컴포넌트 선택 한 후 화면에 그린다.
프로퍼티중 progID 값을 확인한다.

그림 32-14install_program5

스크립트 코딩

Report Designer로 만든 mrd파일의 fullpath를 지정한다.
RD Viewer의 Property를 알맞게 설정한다.
Dataset의 내용을 RD에 알맞은 문자열로 변환하고 오픈한다.
var strRdPath  = "D:\\rdtest.mrd";
var strValue  = ""; 
// RDViewer Set
Report0.AutoAdjust = false;   
// 자동조정 유/무 (ZoomRatio 사용하려면 반드시 false Setting)
Report0.ZoomRatio  = 100;     // 배율 
Report0.SetMessageboxShow(0); // 메세지창 출력안함.    
var strRdxml  = "";
strRdxml = dsPrint.SaveXML();
Report0.SetRData(strRdxml);   // DataSet 설정(XML 문자열)    
Report0.FileOpen(strRdPath, "/rv " + strValue);  // 보고서 CALL

관련소스

32.4.2Rexpert

Rexpert 연동 for XPLATFORM

Rexpert 프로그램을 설치한다. 해당 프로그램은 업체를 통해서 지원받아 사용합니다.
연동에 사용된 제품은 Rexpert 3.0을 기준으로 작성되었습니다.

그림 32-15install_program6

화면구성

그림 32-16install_program7

ActiveX를 화면에 그린 후 progid를 설치된 Rexpert Viewer로 지정한다.

그림 32-17install_program8

ClipSoft Rexpert Viewer Control 3.0를 선택한 후 Insert버튼을 클릭한다.

스크립트 작성

var dsxml = "";
dsxml = fn_ds2mp(ds_report);
<중간생략>
strxml += sDsXml;
strxml += "</Datasets>";
var sRebPath = "D:\\TCC0301R02_30.reb"; 
var sData = "";
<중간생략>
sData = sData + "<file-list><file type='reb' path='"+sRebPath+"'></file>";
sData = sData + "</file-list>";
<중간생략>
//데이타셋받아서 처리
sData = sData + strxml;
<중간생략>
//parameter 넣는 부분.........
sData = sData + "<field name='CNRT_NM'>2011년 테스트공사 제목입니다.</field>"; 
<중간생략>
sData = sData + "</oof>"; 
rptObj.OpenOOF(sData);

관련소스

Rexpert 연동 for MiPlatform

Rexpert 설치

그림 32-18install_program6

Component 등록구성

Tolls > Project Manager > Project Manager를 오픈한다.
Components탭 선택 > +버튼 클릭 > Active X Controls 탭 클릭 > 
ClipSoft Report Viewer Control 3.0 Viewer선택

그림 32-19install_program9

화면구성

Report 컴포넌트(ID: ClipSoft) 선택 한 후 화면에 그린다.
프로퍼티중 progID 값을 확인한다.

그림 32-20install_program10

스크립트 작성

var dsxml = "";
dsxml = ds_report.SaveXML();
<중간생략>
strxml += sDsXml;
var sRebPath = "D:\\TCC0301R02_30.reb"; 
var sData = "";
<중간생략>
sData = sData + "<file-list><file type='reb' path='"+sRebPath+"'></file>";
<중간생략>
//parameter 넣는 부분.........
sData = sData + "<field name='CNRT_NM'>2011년 테스트공사 제목입니다.</field>"; 
<중간생략>
sData = sData + "</oof>"; 
rptObj.OpenOOF(sData);

관련소스

32.4.3UbiReport

UbiReport 연동 for XPlatform

UbiReport 설치

UbiReport에서 제공한 모듈을 레지스트리에 등록한다.
윈도우 cmd창에서 regsvr32 입력 후 UbiViewerX.ocx경로를 입력한다.
(이 샘플은 UbiViwerX 2.5버전을 기준임.)

그림 32-21install_program11

화면에 Viewer 구성하기

그림 32-22install_program12

스크립트 작성

<중략>
var setJrfFileDir  = "D:\\Sample\\";  //jrf파일의 경로(local테스트용) 
var setJrfFileName = "sample.jrf";     //파일명
var setArg= "branName#사당점#recpNo#20110303";
//형태 argID1#val1#argID2#val2
<중략>
ActiveX00.setJrfFileDir(setJrfFileDir);
ActiveX00.setJrfFileName(setJrfFileName);
ActiveX00.SetDatasetXML(SetDataset1,Gds_FilterBran.saveXML("normal"));
ActiveX00.SetDatasetXML(SetDataset3,gdsCommList.saveXML("normal"));
ActiveX00.Retrieve();

관련소스

UbiReport 연동 for MiPlatform

UbiReport 설치

UbiReport에서 제공한 모듈을 레지스트리에 등록한다.
윈도우 cmd창에서 regsvr32 입력 후 UbiViewerX.ocx경로를 입력한다.
(이 샘플은 UbiViwerX 2.5버전을 기준임.)

그림 32-23install_program11

CyAxUbiReport.dll(Ansi버전) , CyAxUbiReportU.dll(Unicode버전) 중 하나를 
컴포넌트 폴더에 복사한다.
(http://www.miplatform.co.kr > 다운로드> MiPlatform > Setup에서 다운로드)

Component 등록구성

Tools > Project Manager > Project Manager를 오픈한다.
Components탭 선택 > +버튼 클릭 > Wrapped Component 탭 클릭 > 
Module Name에 CyAxUbiReport(U).dll 선택 > ID, Tooltip 입력

그림 32-24install_program13

화면에 Viewer 구성하기

그림 32-25install_program14

스크립트 작성

<중략>
var setJrfFileDir  = "D:\\Sample\\";  //jrf파일의 경로(local테스트용) 
var setJrfFileName = "sample.jrf";     //파일명
var setArg= "branName#사당점#recpNo#20110303";
//형태 argID1#val1#argID2#val2
<중략>
ubiReport0.setJrfFileDir(setJrfFileDir);
ubiReport0.setJrfFileName(setJrfFileName);
ubiReport0.SetDataset(SetDataset1, SetDataset2);
ubiReport0.SetDataset(SetDataset3, SetDataset4);
ubiReport0.Retrieve();

관련소스

32.4.4ozReport

ozReport 연동 for XPlatform

ozReport 설치

ozReport 프로그램을 설치한다. 해당 프로그램은 업체를 통해서 지원받아 사용합니다.
(ozReport Viewer 3.5을 기준으로 작성.)

화면에 Viewer 구성하기

그림 32-26install_program15

스크립트 작성

var sParam = "connection.servlet=http://localhost/ozserver/server" +String.fromCharCode(10);
sParam += "connection.reportname=sample.ozr"+String.fromCharCode(10);
sParam += "viewer.configmode=html"+String.fromCharCode(10);
sParam += "odi.odinames=sample"+String.fromCharCode(10);
OZAViewerOCX.CreateReport(sParam);
ozReport server 구성 필요.

관련소스

ozReport 연동 for MiPlatform

ozReport 설치

ozReport 프로그램을 설치한다. 해당 프로그램은 업체를 통해서 지원받아 사용합니다.
(ozReport Viewer 3.5을 기준으로 작성.)

Component 등록구성

Tools > Project Manager > Project Manager를 오픈한다.
Components탭 선택 > +버튼 클릭 > Active X Controls 탭 클릭 > 
OZAViewerOCX Control 선택

그림 32-27install_program16

화면에 Viewer 구성하기

그림 32-28install_program17

스크립트 작성

var sParam = "connection.servlet=http://localhost/ozserver/server"+chr(10);
sParam += "connection.reportname=sample.ozr"+chr(10);
sParam += "viewer.configmode=html"+chr(10);
sParam += "odi.odinames=sample"+chr(10);
OZAViewerOCX.CreateReport(sParam);
ozReport server 구성 필요.

관련소스

32.5화면보호기

주의) 해당모듈을 사용하기 전에 ㈜투비소프트에 문의 하시기 바랍니다.
(사용에 대한 별도의 비용이 청구될 수 있습니다)

해당 모듈을 사용하기 위해서는 투비소프트 고객지원센터에서 받을 수 있습니다.

32.5.1MiPlatform

정의

키보드, 마우스 또는 기타 입력 장치로부터 입력된 마지막 시간을 검사하고 더 이상 입력 장치장치로부터 입력이 없는 상태에대하여 일정한 지연시간을 설정하여 원하는 순간(입력장치로부터 설정한 지연시간만큼 입력이 없을 때)에 이벤트를 발생시킨다

적용

1) 특정화면에서 작업중에 예기치 않은 일로 자리를 비울 경우 일정시간 경과 후 입력장치로부터 
    입력이 없으면 로그아웃 화면을 호출

2) 입력장치로부터 일정 시간 동안  입력이 없을 때 특정 화면을 호출 하거나 스크린세이버, 
   혹은 윈도우 종료..등 기타 개발자가 원하는 화면을 호출

인터페이스

속성

DelayInputTime
지연시간 – 초단위로 설정. Default 값은 20초
Ex) LastInput0.DelayInputTime = 60;
//입력 장치에 의한 입력이 없을 경우 60초(1분)후에 이벤트를 발생시킴

메소드

ExeScreenSaver
현재 설정되어 있는 화면보호기를 기동합니다
Ex) LastInput0. ExeScreenSaver();
RunDelayInputTime(BOOLRunning)
이벤트 발생을 on/off 합니다
현재 설정된 지연시간(DelayInputTime)이 0보다 작거나 같으면 발생하지 않음
LastInput0.RunDelayInputTime(true);  //해당시간에 이벤트를 발생시킴
LastInput0.RunDelayInputTime(false); //더이상 이벤트를 발생시키지 않음

이벤트

OnLastInputTime()
//RunDelayInputTime(true) 일때
 //DelayInputTime(지연시간)에 따라 장치 입력이 없다면 이벤트 발생

설치방법

파일복사

– Miplatform 310L 320 330의 지정된 경로 CyLastInput.dll 파일을버전에 맞게 복사
해당 컴포넌트는 컴포넌트 폴더에 복사를 해 주어야 하며,
사용하는 PID의 버전과 일지하는 버전을 사용해야 합니다.

환경설정

- PID 실행한다
  메뉴에서 Tool->ProjectManager를 실행한다
   Components 탭을 선택하고 Wrapped Component에서 CyLastInput를 선택하고 Insert

그림 32-29pid_lastinput

사용법

1) 설치 후 해당 폼에 컴포넌트를 툴에서 추가한다
    (LastInput을 추가하면 된다)
2) 이벤트 스크립트 작성(이벤트)
EX)  
function LastInput0_OnLastInputTime(obj)
{
    LastInput0.RunDelayInputTime(false);
    LastInput0.ExeScreenSaver();
}
3) 실행 스크립트 작성(버튼 클릭)
EX)
function Button00_onclick(obj:Button,  e:ClickEventInfo)
{
    LastInput0.DelayInputTime = 5;
    LastInput0.RunDelayInputTime(true);
}
사용 예)
 
<?xml version="1.0" encoding="utf-8"?>
<Window>
 <Form Height="535" Id="ScreenSaver" Left="8" PidAttrib="7" Title="ScreenSaver" TooltipFont="Default,0" Top="8" Ver="1.0" Width="800" WorkArea="true">
  <Button Height="21" Id="Button0" Left="24" OnClick="Button0_OnClick" TabOrder="2" Text="스크린세이버" Top="80" Width="104"></Button>
  <Button Height="21" Id="Button1" Left="160" OnClick="Button1_OnClick" TabOrder="1" Text="지연시간&#32;5" Top="160" Width="104"></Button>
  <Button Height="21" Id="Button2" Left="24" OnClick="Button2_OnClick" TabOrder="2" Text="이벤트발생&#32;TRUE" Top="184" Width="104"></Button>
  <Button Height="21" Id="Button3" Left="24" OnClick="Button3_OnClick" TabOrder="3" Text="지연시간&#32;10" Top="160" Width="104"></Button>
  <Button Height="21" Id="Button4" Left="160" OnClick="Button4_OnClick" TabOrder="4" Text="이벤트발생&#32;FALSE" Top="184" Width="104"></Button>
  <CyLastInputU DelayInputTime="5" Height="24" Id="CyLastInputU0" Left="26" OnLastInputTime="CyLastInputU0_OnLastInputTime" Top="40" Width="24"></CyLastInputU>
  <Button Height="21" Id="Button5" Left="24" OnClick="Button5_OnClick" TabOrder="6" Text="현재지연시간(초)" Top="240" Width="104"></Button>
 </Form>
 <Script><![CDATA[
function Button0_OnClick(obj)
{
 CyLastInputU0.ExeScreenSaver();
}
function Button1_OnClick(obj)
{
 CyLastInputU0.DelayInputTime = 5;
}
function Button2_OnClick(obj)
{
 CyLastInputU0.RunDelayInputTime(true);
}
function Button3_OnClick(obj)
{
 CyLastInputU0.DelayInputTime = 10;
}
function Button4_OnClick(obj)
{
 CyLastInputU0.RunDelayInputTime(false);
}
function CyLastInputU0_OnLastInputTime(obj)
{
 //TRACE(CyLastInputU0.DelayInputTime + "초에 " + "이벤트 발생");
 CyLastInputU0.ExeScreenSaver();
 CyLastInputU0.RunDelayInputTime(false);
}
function Button5_OnClick(obj)
{
 TRACE(CyLastInputU0.DelayInputTime);
}
]]></Script>
</Window>
시스템에서 제공하는 타이머를 사용합니다
시스템에 타이머 이벤튼 일반적으로 우선순위 가장 낮은 윈도우 메시지입니다
간혹 CPU가 너무 바쁘거나 시스템에 메시지가 많이 차 있는 경우에 이벤트가 늦게 발생
하거나 전혀 발생되지 못하는 경우도 발생 할 수 있습니다.

(즉, 멀티미디어 동영상 인코딩 작업시 타이머 이벤트가 정상적으로 발생할 수 있을까요?)

이것은 버그가 아니며 OS(시스템) 그렇게 구동되고 있기 때문, 다른 모든 어플리케이션도
그렇게 동작하고 있습니다.

* 만약 위의 현상이 일어나는 경우 신고 부탁 드립니다.

32.5.2XPLATFORM

XPLATFORM9.1 : 파일버전 - 2012.4.18.1 SDK ver. 2012.4.12.1(9.1.1.205)
XPLATFORM9.2 : 파일버전 - 2012.4.18.1 SDK ver. 2012.4.12.1(9.2.0.46)
- 상위 또는 하위 버전 호환에 문제가 있을 수 있습니다.
파일 XP 9.1/9.2용 모듈 구별방법
파일의 등록정보에서설명, 제품이름 등에서 차이점 확인

그림 32-309.1 및 9.2의등록정보 화면

정의

키보드, 마우스 또는 기타 입력 장치로부터 입력된 마지막 시간을 검사하고 더 이상 입력 장치장치로부터 입력이 없는 상태에 대하여 일정한 지연시간을 설정하여 원하는 순간(입력장치로부터 설정한 지연시간만큼 입력이 없을 때)에 이벤트를 발생시킨다

적용

1) 특정화면에서 작업중에 예기치 않은 일로 자리를 비울 경우 일정시간 경과 후 
    입력장치로부터 입력이 없으면 로그아웃 화면을 호출

2) 입력장치로부터 일정 시간 동안  입력이 없을 때 특정 화면을 호출 하거나 스크린세이버, 
    혹은 윈도우 종료..등 기타 개발자가 원하는 화면을 호출

인터페이스

속성

DelayInputTime
지연시간 – 초단위로 설정. Default 값은 20초
Ex) LastInput0.DelayInputTime = 60;

메소드

ExeScreenSaver()
현재 설정되어 있는 화면보호기를 기동합니다
Ex) LastInput0. ExeScreenSaver();
RunDelayInputTime(BOOLRunning)
이벤트 발생을 on/off 합니다
현재 설정된 지연시간(DelayInputTime)이 0보다 작거나 같으면 발생하지 않음
LastInput0.RunDelayInputTime(true);  //해당시간에 이벤트를 발생시킴
LastInput0.RunDelayInputTime(false); //더이상 이벤트를 발생시키지 않음

이벤트

OnLastInputTime()
//RunDelayInputTime(true) 일때
 //DelayInputTime(지연시간)에 따라 장치 입력이 없다면 이벤트 발생

설치방법

파일복사 - XPLATFORM9.1/9.2 지정된 경로 XLastInput.dll 파일을 버전에 맞게 복사
환경설정 - UXStudio(92.).exe에서 TypeDefinition에 추가
Type: Bin,  ID: LastInput,  ClassName : LastInput, Module: XLastInput

그림 32-31xp_lastinput1

사용방법

1) 설치 후 글로벌 변수에 오브젝트를 추가합니다.
   (LastInput을 추가하면 된다)
2) 이벤트 스크립트 작성(이벤트)
EX)  
function LastInput_0_OnLastInputTime(obj:LastInput, e:EventInfo)
{
    LastInput_0.RunDelayInputTime(false);
    LastInput_0.ExeScreenSaver();
}
3)    실행 스크립트 작성(버튼 클릭)
EX)
function Button00_onclick(obj:Button,  e:ClickEventInfo)
{
    LastInput_0.DelayInputTime = 5;
    LastInput_0.RunDelayInputTime(true);
}
1) MiPlatform에서 기술지원 2팀에서 개발한 CyLastInput 컴포넌트와 동일한 기능을
제공하는 XPLATFORM 컴포넌트입니다

2) 시스템에서 제공하는 타이머를 사용합니다
시스템에 타이머 이벤튼 일반적으로 우선순위 가장 낮은 윈도우 메시지입니다
간혹 CPU가 너무 바쁘거나 시스템에 메시지가 많이 차 있는 경우에 이벤트가 늦게 발생
하거나 전혀 발생되지 못하는 경우도 발생 할 수 있습니다.

(즉, 멀티미디어 동영상 인코딩 작업시 타이머 이벤트가 정상적으로 발생할 수 있을까요?)
이것은 버그가 아니며 OS(시스템) 그렇게 구동되고 있기 때문, 다른 모든 어플리케이션도
그렇게 동작하고 있습니다.

* 만약 위의 현상이 일어나는 경우 신고 부탁 드립니다.

32.6형상관리

32.6.1MiPlatform

MiPlatform에서 연동가능한 형상관리 프로그램에 대한 메뉴얼입니다.

http://www.miplatform.co.kr/faq/data/docs/[MP3.2]SCM_통합메뉴얼_20111230.pdf

32.6.2XPLATFORM

XPLATFORM에서 연동가능한 형상관리 프로그램에 대한 메뉴얼입니다.

http://www.miplatform.co.kr/faq/data/docs/[XP9.1]SCM Guide_20111230.pdf