메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

BIRT와 Rational Team Concert를 사용하여 사용자 정의 보고서 작성하기: Part 3. 고급 보고 기술

Tim McMackin, Software engineer, IBM
Author photo
Tim McMackin is a technical writer for IBM Rational software in Raleigh, North Carolina. He has a background in writing for advertising technical products and has been with IBM since 2004.

요약:  IBM® Rational Team Concert™를 사용하면 소프트웨어 개발 팀이 작업 계획 및 태스크, 빌드 및 테스트, 소스 코드 및 기타 파일을 포함한 엄청난 양의 정보를 저장하고 정리할 수 있습니다. 이 기사에서는 Rational Team Concert와 Eclipse BIRT(Business Information and Reporting Tools)를 사용하여 사용자 정의 보고서로 해당 정보를 시각화하는 방법을 보여 줍니다. 이 기사는 이 시리즈의 이전 두 기사를 바탕으로 저장소에서 복잡한 정보를 검색하는 방법을 보여 줍니다.

이 연재 자세히 보기

원문 게재일:  2010 년 6 월 15 일 번역 게재일:   2010 년 7 월 30 일
난이도:  고급 영어로:  보기 PDF:  A4 and Letter (454KB | 26 pages)Get Adobe® Reader®
페이지뷰:  2782 회
의견:  


이 기사의 정보

IBM® Rational Team Concert™를 사용하면 소프트웨어 개발 팀이 작업 계획 및 태스크, 빌드 및 테스트, 소스 코드 및 기타 파일을 포함한 엄청난 양의 정보를 저장하고 정리할 수 있다. 이러한 크기를 가진 저장소에서는 시각화가 문제가 된다. Rational Team Concert가 추적 중인 프로젝트의 상태에 대한 상위 레벨 보기를 얻으려면 어떻게 하는가? 대시보드 및 작업 항목 쿼리에서는 이 정보를 볼 수 있는 몇 가지 방법을 제공한다. 하지만 사용자 정의할 수 있는 여지가 더 많은 보기를 얻기 위해 Rational Team Concert는 웹 클라이언트에 직접 로드된 사용자 정의 Eclipse BIRT(Business Information and Reporting Tools) 보고서를 지원한다.

목표

이 기사에서는 다음 주제에 대해 다룬다.

  • 매개변수로 보고서 사용자 정의하기
  • 데이터 세트에 JavaScript 코드를 적용하여 복잡한 논리 사용하기
  • 특정 기준을 충족하는 작업 항목 수 계산하기
  • Rational Team Concert 저장소에서 히스토리 데이터 검색하기
  • 활성 데이터 테이블과 히스토리 데이터 사이의 동작 차이점 이해하기
  • Rational Team Concert 저장소의 다양한 영역에서 제공되는 데이터 사용하기
  • 보고서에서 관련 작업 항목으로 링크하기

전제 조건

이 기사 시리즈에서는 Part 1과 Part 2에서 다룬 Rational Team Concert의 보고서에 대한 기본 지식이 있다고 가정한다. Rational Team Concert와 BIRT의 보고서에 익숙하지 않은 경우에는 이전 기사를 먼저 살펴본다.

이 기사의 지시사항을 따르려면 jazz.net의 무료 계정과 Rational Team Concert 서버 및 Rational Team Concert 클라이언트의 정식 버전이나 평가판이 필요하다. 서버와 클라이언트가 없는 경우에는 Part 1에 설명되어 있는 Rational Team Concert 서버의 평가판과 Rational Team Concert 클라이언트의 무료 버전 다운로드 방법을 확인한다.


매개변수로 보고서 필터링하기

이전 기사(Part 2)에서 보고서의 단일 테이블에 매개변수를 전달하는 방법을 살펴봤다. 보고서에 대해 글로벌 매개변수를 설정한 후 해당 매개변수를 원하는 수만큼 많은 데이터 세트에 사용할 수도 있다. 예를 들어, 관심 있는 영역만 표시하도록 팀 영역을 필터링할 수 있다. 이 경우에는 항목을 선택할 모든 팀 영역을 표시하는 새 데이터 세트를 작성한 후 해당 데이터 세트를 보고서 사용자에게 목록 상자로 노출한다. 그런 다음 다른 데이터 세트는 목록 상자에서 보고서 사용자가 선택하는 팀 영역으로만 제한할 수 있다.

  1. 공통 데이터 소스 TEAM_AREA 테이블에서 Team area 옵션이라는 데이터 세트를 작성한다.
  2. TEAM_AREA_NAME 및 TEAM_AREA_ITEMID 열을 출력으로 선택하고 TEAM_AREA_ARCHIVED를 매개변수로 선택한다.

