소개
이 사용지침서에서는 데이터 그리드 및 데이터 그리드 반복기로 작업하기 위해 Groovy 스크립트를 구현하는 방법을 보여줍니다. 조건부 논리를 사용하면 데이터 그리드에서 배경색을 설정하고, 성능 벤치마킹을 구현하고, 그리드에서 기본 데이터 값을 설정할 수 있습니다.
배경
데이터 그리드 인터페이스는 POV/행/열 헤더 셀에 대한 액세스를 제공하며 데이터 셀을 반복할 수 있는 다양한 이터레이터를 제공합니다.
필요 조건
Cloud EPM 실습 자습서에서는 Cloud EPM Enterprise Service 인스턴스로 스냅샷을 임포트해야 할 수 있습니다. 자습서 스냅샷을 임포트하려면 먼저 다른 Cloud EPM Enterprise Service 인스턴스를 요청하거나 현재 애플리케이션 및 비즈니스 프로세스를 제거해야 합니다. 자습서 스냅샷은 기존 애플리케이션 또는 비즈니스 프로세스로 가져오지 않으며 현재 작업 중인 애플리케이션 또는 비즈니스 프로세스를 자동으로 바꾸거나 복원하지 않습니다.
이 자습서를 시작하기 전에 다음을 수행해야 합니다.
- Cloud EPM Enterprise Service 인스턴스에 대한 서비스 관리자에게 접근 권한을 부여합니다.
- 이 스냅샷을 업로드하여 Planning 인스턴스로 임포트합니다.
주:
스냅샷을 임포트하는 마이그레이션 오류가 발생하는 경우 HSS-Shared Services 구성요소는 물론 코어 구성요소의 보안 및 사용자 환경설정 아티팩트를 제외한 마이그레이션을 다시 실행합니다. 스냅샷 업로드 및 임포트에 대한 자세한 내용은 Oracle Enterprise Performance Management Cloud용 마이그레이션 관리 설명서를 참조하십시오.참고:
이 자습서에 필요한 스크립트는 각 섹션의 텍스트 파일로 링크됩니다.조건부 논리를 사용하여 배경색 설정
이 섹션에서는 데이터 값이 #MISSING인 셀의 배경색을 █(0x00BFFF), 데이터 값이 50000보다 작거나 같은 셀을 █(0xFF8C00) 색상으로 설정하고 데이터 값이 50000보다 큰 셀을 █(0x00FA9A) 색상으로 설정하기 위해 Groovy 스크립트를 구현합니다.
주:
Groovy 스크립트를 정의한 후 각 양식의 컨텍스트에서 정의해야 하는 데이터 검증 규칙과 달리 모든 양식과 연계할 수 있습니다.- Calculation Manager를 열고 Plan1 큐브에 Groovy Set Background Color라는 규칙을 생성합니다.
- 규칙 편집기에서 디자이너 옵션을 스크립트 편집으로 변경하고 스크립트 유형을 Groovy 스크립트로 설정합니다.
- 이 스크립트를 복사하여 편집기에 붙여넣습니다.
- 도구 모음에서
(저장)을 눌러 스크립트를 저장한 다음
(검증 및 배치)을 눌러 스크립트를 검증하고 배치합니다. 프롬프트가 표시되면 확인을 누릅니다. Calculation Manager를 닫습니다.
- 네비게이터에서 양식 관리자를 열고 EmployeeDriverForm 양식을 선택합니다.
- 양식을 편집하고 로드 후 실행할 Groovy 세트 배경색 규칙을 연계합니다. form을 저장하고 Form Manager window를 닫습니다.
- 네비게이터 또는 홈 페이지에서 데이터를 누릅니다. EmployeeDriverForm 양식을 열고 스크립트가 셀을 디자인된 대로 강조 표시하는지 확인합니다.


operation.grid.dataCellIterator.each {if(it.missing) {
it.bgColor = 0x00BFFF
} else if(it.data <= 50000)
it.bgColor = 0xFF8C00
else if(it.data > 50000) it.bgColor = 0x00FA9A
}
스크립트는
dataCellIterator
에서 반환된 현재 데이터 그리드 operation.grid
의 각 데이터 셀을 반복합니다.
암시적 "it" 변수는 반복되는 현재 항목을 나타냅니다. 이 경우 "it" 변수는 dataCellIterator
에서 반환된 현재 데이터 셀을 참조합니다.
참고:
또한 아래 예제와 같이 명시적으로 이름이 지정된 변수(예: "cell")를 사용할 수도 있습니다.operation.grid.dataCellIterator.each { cell -> if(cell.missing) { cell.bgColor = 0x00BFFF } }
현재 데이터 셀의 경우 스크립트에서 누락된 값을 확인합니다.
주:
cell.data
는 #MISSING 또는 0인 셀에 대해 0(영)을 반환합니다. 0이 아닌 #MISSING에 대한 셀을 확인하려면 cell.missing
속성을 사용할 수 있습니다. 셀에서 #MISSING가 아닌 0 값을 검사하려면 cell.data == 0 && !cell.missing
과 같은 조건을 사용할 수 있습니다. TRUE인 경우 스크립트는 셀의 배경색을
0x00BFFF
( █ )로 설정합니다.
이 스크립트는 데이터 값이 50000보다 작거나 같은지 확인합니다.
TRUE인 경우 스크립트는 셀의 배경색을
0xFF8C00
( █ )로 설정합니다.
셀의 데이터 값이 50000보다 크면 스크립트는 셀의 배경색을
0x00FA9A ( █ )
로 설정합니다.




