EGL BIRT 핸들러
EGL BIRT 핸들러 파트는 이벤트 핸들러를 포함하며, 이는 보고서 작성 중에 호출된 함수입니다. BIRT에 대한 EGL 지원의 개요에 대해서는 프로그래머 안내서에서 "BIRT를 사용하여 보고서 작성"을 참조하십시오.
각 이벤트 핸들러에서 매개변수 목록은 함수가 응답할 이벤트 유형에 특정합니다. 다음은 BIRT 핸들러 파트의 개요입니다.
handler myBIRTHandler type BIRTHandler
function myEventHandler01 (parameterList)
{eventType = eventType, elementName="name01"...} end
function myEventHandler02 (parameterList)
{eventType = eventType, elementName="name02"...} end
end
해당 개요에 표시된 대로 eventType 및 elementName 특성(및 기타 적절한 이벤트 핸들러 특성)의 사용은 함수가 이벤트 핸들러임을 나타냅니다.
- 핸들러 파트를 기반으로 하는 변수를 작성하십시오.
- 변수를 EGL BIRT 보고서와 연관시키는 명령문을 코딩하십시오.
- 선택적으로, 보고서 작성 중에 사용될 데이터 소스를 지정하는 변수를 사용하십시오.
- 보고서를 작성하십시오.
이러한 단계의 결과로 BIRT 보고서 엔진은 보고서 작성 중에 이벤트 핸들러 세트를 호출할 수 있습니다.
package EGLDataSources;
program arrayProg type BasicProgram {}
function main()
arr customer[0];
cust customer;
cust.customerNumber = 102;
cust.firstName = "Jonathan";
cust.lastName = "Swift";
arr.appendElement(cust);
cust.customerNumber = 103;
cust.firstName = "Mark";
cust.lastName = "Twain";
arr.appendElement(cust);
designFile string = "eglDataSourcesRpt.rptdesign";
rptFile string = "eglDataSourcesArrayRpt.pdf";
myHandler arrayHandler = new arrayHandler;
rpt BIRTReport = new BIRTReport
(designFile, null, rptFile, "pdf", myHandler);
myHandler.setCustomerArray(arr);
rpt.createReportFromDesign();
end
end
record customer type basicrecord
customerNumber int;
firstName string;
lastName string;
end
- 핸들러 파트를 기반으로 한 변수와 배열을 작성합니다.
- EGL BIRT 보고서를 사용하여 해당 변수와 두 개의 파일 이름을 연관시킵니다.
- 데이터 소스를 지정합니다.
- 보고서 출력을 작성합니다.
이벤트 유형
이벤트 핸들러의 이름은 BIRT 보고서 엔진에 의미가 없습니다. 대신 이벤트 핸들러가 정의되는 방식(해당 매개변수 유형 및 특성)은 핸들러가 호출되는 시기를 결정합니다. 이벤트 유형(eventType 특성 값)은 호출 시간을 결정하는 데 가장 중요한 요소입니다.
- 데이터 소스는 데이터의 소스에 대한 표시입니다. 데이터 소스는 JDBC 데이터베이스 연결 세부사항 또는 파일 이름을 포함할 수 있으며, 이 경우 보고서 엔진이 데이터베이스 또는 파일에서 비즈니스 데이터를 검색합니다. 또는 데이터 소스가 스크립트된 데이터 소스를 나타낼 수 있으며, 이는 보고서 엔진이 EGL 프로그램에서 비즈니스 데이터를 검색함을 의미합니다. 스크립트된 데이터 소스의 예는 레코드 배열입니다. 스크립트된 데이터 소스를 사용 중인 경우 데이터 행을 한 번에 보고서에 제공하는 이벤트 핸들러를 작성합니다.
- 데이터 세트는 보고서 엔진이 파일, SQL 조회 또는 스토어드 프로시저에서 파생하는 열 세트입니다. 또는 스크립트된 데이터 소스의 방식으로 보고서 엔진에 제공된 열 세트입니다. 여기서 데이터 세트는 스크립트된 데이터 세트라고 합니다.
- 단어 행과 열은 관계형 데이터베이스에서 파생되지 않은 데이터에 대해서도 사용됩니다. 다음에 두 가지 예가 있습니다.
- 비XML 텍스트 파일의 첫 번째 행은 쉼표로 구분된 열 이름입니다. 두 번째 행은 쉼표로 구분된 열 유형 또는 쉼표로 구분된 데이터가 있는 행입니다. 이후의 각 행은 쉼표로 구분된 데이터가 있는 행입니다.
- 레코드 배열에서 각 레코드는 행을 구성하고 지정된 레코드의 필드가 열이 됩니다.
beforeOpen(모든 유형의 데이터 소스용)
openEvent(스크립트된 데이터 소스용)
afterOpen(이전 beforeOpen 이벤트에서 참조된
데이터 소스용)
beforeOpen(참조된 데이터 소스에서 파생된
데이터 세트용)
openEvent(참조된 스크립트된 데이터 세트용)
afterOpen(이전에 나열된 beforeOpen 이벤트에서 참조된
데이터 세트용)
[참조된 데이터 세트에 대해 모든 행이 검색될 때까지 루프: ]
fetchEvent(스크립트된 데이터 세트에서 행 페치)
onFetch(응답에서 페치할 데이터 세트를 위해
호출)
[루프 종료]
[데이터 세트에서 검색된 각 행에 대해
모든 보고서 요소가 작성될 때까지 루프: ]
onCreate(레이아웃에 사용된 보고서 요소가
작성될 때 호출)
onPageBreak(페이지 중단이 지정되면 호출)
[루프 종료]
beforeClose(데이터를 페치한 데이터 세트용)
closeEvent(참조된 스크립트된 데이터 세트용)
afterCloseDataSet(이전에 나열된 beforeClose 이벤트에서 참조된
데이터 세트용)
beforeClose(참조된 데이터 소스용)
closeEvent(참조된 스크립트된 데이터 소스용)
afterCloseDataSource(이전에 나열된 beforeClose 이벤트에서 참조된
데이터 소스용)
- 관계형 데이터베이스의 액세스를 위해 보고서 엔진이 데이터베이스에 연결되기 전에 이벤트가 발생합니다.
- XML 또는 기타 파일 읽기를 위해 파일이 열리기 전에 이벤트가 발생합니다.
- 스크립트된 데이터 소스의 경우 EGL 작성 함수가 BIRT 엔진 시작을 실행한 후 즉시 이벤트가 발생합니다.
이름이 단어 "event"로 끝나는(예: openEvent, fetchEvent 및 closeEvent) 각 이벤트 유형은 스크립트된 데이터 소스 또는 데이터 세트에서만 작동합니다.
fetchEvent와 onFetch 이벤트의 의미를 명확하게 하십시오. 이전에 설명한 대로 fetchEvent는 스크립트된 데이터 세트에 특정합니다. 반면에 onFetch는 스크립트된 항목이 있는 데이터 세트에 사용할 수 있습니다. fetchEvent 이벤트를 사용하여 프로그램이 보고서 엔진에 제공하는 행에 대한 컨텐츠를 제공할 수 있으며, onFetch 이벤트를 사용하여 보고서 엔진에서 검색한(또는 보고서 엔진에 제공한) 단일 행의 데이터를 검토할 수 있습니다. 모든 행이 검색될 때까지 보고서 엔진은 각 이벤트 핸들러를 반복해서 호출됩니다.
- 이벤트 핸들러는 데이터 행에 TRUE 값을 리턴하는 각 호출을 제공합니다.
- 이벤트 핸들러가 FALSE 값으로 응답하는 경우 두 가지 영향을 미칩니다. 첫째 핸들러가 하나 이상의 열 값을 지정했어도 보고서 엔진은이 해당 호출에 대해 데이터를 처리하지 않습니다. 둘째 보고서 엔진이 fetchEvent 이벤트 핸들러 호출을 중지합니다.
이벤트 유형이 onFetch인 경우 이벤트 핸들러는 가장 최근에 검색된 행에 액세스할 수 있지만 이 행을 업데이트할 수 없고 부울 값을 리턴하지 않습니다.
이벤트 핸들러의 매개변수 유형
지정된 이벤트 핸들러에 필요한 매개변수 유형은 이벤트 유형에 따라 다릅니다. 즉 이벤트 유형은 BIRT 보고서 엔진이 런타임 시 이벤트 핸들러에 제출하는 인수 유형을 표시합니다. 다음 표는 매개변수 순서대로 관련된 매개변수 유형이 표시된 이벤트 유형을 알파벳순으로 나열합니다.
| 이벤트 유형 | 매개변수 유형 |
|---|---|
| afterCloseDataSet | DataSetInstance |
| afterCloseDataSource | DataSourceInstance |
| afterOpen(데이터 세트용) | DataSetInstance, ReportContext |
| afterOpen(데이터 소스용) | DataSourceInstance, ReportContext |
| beforeClose(데이터 세트용) | DataSetInstance, ReportContext |
| beforeClose(데이터 소스용) | DataSourceInstance, ReportContext |
| beforeOpen(데이터 세트용) | DataSetInstance, ReportContext |
| beforeOpen(데이터 소스용) | DataSourceInstance, ReportContext |
| closeEvent(EGL 코드에서 제공된 데이터 세트용) | DataSetInstance |
| closeEvent(EGL 코드에서 제공된 데이터 소스용) | DataSourceInstance |
| fetchEvent(EGL 코드에서 제공된 데이터 세트용) | DataSetInstance, UpdatableDataSetRow (함수가 부울을 리턴함) |
| onCreate | 레이아웃에 사용된 보고서 요소의 유형(예: LabelInstance) 및 ReportContext |
| onFetch(데이터 세트용) | DataSetInstance, DataSetRow, ReportContext |
| onPageBreak | 페이지에서 페이지 중단 앞에 있는 레이아웃에 사용된 보고서 요소의 유형(예: LabelInstance) 및 ReportContext |
| openEvent(EGL 코드에서 제공된 데이터 세트용) | DataSetInstance |
| openEvent(EGL 코드에서 제공된 데이터 소스용) | DataSourceInstance |
레이블 및 이미지와 같은 보고서 레이아웃 요소의 런타임 작성에 응답하는 이벤트 핸들러와 일부 데이터 액세스 측면에 응답하는 이벤트 핸들러를 구별할 수 있습니다. 이전 유형의 이벤트 핸들러는 onCreate 또는 onPageBreak 이벤트에 대해 액세스되며, 이후의 이벤트 핸들러는 다른 유형의 이벤트에 대해 액세스됩니다. 세부사항에 대해서는 "BIRT 데이터 액세스 이벤트 핸들러" 및 "BIRT 보고서 레이아웃 이벤트 핸들러"를 참조하십시오.