그림 1. 팀 영역의 데이터 세트 작성하기
New Jazz Data Set 창
  1. 활성 팀 영역만 이 데이터 세트에 포함되도록 아카이브된 매개변수를 false로 설정한다.
  2. 해당 데이터 세트를 가능한 값으로 사용하여 보고서에 대한 매개변수를 작성한다.
    1. Data Explorer 보기에서 Report Parameters를 마우스 오른쪽 단추로 클릭한 후 New Parameter를 클릭한다.
    2. Edit Parameter 창에서 매개변수 이름을 Selected team areas로 지정한다.
    3. Prompt Text 필드에 Team areas를 입력한다.
    4. Data type 목록에서 String을 선택한다.
    5. Display type 목록에서 List Box를 선택한다.
    6. Display As 아래에서 Hidden 선택란을 선택 해제하고 Is Required 선택란을 체크한다.
    7. List of values 아래에서 Dynamic을 클릭한다. 이 옵션을 사용하면 값을 모두 수동으로 입력하는 대신 값의 데이터 세트를 사용할 수 있다.
    8. Allow Multiple Values 선택란을 선택 해제한다. Rational Team Concert는 이 선택란을 인식하지 않는다. Rational Team Concert는 매개변수의 다중 값을 목록 상자로 표시하고 매개변수의 단일 값을 콤보 상자로 표시할 수 있다.
    9. Data set 목록에서 Team area options 데이터 세트를 선택한다.
    10. Select value column 목록에서 TEAM_AREA_ITEMID를 선택한다. 이 열은 팀 영역의 고유 ID이다.
    11. Select display text 목록에서 TEAM_AREA_NAME을 선택한다. 이 열은 매개변수의 레이블로 사용될 팀 영역의 이름이다.
    12. Sort by 목록에서 TEAM_AREA_NAME을 선택한다.
    13. OK를 클릭한다.

그림 2. 매개변수 작성하기
Edit Parameter 대화 상자 창

보고서를 서버에 업로드하여 실행하면 하나 이상의 팀 영역을 선택할 수 있는 목록 상자가 표시된다. 관심 있는 팀 영역을 선택한 후 Run을 클릭하면 된다. 하지만 매개변수가 아직 바인드되지 않았기 때문에 매개변수는 아직 데이터 세트를 제한하지 않는다.


그림 3. 런타임 시 보고서의 매개변수 값 지정하기
My Work Items 보기
  1. 매개변수를 팀 영역 데이터 세트에 바인드한다.
    1. Data Explorer 보기에서 Users 데이터 세트를 두 번 클릭한다.
    2. 데이터 세트 편집기의 Fact Information 탭에서 TEAM_AREA_ITEMID 열을 데이터 세트의 매개변수에 추가한다. 데이터 세트 편집기의 Parameters 탭에서 TEAM_AREA_ITEMID 매개변수를 선택한 후 Edit를 클릭한다.
    3. Edit Parameter 창의 Linked To Report Parameter 목록에서 Selected team areas 매개변수를 선택한다.

그림 4. 매개변수에 데이터 세트 필드 바인드하기
Edit Data Set–Users 보기의 Edit Parameter 창
    1. OK를 클릭하여 데이터 세트를 저장한 후 닫는다.

이제 보고서를 서버에 업로드하고 매개변수의 팀 영역을 선택한 후 보고서를 실행하면 지정된 팀 영역과 연관된 사용자의 목록만 표시된다. 작업 항목의 팀 영역에 관계없이 작업 항목 데이터 세트에는 각 사용자와 연관된 모든 작업 항목이 여전히 표시된다. 원했다면 팀 영역 매개변수에 따라 작업 항목을 필터링할 수도 있었다.

보고서에 표시되는 데이터의 양을 줄이면 실행 속도가 빨라지고 더욱 간결한 정보가 표시되기 때문에 이러한 방식으로 매개변수를 사용하여 보고서를 관리 가능한 크기로 제한할 수 있다.

또한 매개변수를 사용하여 특정 독자에 맞게 보고서를 사용자 정의할 수 있다. Rational Team Concert에서 Edit 단추를 클릭한 후 보고서의 매개변수를 설정하면 Save Copy를 클릭하여 보고서의 새로운 사본을 저장할 수 있다. 이 새로운 사본은 다른 매개변수를 가진 동일한 보고서 템플리트를 사용하며 새 보고서 설계 파일이 업로드되면 자동으로 업데이트된다.


상호 참조 데이터를 위한 기타 기술

Part 2에 설명된 중첩된 데이터 세트 기술은 Rational Team Concert 보고서에서 복잡한 데이터를 충분히 표시할 수 있다. 하지만 한 데이터를 다른 데이터와 관련시키는 다른 기술도 있다.

스크립트로 작성된 변수

테이블을 저장하는 글로벌 JavaScript 오브젝트를 작성한 후 데이터에 액세스해야 할 때마다 이 오브젝트를 사용할 수 있다. 사용하려고 할 때마다 데이터 세트를 중첩시키지 않아도 되기 때문에 이 방법은 보고서에서 일정하게 유지되는 데이터나 자주 참조하려고 하는 데이터의 경우에 더 편리할 수 있다.

예를 들어, 작업 항목의 우선순위와 심각도는 ENUMERATIONS 테이블에 저장된다. 이 테이블에는 예를 들어, 작업 항목에 사용자 정의 속성을 추가하는 경우 작성되는 사용자 정의 열거도 포함되어 있다. ENUMERATIONS 테이블을 기반으로 단순 데이터 세트를 작성한 후 열거의 ID와 프로젝트 영역의 ID를 전달하면 Listing 1에 있는 것과 같은 결과가 발생한다.


Listing 1. 심각도 열거
ENUMERATION_ID  LITERAL_ID  LITERAL_NAME	
severity        1           Unclassified	
severity        2           Minor	
severity        3           Normal	
severity        4           Major	
severity        5           Critical	
severity        6           Blocker