스크립트 프로파일링 및 디버깅
이 섹션에서는 DataGrid 인터페이스에서 제공하는 이터레이터를 사용하고, 코드를 프로파일링하고, 작업 콘솔에 디버깅 문을 추가하는 방법을 배웁니다.
- Calculation Manager를 열고 Plan1 큐브에 Groovy Iterator Performance라는 규칙을 생성합니다.
- 규칙 편집기에서 디자이너 옵션을 스크립트 편집으로 변경하고 스크립트 유형을 Groovy 스크립트로 설정합니다.
- 이 스크립트를 복사하여 편집기에 붙여넣습니다.
- 도구 모음에서
(저장)을 눌러 스크립트를 저장한 다음
(검증 및 배치)를 눌러 스크립트를 검증하고 배치합니다. 프롬프트가 표시되면 확인을 누릅니다. Calculation Manager를 닫습니다.
- 네비게이터에서 양식 관리자를 열고 EmployeeDriverForm 양식을 선택합니다.
- 양식을 편집하고 저장 후 실행할 Groovy 이터레이터 성능 규칙을 연계합니다. form을 저장하고 Form Manager window를 닫습니다.
- 네비게이터 또는 홈 페이지에서 데이터를 누릅니다. EmployeeDriverForm 양식을 열고 등급 1에 대한 최소 급여를 35000으로, 등급 2에 대한 최소 상여를 2000으로 변경합니다.
- 폼을 저장하고 닫습니다. Jobs 콘솔로 이동합니다.
- Groovy 반복기 성능을 눌러 작업 세부정보를 표시합니다. Groovy 스크립트에 의해 인쇄된 로그 메시지를 보려면 완료됨 상태를 누릅니다.


def benchmark(GridIterator itr) {def start = currentTimeMillis()
itr.each { println "$it.memberNames, cell data: $it.data, $it.formattedValue" }
def elapsed = currentTimeMillis() - start println "\nTime taken by iterator: $elapsed"
} println "Iterate over all data cells in this data grid...\n"
benchmark operation.grid.dataCellIterator()
println "Iterate over edited data cells in this data grid...\n" benchmark operation.grid.dataCellIterator({DataCell cell -> cell.edited})
println "Iterate over Min Salary and Min Bonus data cells in this data grid...\n" benchmark operation.grid.dataCellIterator('Min Salary', 'Min Bonus')
![]()
지정된
GridIterator
를 사용하여 해당 셀을 반복하고 셀이 해당 데이터와 함께 나타내는 모든 차원에서 멤버 이름 목록을 인쇄하는 benchmark()
이라는 유틸리티 메소드를 정의합니다. 이터레이터에 걸린 시간도 인쇄됩니다.
타이머를 시작합니다.
지정된
GridIterator
를 사용하여 각 셀을 반복하고 셀이 나타내는 모든 차원에서 해당 데이터 값 및 형식 지정된 값과 함께 멤버 이름 목록을 인쇄합니다. $it.data
는 셀에 대한 숫자 값을 반환하고 $it.formattedValue
는 사용자가 입력한 텍스트, 스마트 목록 또는 날짜와 같은 숫자가 아닌 값을 반환합니다.
반복기에 걸린 시간을 작업 콘솔에 인쇄합니다.
작업 콘솔에 디버깅 메시지를 기록합니다.
반복기가 있는
benchmark()
메소드를 호출하여 현재 데이터 그리드의 각 셀을 반복합니다.
반복기를 사용하여 현재 데이터 그리드에서 편집된 셀을 반복하는 benchmark() 메소드를 호출합니다.
참고:
이 이터레이터는 잠김, 누락, 유효, readOnly, validIntersection 등과 같은 부울을 반환하는 DataCell 객체의 모든 속성과 함께 사용할 수 있습니다. 반복기가 있는
benchmark()
메소드를 호출하여 현재 데이터 그리드의 최소 임금 및 최소 상여 데이터 셀을 반복합니다.