PROJECT_AREA_ITEMID 매개변수는 ENUMERATIONS 테이블에서 작성된 데이터 세트를 위해 필수이다. 이 매개변수를 공백으로 두면 데이터 세트에 결과가 리턴되지 않는다. '{Current Project Area}' 변수(매개변수를 전달할 때는 따옴표 포함)를 사용하여 현재 프로젝트 영역을 가져오거나 프로젝트 영역 ID를 수동으로 지정할 수 있다.

가독성을 위해 열거 값의 고유 ID 대신 열거 값의 레이블(이 경우에는 "Major"나 "Minor" 같은 문자열 값)을 표시하려고 할 것이다. 하지만 작업 항목에 대한 정보가 포함된 테이블(예: LIVE_WORKITEMS_CNT 테이블)에는 Listing 2와 같이 레이블 대신 값의 ID가 표시된다.


Listing 2. 심각도별 작업 항목
WI_ID   SUMMARY         WI_SEVERITY	
1234    Small glitch    2	
5678    Medium problem  3	
9123    Big problem!    5

따라서 LIVE_WORKITEMS_CNT 테이블에 있는 고유 ID를 ENUMERATIONS 테이블에 있는 값으로 상호 참조해야 한다. 하지만 보고서에서는 여러 위치에서 이러한 열거를 사용할 수 있다. 해당 열거 값을 사용하는 모든 위치에서 열거 데이터 세트를 중첩시킬 수 있지만 이렇게 하면 보고서에 지나치게 많은 수의 테이블이 작성되어 로딩 시간이 늘어난다. 열거 데이터 세트를 작업 항목 데이터 세트에 결합할 수 있지만 이는 작업 항목 데이터 세트가 다른 데이터 세트에도 결합될 수 있는 경우에는 다루기 어렵다. 더 간단한 방법은 각 열거 값을 레이블과 관련시키는 글로벌 JavaScript 오브젝트를 작성하는 것이다. 그런 다음 작업 항목의 심각도를 검색해야 할 때는 언제나 해당 오브젝트를 참조할 수 있다.

동영상

이 기술의 동영상은 IBM Jazz YouTube 채널(참고자료 섹션 참조)에서 확인할 수 있다.

다음 단계에서는 이 기술의 기본사항에 대해 다룬다.

  1. 위의 심각도 열거가 포함된 예제와 같은 열거 값의 데이터 세트를 작성한다. Preview 탭을 사용하는 경우에는 관심 있는 열거에 대한 데이터가 표시되는지 확인한다.

이 데이터 세트를 보고서에 직접 표시하기를 원하지 않더라도 해당 데이터 세트를 보고서에 추가해야 한다. 그렇지 않으면 보고서는 데이터 세트를 데이터로 채우지 않는다. 다음 단계에서는 보고서의 데이터 세트에 숨겨진 참조를 추가한다.

  1. Palette 보기에서 동적 텍스트 필드를 보고서의 위쪽으로 끌어온다.
  2. 표현식 편집기에 다음 표현식을 입력한다.
    Total.count();
  3. OK를 클릭한다.
  4. 새 동적 텍스트 필드를 선택한 후 Property Editor 보기에서 Binding 탭을 연다.
  5. Data Set 목록에서 데이터 세트를 선택한다.
  6. Properties 탭으로 이동하여 Visibility 섹션을 클릭한다.
  7. Hide Element 선택란을 체크한 후 For all outputs 단일 선택 단추를 선택한다.

이제 보고서가 실행되면 데이터 세트가 채워지지만 원시 데이터는 보고서에 직접 표시되지 않는다.

  1. Data Explorer 보기에서 데이터 세트를 선택한다.
  2. 보고서 편집기에서 Script 탭으로 이동한다.

이 탭은 데이터 세트를 제어하는 사용자 정의 스크립트를 표시한다. BIRT 스크립트에 대한 전체 안내는 이 기사의 범위를 벗어나지만 간단하게 요약하면 각 데이터 세트에는 데이터 세트 라이프사이클의 특정 지점에서 실행되는 여러 이벤트 핸들러가 있을 수 있다. 이 경우에는 데이터 세트가 열릴 때 JavaScript 오브젝트를 작성한 후 데이터 세트의 각 행에 대한 해당 오브젝트에 정보를 추가해야 한다.

  1. 편집기의 위쪽에 있는 Script 목록에서 beforeOpen 이벤트를 선택한다. 이 이벤트는 데이터 세트가 데이터로 채워지기 전에 한 번만 발생한다.
  2. 다음 코드를 편집기에 입력한다.
    severity = new Object();
  3. Script 목록에서 onFetch를 선택한다. 이 이벤트는 데이터 세트의 각 행에 대해 한 번 발생한다.
  4. 다음 코드를 onFetch 이벤트 핸들러로 입력한다.
    severity[row["LITERAL_ID"]] = row["LITERAL_NAME"];

이 코드는 링크된 이름 및 값 쌍을 오브젝트에 추가한다. 데이터 세트가 완전히 채워지고 오브젝트가 작성되면 해당 오브젝트를 사용하여 열거에 있는 각 값의 레이블을 검색할 수 있다. 예를 들어, severity[1] 코드를 삽입하면 "Unassigned"가 생성된다.

다른 데이터 세트에서 오브젝트 사용하기

이제 다른 데이터 세트에서 오브젝트를 사용할 수 있다. 예를 들어, 작업 항목의 데이터 세트가 있는 경우 심각도를 표시하는 계산 결과 열을 추가할 수 있다.

  1. 작업 항목을 나열하는 데이터 세트를 위해 데이터 세트 편집기를 연다.
  2. Fact Information 탭에서 WI_SEVERITY 탭이 출력 열로 선택되어 있는지 확인한다.
  3. Computed Columns 탭에서 유형이 String이고 이름이 Severity Name과 같은 새로운 계산 결과 열을 추가한다.

Expression 필드에 다음 코드를 입력한다.
severity[row["WI_SEVERITY"]]


그림 5. 계산 결과 열 작성하기
Edit Data Set – New Computed Column

JavaScript 오브젝트가 아직 채워지지 않았기 때문에 이 데이터 세트는 Preview Results 탭에 정보를 표시하지 않는다. 하지만 보고서를 실행하면 Listing 3과 같이 오브젝트의 값을 사용할 수 있기 때문에 데이터 세트가 해당 열에 심각도 이름을 표시한다.


Listing 3. 새 계산 결과 열을 포함한 작업 항목 데이터 세트
WI_ID   SUMMARY         WI_SEVERITY  Severity Name
1234    Small glitch    2            Minor
5678    Medium problem  3            Normal
9123    Big problem!    5            Critical

테이블 결합

SQL과 마찬가지로 BIRT 데이터 세트도 결합할 수 있다. SQL 테이블 결합에 대한 세부 사항은 이 기사의 범위를 벗어난다. 간단하게 말하자면 테이블 결합은 두 가지 다른 테이블에서 복합 테이블을 작성한다.

이 방법은 중첩된 데이터 세트 기술과는 다르게 저장소에 있는 두 테이블의 정보를 사용하여 단일 데이터 세트를 작성할 수 있는 장점이 있다. 단일 데이터 세트에 대해 작업하면 두 테이블 모두의 정보가 필요한 논리를 더 쉽게 사용할 수 있고 복수의 중첩된 테이블보다 더 쉽게 보고서에서 단일 테이블을 형식화하고 배열할 수 있다. 그리고 일부 데이터 소스 유형(예: XML 파일)은 매개변수를 지원하지 않으므로 테이블 결합은 차선책이 될 수 있다.

예를 들어, WORKITEMS_SNAPSHOT 스냅샷의 STATE 테이블(Listing 4)은 작업 항목의 가능한 상태에 대한 정보를 저장한다.


Listing 4. STATE 테이블의 샘플 데이터
STATE      STATE_GROUP         STATE_NAME 
_Efk74JK1  OPEN_STATES         New 
_Efk74JK6  OPEN_STATES         Reopened 
_Efk74JK7  OPEN_STATES         Triaged 
_Efk74JK2  IN_PROGRESS_STATES  In Progress 
_Efk74JK4  CLOSED_STATES       Verified 
_Efk74JK3  CLOSED_STATES       Resolved 
_Efk74JK5  CLOSED_STATES       Closed

LIVE_WORKITEM_CNT 테이블(Listing 5)에는 STATE 테이블에 있는 상태를 참조하는 열이 포함되어 있다. STATE 테이블에 있는 상태의 접두어에는 프로젝트 영역 ID가 추가되고 LIVE_WORKITEM_CNT 테이블에 있는 상태에는 접두어가 추가되지 않지만 나중에 이를 정정한다.


Listing 5. LIVE_WORKITEM_CNT 테이블의 샘플 데이터
WI_ID   SUMMARY         STATE_NAME
4321    Fixed issue     3
9876    New problem     1
1111    Current work    2

이전 섹션에서 설명한 심각도 열거와 마찬가지로 작업 항목 정보와 동일한 데이터 세트에 상태 그룹 및 상태 이름 정보가 있으면 더 편리하다. 테이블을 결합한 후 테이블 간 정보를 병합하여 이를 수행할 수 있다. SQL 용어로 이러한 병합은 외부 결합을 요구하며 이는 작업 항목 데이터 세트에 있는 각 행을 상태 ID가 일치하는 상태 데이터 세트에 있는 단일 행에 일치시킨다.

  1. STATE_NAME 열을 포함하여 작업 항목을 나열하는 데이터 세트를 작성한다.
  2. 프로젝트 영역 이름을 STATE_NAME 열과 연결하는 작업 항목 데이터 세트 "State ID"에 계산 결과 열을 추가한다. 이 열의 값은 다음과 같다.
    '_Efk74JK'+row["STATE_NAME"] 이 계산 결과 열은 상태 테이블에 있는 ID 값과 일치한다.

Listing 6. STATE 테이블의 샘플 데이터
WI_ID   SUMMARY         STATE_NAME  State ID
4321    Fixed issue     3           _Efk74JK3
9876    New problem     1           _Efk74JK1
1111    Current work    2           _Efk74JK2

  1. STATE 테이블에 있는 상태를 나열하는 데이터 세트를 작성한다.
  2. Data Explorer 보기에서 Data Sets를 마우스 오른쪽 단추로 클릭한 후 New Joint Data Set를 클릭한다.
  3. New Joint Data Set 창에서 왼쪽에 있는 작업 항목 데이터 세트를 선택한 후 데이터 세트 이름 아래에서 State ID 열을 선택한다.
  4. 오른쪽에서 상태 데이터 세트를 선택한 후 STATE 열을 선택한다.
  5. Join Types 아래에서 Left Outer Join을 클릭한다.
  6. Join Work Items to States와 같은 이름을 데이터 세트에 지정한다.

그림 6. 데이터 세트 결합하기
Join Data Set 창
  1. Finish를 클릭한다.