첫 번째 이터레이터는 모든 셀과 데이터 값을 인쇄하고, 두 번째 이터레이터는 편집된 두 개의 셀만 인쇄하며, 세 번째 이터레이터는 최소 임금 및 최소 상여 열의 셀만 인쇄합니다.
기본 데이터 값 설정
이 섹션에서는 DataGridBuilder
인터페이스를 사용하여 그리드에서 기본 데이터 값을 설정하는 방법에 대해 알아봅니다.
- Calculation Manager를 열고 Plan1 큐브에 Groovy 등급 데이터 재설정이라는 규칙을 생성합니다.
- 규칙 편집기에서 디자이너 옵션을 스크립트 편집으로 변경하고 스크립트 유형을 Groovy 스크립트로 설정합니다.
- 이 스크립트를 복사하여 편집기에 붙여넣습니다.
Cube cube = operation.application.getCube("Plan1")
DataGridBuilder builder = cube.getDataGridBuilder("MM/DD/YYYY")
builder.addPov('FY16', 'Current', 'USD', 'BegBalance', 'BU Version_1', 'No Entity')
builder.addColumn('Min Salary', 'Max Salary', 'Min Bonus', 'Max Bonus') builder.addRow(['Grade 1'], [30000, 50000, '#missing', '#missing']) builder.addRow(['Grade 2'], [40000, 60000, '#missing', 5000]) builder.addRow(['Grade 3'], [70000, 90000, '#missing', 10000]) DataGridBuilder.Status status = new DataGridBuilder.Status()
builder.build(status).withCloseable { DataGrid grid ->
println("Total number of cells accepted: $status.numAcceptedCells")
println("Total number of cells rejected: $status.numRejectedCells") println("First 100 rejected cells: $status.cellsRejected") cube.saveGrid(grid)
}
- 도구 모음에서
(저장)을 눌러 스크립트를 저장한 다음
(검증 및 배치)을 눌러 스크립트를 검증하고 배치합니다. 프롬프트가 표시되면 확인을 누릅니다. Calculation Manager를 닫습니다.
- 네비게이터에서 양식 관리자를 열고 규칙 Groovy 등급 재설정 데이터를 EmployeeDriverForm 양식과 연계합니다. 폼을 저장하고 폼 관리자 창을 닫습니다.
- Planning 홈 페이지에서 데이터를 누릅니다. EmployeeDriverForm 폼을 열고 작업을 누른 다음 드롭다운 메뉴에서 비즈니스 규칙을 선택합니다. 규칙을 실행하려면 Groovy 등급 데이터 재설정을 누릅니다.
- 규칙이 성공적으로 실행된 후 정보 대화 상자에서 확인을 누르고 그리드 데이터가 재설정되었는지 확인합니다.
- form을 닫고 Jobs 콘솔로 이동합니다.
- 작업 세부정보를 표시하려면 Groovy 등급 데이터 재설정을 누릅니다. 수락 및/또는 거부된 셀 수에 대한 세부정보를 보려면 완료됨 상태를 누릅니다.
Plan 1 큐브에 대한 큐브 객체를 작성합니다.
큐브에 대한 DataGridBuilder을 가져오고 스크립트에서 날짜 값을 제공하는 형식을 정의합니다.
주:
또한 DataGridBuilder는ExecuteAsUser
를 두번째 매개변수로 수락하여 시스템 사용자 대신 데이터 저장을 지원합니다. 데이터를 시스템 사용자로 저장하면 현재 사용자의 보안을 적용하지 않고도 데이터를 저장할 수 있습니다. ExecuteAsUser
에 적합한 값은 다음 예에서와 같이 CURRENT_USER
(기본값) 및 SYSTEM_USER
입니다.DataGridBuider builder = cube.dataGridBuilder("MM/DD/YYYY", SYSTEM_USER)
POV 멤버, 열 멤버 및 데이터 값이 있는 행을 추가하여 데이터 그리드를 구성합니다.
다음 단계에서 생성한 DataGrid 객체에 대한 status 객체를 작성합니다.
withCloseable 생성자로 DataGrid 객체를 작성합니다. 생성자는 코드 블록의 실행이 완료되면 DataGrid 객체를 닫습니다. 이는 작업이 완료된 후 규칙이 DataGrid 객체를 메모리에 열어 두지 않도록 하는 것이 중요합니다.
빌더가 수락하거나 거부한 셀 수를 작업 콘솔에 인쇄합니다. 읽기 전용 셀은 거부됩니다.
데이터 그리드를 저장합니다.
그리드가 자동으로 닫힙니다.





다음 자습서
관련 링크
추가 학습 자원
docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 제공되는 교육 리소스를 보려면 Oracle University를 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.