새 결합 데이터 세트(Listing 7)에는 두 데이터 세트의 병합된 정보가 포함되어 있다. 보고서에서는 결합 데이터 세트를 채우기 위해 원래 데이터 세트를 계속 사용하기 때문에 두 개의 원래 데이터 세트는 삭제하지 않는다.


Listing 7. 결합 데이터 세트에서 발생한 결과
Work items::WI_ID  Work items::State ID  States::STATE  States::STATE_NAME
4321              _Efk74JK3              _Efk74JK3      Resolved
9876              _Efk74JK1              _Efk74JK1      New
1111              _Efk74JK2              _Efk74JK2      In Progress


WI_COUNT 열로 결과 계수하기

작업 항목 스냅샷의 테이블은 대부분 WI_COUNT 열을 포함하고 있으며 이 열은 일치하는 특성을 가진 작업 항목의 합계를 보여 준다. 예를 들어, 저장소에 있는 작업 항목의 총 수를 알려고 한다고 가정한다. 이 경우에는 LIVE_WORKITEM_CNT 테이블을 사용할 수 있고 출력에 WI_COUNT 열을 지정할 수 있다.

WI_COUNT	
656	

다른 열을 결과에 포함하도록 지정하면 WI_COUNT 열은 각 해당 열에 따라 작업 항목의 수를 계산한다. 예를 들어, TEAM_AREA_NAME 열을 출력에 추가하면 WI_COUNT 열은 각 팀 영역에 있는 작업 항목의 수를 표시한다.

TEAM_AREA_NAME  WI_COUNT	
Team A          134
Team B          312
Team C          210

WI_COUNT와 WI_TYPE만 출력 열에 포함시켜 작업 항목 유형에 대해 동일한 작업을 수행할 수 있다.

WI_TYPE     WI_COUNT
story       25
defect      505
task        126

WI_COUNT 열은 다음 섹션에 설명되는 것과 같이 히스토리 테이블과 함께 자주 사용된다.


히스토리 데이터 검색하기

지금까지 Rational Team Concert가 테이블(BIRT에서 데이터 세트의 기초를 형성함)로 보고서에 정보를 제공하는 것을 살펴봤다. 이러한 테이블 중 일부는 Rational Team Concert 저장소의 활성 데이터에서 제공된다(예: 작업 항목에 대한 정보를 위해 사용한 LIVE_WORKITEMS_CNT 테이블). 작업 항목이 변경되면 해당 변경사항이 이 테이블에 즉시 반영된다.

다른 테이블은 저장소에서 직접 제공되지 않고 데이터 마트에서 제공된다. Rational Team Concert는 복잡한 정보를 필터링하고 데이터 마트로 형식화하여 더 편리한 구조로 해당 데이터를 제공한다. 예를 들어, Rational Team Concert 서버는 저장소의 변경사항에 대한 정보(예: 매일 작성되는 새 작업 항목 수)를 데이터 마트에 기록한다. 따라서 데이터 마트를 사용하면 저장소의 현재 상태에 대한 정보뿐만 아니라 경향, 변경사항 및 기간에 대한 정보도 검색할 수 있다.

보고서를 작성하거나 실행하는 경우에는 데이터 마트에 있는 정보가 저장소에 있는 데이터보다 뒤쳐질 수 있다는 것을 기억해야 한다. 이 시리즈의 이전 기사에서는 사용자의 데이터 세트를 작성했다. 최근에 설치한 Rational Team Concert 서버가 있는 경우에는 해당 테이블이 저장소에 있는 사용자를 표시하지 않았다. 이 문제를 해결하기 위해서 강제로 서버가 저장소의 스냅샷을 가져와서 데이터 마트를 업데이트하도록 해야 했다. 마찬가지로 새 팀 영역을 작성하면 해당 팀 영역은 서버가 데이터 마트를 업데이트한 후에 TEAM_AREA 테이블에 표시된다. (기본적으로 Rational Team Concert는 24시간마다 자동으로 데이터 마트를 업데이트하지만 관리자는 데이터 마트에 있는 스냅샷을 수동으로 업데이트할 수 있다.)

일부 경우에는 데이터 마트의 데이터와 저장소의 데이터 사이에서 선택할 수 있다. 예를 들어, COMMON_SNAPSHOT 스냅샷에는 Rational Team Concert 사용자에 대한 정보가 포함된 두 개의 테이블이 들어 있다.

  • CONTRIBUTOR(데이터 마트의 정보를 표시함)
  • LIVE_CONTRIBUTOR(저장소에서 직접 제공되는 정보를 표시함)

각각의 테이블은 약간씩 다른 정보를 제공하므로 보고서에서 충돌이나 불일치가 발생하지 않도록 하기 위해 활성 데이터와 히스토리 데이터 중 어느 것을 사용하는지 알고 있어야 한다.

데이터 마트를 저장소 데이터의 캐시로 생각할 수 있다. 저장소에 직접 액세스하는 대신 캐시에 액세스하면 더 편리하고 성능도 더 향상된다. BIRT도 데이터 마트를 캐시로 활용할 수 있다. 보고서 템플리트를 서버에 업로드할 때 Supports Data Caching 선택란을 체크하는 경우 BIRT는 데이터 마트의 데이터만 사용한다. 따라서 보고서에서 데이터 마트의 테이블만 사용하는 경우에는 이 선택란을 체크한다. 보고서에서 활성 테이블만 사용하는 경우에는 이 선택란을 선택 해제한다.

보고서에 사용 가능한 대부분의 테이블은 데이터 마트에서 제공된다. 대부분의 활성 테이블에는 이름에 키워드 "live"가 포함되어 있다. Rational Team Concert 2.0의 활성 테이블은 다음과 같다.

  • LIVE_SNAPSHOT 스냅샷에 있는 모든 테이블
  • WORKITEMS_SNAPSHOT 스냅샷에 있는 다음 테이블
    • LIVE_WORKITEM_CNT
    • WORKITEM_EXTRA_DATA
    • WORKITEM_QUERY_RESULTS
    • ENUMERATIONS
  • APT_SNAPSHOT 스냅샷에 있는 다음 테이블
    • CONTRIBUTOR_ABSENCE
    • LIVE_CONTRIBUTOR_ASSIGNMENT
    • LIVE_CONTRIBUTOR_WORKITEM_TIME
    • LIVE_TEAM_CAPACITY


다른 테이블은 모두 데이터 마트의 데이터를 표시한다.

데이터 마트 용어

대부분의 Rational Team Concert 문서와 UI에서는 데이터 마트를 "데이터 웨어하우스"라고 부른다. 기술적으로 말하면 데이터 웨어하우스는 복수 소스의 히스토리 데이터, 집계된 데이터 또는 수정된 데이터를 제공하지만 데이터 마트는 단일 소스에서 제공되는 이 유형의 데이터를 제공한다. 복수의 저장소나 다양한 제품에 대해 작업하는 경우에만 이러한 구별이 적용된다.

데이터 마트의 작업 항목에 대한 히스토리 정보를 표시하는 WORKITEMS 스냅샷의 일부 테이블은 다음과 같다.

WORKITEM_CHNGS

이 테이블(Listing 8)에는 작업 항목의 변경사항에 대한 정보가 표시된다. 예를 들어, 작업 항목 번호를 매개변수로 전달하면 결과 데이터 세트에는 해당 작업 항목에 대한 각 변경사항의 날짜와 시간이 해당 시간의 작업 항목에 대한 정보(예: 주석 수와 작업 항목의 상태)와 함께 표시된다.


Listing 8. WORKITEM_CHNGS 테이블의 샘플 데이터
TIME_ID.TIMESTAMP     WI_ID CONTRIBUTOR_NAME STATE_GROUP  COMMENT_COUNT

Dec 9, 2008 3:37 PM   1234  Bill             OPEN_STATES              0

Apr 14, 2009 4:54 PM  1234  Joe              OPEN_STATES              1

Jun 2, 2009 1:40 PM   1234  Joe              OPEN_STATES              1

Oct 7, 2009 9:32 AM   1234  Joe              OPEN_STATES              2

Oct 30, 2009 1:20 PM  1234  Jane             OPEN_STATES              2

Oct 30, 2009 3:35 PM  1234  Steve            OPEN_STATES              2

Oct 30, 2009 3:50 PM  1234  Steve            CLOSED_STATES            3

Nov 9, 2009 1:20 PM   1234  Steve            CLOSED_STATES            3

활성 테이블과 마찬가지로 다양한 매개변수를 전달하고 이 테이블에서 다양한 정보를 얻을 수 있다. 예를 들어, 사용자 이름을 PREV_OWNER_ID.CONTRIBUTOR_USERID 매개변수(즉, 작업 항목의 이전 소유자)로 전달하고 다른 사용자 이름을 OWNER_ID.CONTRIBUTOR_USERID 매개변수(작업 항목의 현재 소유자)로 전달하면 결과 데이터 세트에는 작업 항목이 첫 번째 사용자에서 두 번째 사용자로 전송된 모든 횟수가 표시된다.

NEW_WI_COUNT

이 테이블(Listing 9)에는 매개변수에 지정된 기준에 따라 특정 날짜에 작성된 새 작업 항목의 수가 표시된다. 예를 들어, TIMESTAMP, WI_SEVERITY와 WI_COUNT를 출력 열로 선택하면 데이터 세트에 각각의 날짜에 작성된 각 심각도의 작업 항목 수가 표시된다.


Listing 9. NEW_WI_COUNT 테이블의 샘플 데이터
TIMESTAMP             WI_SEVERITY  WI_COUNT 
Apr 22, 2009 8:00 PM  Normal       27 
Apr 23, 2009 8:00 PM  Normal       38 
Apr 24, 2009 8:00 PM  Major        4 
Apr 24, 2009 8:00 PM  Normal       12
Apr 25, 2009 8:00 PM  Major        2 
Apr 25, 2009 8:00 PM  Normal       13 

심각도 열 대신 TEAM_AREA_NAME 열을 선택하면 데이터 세트 (Listing 10)에는 팀 영역에 따라 각 날짜에 작성된 작업 항목의 수가 표시된다.


Listing 10. NEW_WI_COUNT 테이블의 샘플 데이터
TIMESTAMP             TEAM_AREA_NAME  WI_COUNT 
Jun 25, 2009 8:00 PM  /Team A         1 
Jun 25, 2009 8:00 PM  /Team B         4 
Jun 25, 2009 8:00 PM  /Team C         1 
Jun 26, 2009 8:00 PM  /Team A         2 
Jun 26, 2009 8:00 PM  /Team B         5 
Jun 26, 2009 8:00 PM  /Team C         2 

이 테이블은 저장소가 작성된 시간부터 데이터를 저장하기 때문에 결과 데이터 세트의 크기가 엄청날 수 있다. 결과를 정리하기 위해 NEW_WI_COUNT 테이블에는 결과의 날짜 범위를 지정하는 데 사용할 수 있는 FROM_TIME 및 TO_TIME이라는 기본 매개변수가 포함되어 있다. JavaScript 코드를 BIRT 표현식 편집기에서 사용하여 이러한 범위를 계산할 수 있지만 BIRT에는 이러한 매개변수에 대한 날짜, 시간 및 시간소인 오브젝트가 포함되어 있다. 예를 들어, 결과를 최근 10일로 제한하려면 TO_TIME에 BirtDateTime.today()를 지정하고 FROM_TIME에 BirtDateTime.addDay(BirtDateTime.today(), -10)를 지정한다(그림 7 참조).


그림 7. 히스토리 데이터 세트의 시간 범위 설정하기
Parameters 테이블을 보여 주는 Data Set 보기

이러한 BIRT 오브젝트는 표현식 편집기의 BIRT Functions 아래에서 확인할 수 있다.


그림 8. BIRT today() 함수 선택하기
'today() : DateTime' 함수가 선택되어 있음

이러한 오브젝트에 대한 참조 정보는 Eclipse BIRT 참조(참고자료 섹션 참조)에서 확인할 수 있다.

WORKITEM_STATES

NEW_WI_COUNT 테이블과 마찬가지로 이 테이블(Listing 11)에는 특정 시점에 특정 기준을 충족하는 작업 항목의 수에 대한 정보가 표시된다. 예를 들어, WI_SEVERITY 열을 선택하면 각 날짜에 해당 심각도를 가진 작업 항목의 수가 결과에 표시된다.


Listing 11. WORKITEM_STATES 테이블의 샘플 데이터
TIMESTAMP              WI_SEVERITY   WI_COUNT 
Nov 10, 2009 12:20 PM  Blocker       15 
Nov 10, 2009 12:20 PM  Critical      50 
Nov 10, 2009 12:20 PM  Major         183 
Nov 10, 2009 12:20 PM  Minor         79 
Nov 10, 2009 12:20 PM  Normal        10832 
Nov 10, 2009 12:20 PM  Unclassified  10 
Nov 11, 2009 12:20 PM  Blocker       16
Nov 11, 2009 12:20 PM  Critical      48
Nov 11, 2009 12:20 PM  Major         192 
Nov 11, 2009 12:20 PM  Minor         76 
Nov 11, 2009 12:20 PM  Normal        10882 
Nov 11, 2009 12:20 PM  Unclassified  9

(이 경우에는 닫힌 작업 항목을 필터링할 수 있다.)

마찬가지로 TEAM_AREA_NAME 열(Listing 12)을 선택하여 각 날짜에 각 팀 영역과 연관된 작업 항목의 수를 확인할 수 있다.


Listing 12. WORKITEM_STATES 테이블의 샘플 데이터
TIMESTAMP             TEAM_AREA_NAME  WI_COUNT 
Nov 2, 2009 12:05 PM  /Team A         6 
Nov 2, 2009 12:05 PM  /Team B         12 
Nov 2, 2009 12:05 PM  /Team C         3 
Nov 1, 2009 12:05 PM  /Team A         8
Nov 1, 2009 12:05 PM  /Team B         10 
Nov 1, 2009 12:05 PM  /Team C         6

테이블과 스냅샷에 대한 자세한 정보는 jazz.net wiki에서 확인할 수 있다(참고자료 참조).


기타 유용한 정보

작업 항목에 링크하기

WI_ID 열로 표시된 작업 항목의 수를 알고 있으면 보고서에서 작업 항목으로 쉽게 링크를 작성할 수 있다. 예를 들어, 보고서에 작업 항목의 테이블이 있는 경우 해당 테이블에서 필드(WI_ID 필드가 아니어도 됨)를 선택하여 해당 작업 항목에 링크할 수 있다.

  1. 작업 항목의 테이블을 보고서에 추가한다.
  2. 테이블에서 데이터 필드(예: SUMMARY 필드)를 선택한다.
  3. Property Editor 보기에서 Hyperlink 탭을 클릭한다.
  4. Link to 필드 옆의 줄임표(세 개의 점) ... 단추를 클릭한다.
  5. Hyperlink Options 창에서 URI를 클릭하고 Location 필드에 다음 코드를 삽입한다.
    '/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/'+row["WI_ID"]
  6. OK를 클릭한다.

작업 항목 팝업 창

Rational Team Concert 대시보드에서 작업 항목의 링크 위로 커서를 이동하면 해당 작업 항목에 대한 정보가 포함된 팝업 창이 나타난다. 대시보드에서 해당 코드를 차용하여 보고서에서 작업 항목에 대한 참조에 팝업이 나타나도록 할 수 있다. 필자는 이러한 팝업을 작업 및 대시보드에서 사용할 수 없었고(있어서는 안되는 일부 메시지가 팝업에 표시됨) 이러한 팝업은 Rational Team Concert에서 공식적으로 지원하는 것이 아니지만 기본적인 용도로는 충분한 역할을 한다.


그림 9. 대시보드의 작업 항목 팝업 보기
작업 항목에 대한 정보가 팝업 보기에 표시됨
  1. 보고서 편집기의 Master Page 탭을 클릭한다. Master Page의 맨 위와 맨 아래에는 각각 머리글과 바닥글 정보를 위한 섹션이 있다. 보고서로 코드를 한 번만 가져오도록 머리글에 대시보드 코드를 가져온다.
  2. Palette 보기에서 Text 필드를 보고서의 머리글 영역으로 끌어온다.
  3. Listing 13에 표시된 코드를 텍스트 필드에 삽입한다.

Listing 13. 보고서의 작업 항목 팝업 보기에 대한 코드
<code style="display:none">
<script>


dojo.require("jazz.app.ResourceLink");
dojo.require("jazz.app.proxy");
dojo.require("jazz.app.auth");

this.inherited(arguments);
this._skipOAuth = true;

</script>
</code>

  1. 보고서의 테이블에 있는 데이터 셀에서 또다른 Text 필드를 추가한다. 작업 항목의 ID 및 요약과 같은 데이터 세트의 정보를 표시하는 일반적인 데이터 필드 대신 이 텍스트 필드를 사용한다.
  2. 이 텍스트 필드에 Listing 14의 다음 코드를 입력한다.

Listing 14. 보고서의 작업 항목 팝업에 대한 코드
<a target="_self" class="jazz-app-ResourceLink" 
id="jazz_app_ResourceLink_<VALUE-OF>row["WI_ID"]</VALUE-OF>" 
href="/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/
<VALUE-OF>row["WI_ID"]</VALUE-OF>">
<VALUE-OF>row["SUMMARY"]</VALUE-OF></a>

<code style="display:none">
<script>
titleLink = 
document.getElementById("jazz_app_ResourceLink_<VALUE-OF>row["WI_ID"]</VALUE-OF>");
new jazz.app.ResourceLink({retainLinkText: true},titleLink);
if (titleLink.lastChild.nodeName == "IMG"){
titleLink.removeChild(titleLink.lastChild);
};
</script>
</code>

이 코드는 <a> 태그 안에 작업 항목의 링크를 작성하는 것부터 시작한다. 이 코드는 특정 ID를 <a> 태그에 지정한다. 여기서는 작업 항목 번호를 jazz_app_ResourceLink_ 문자열에 추가하여 고유 ID를 작성한다. 참고: 이 ID는 전체 보고서에 대해 고유해야 한다. 보고서에 작업 항목이 두 번 이상 표시되는 경우에는 어떻게 해서든 ID를 구별해야 한다.

<code> 태그 내부에 있는 코드의 두 번째 섹션은 고유 ID에 따라 해당 <a> 태그를 검색한다. 그런 다음 팝업을 표시하는 JavaScript jazz.app.ResourceLink 오브젝트를 작성하여 태그에 링크한다. 마지막으로 보고서의 <a> 태그 출력에 대해 정리를 수행하는 if문이 있다.

대시보드의 링크 및 팝업과 비슷한 결과가 표시된다.


기타 스냅샷 사용하기

공통 스냅샷과 작업 항목 스냅샷은 Rational Team Concert에서 보고서에 사용되는 대부분의 정보를 제공하기 때문에 이 기사에서는 이러한 스냅샷에 대해 집중적으로 다루었다. 하지만 기타 스냅샷은 저장소의 기타 영역에 대한 정보를 제공할 수 있다. 스냅샷과 스냅샷에 있는 테이블에 대한 자세한 정보는 Rational Team Concert wiki(링크는 참고자료 섹션에서 확인 가능)를 참조한다.


표 1. 저장소의 기타 스냅샷
스냅샷설명
APT_SNAPSHOT이 스냅샷은 사용자의 지정에 대한 정보와 특정 작업 부분에 지정된 시간의 비율에 대한 정보를 제공한다.
BUILD_SNAPSHOT이 스냅샷의 테이블에는 서버에서의 빌드와 테스트에 대한 정보가 포함되어 있다.
LIVE_SNAPSHOT이 스냅샷은 저장소에 있는 정보에 대한 직접적인 액세스를 제공한다. 이 정보는 사람이 읽을 수 있는 레이블이 아닌 완전한 클래스 이름을 사용하여 색인화되어 있기 때문에 이 정보는 더 복잡하지만 기타 스냅샷에서 필요한 정보를 찾을 수 없는 경우에는 여기서 해당 정보를 찾을 수 있다.
REPOSITORY_SNAPSHOT이 스냅샷은 대시보드, 빌드 결과 및 변경사항 세트를 포함한 저장소의 전체 컨텐츠에 대한 정보를 기록한다. 이 정보는 대부분 기타 스냅샷에서 확인할 수 있다.
SCM_SNAPSHOT이 스냅샷의 테이블에는 변경사항 세트, 컴포넌트 및 스트림과 같은 소스 제어 저장소에 대한 정보가 포함되어 있다.

감사의 말

이 기사를 위해 조언을 해 주고 jazz.net 및 jazz.net 포럼에서 매우 유용한 정보를 제공해 준 Rational Team Concert 개발자 James Moody와 Rafik Jaouani에게 감사의 마음을 전한다.


참고자료

교육

제품 및 기술 얻기

토론

필자소개

Author photo

Tim McMackin is a technical writer for IBM Rational software in Raleigh, North Carolina. He has a background in writing for advertising technical products and has been with IBM since 2004.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=Rational
ArticleID=503624
ArticleTitle=BIRT와 Rational Team Concert를 사용하여 사용자 정의 보고서 작성하기: Part 3. 고급 보고 기술
publish-date=06152010
author1-email=tmcmack@us.ibm.com
author1-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.