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)에서 보고서의 단일 테이블에 매개변수를 전달하는 방법을 살펴봤다. 보고서에 대해 글로벌 매개변수를 설정한 후 해당 매개변수를 원하는 수만큼 많은 데이터 세트에 사용할 수도 있다. 예를 들어, 관심 있는 영역만 표시하도록 팀 영역을 필터링할 수 있다. 이 경우에는 항목을 선택할 모든 팀 영역을 표시하는 새 데이터 세트를 작성한 후 해당 데이터 세트를 보고서 사용자에게 목록 상자로 노출한다. 그런 다음 다른 데이터 세트는 목록 상자에서 보고서 사용자가 선택하는 팀 영역으로만 제한할 수 있다.
- 공통 데이터 소스 TEAM_AREA 테이블에서
Team area옵션이라는 데이터 세트를 작성한다. - TEAM_AREA_NAME 및 TEAM_AREA_ITEMID 열을 출력으로 선택하고 TEAM_AREA_ARCHIVED를 매개변수로 선택한다.
그림 1. 팀 영역의 데이터 세트 작성하기
- 활성 팀 영역만 이 데이터 세트에 포함되도록 아카이브된 매개변수를 false로 설정한다.
- 해당 데이터 세트를 가능한 값으로 사용하여 보고서에 대한 매개변수를 작성한다.
- Data Explorer 보기에서 Report Parameters를 마우스 오른쪽 단추로 클릭한 후 New Parameter를 클릭한다.
- Edit Parameter 창에서 매개변수 이름을 Selected team areas로 지정한다.
- Prompt Text 필드에
Team areas를 입력한다. - Data type 목록에서 String을 선택한다.
- Display type 목록에서 List Box를 선택한다.
- Display As 아래에서 Hidden 선택란을 선택 해제하고 Is Required 선택란을 체크한다.
- List of values 아래에서 Dynamic을 클릭한다. 이 옵션을 사용하면 값을 모두 수동으로 입력하는 대신 값의 데이터 세트를 사용할 수 있다.
- Allow Multiple Values 선택란을 선택 해제한다. Rational Team Concert는 이 선택란을 인식하지 않는다. Rational Team Concert는 매개변수의 다중 값을 목록 상자로 표시하고 매개변수의 단일 값을 콤보 상자로 표시할 수 있다.
- Data set 목록에서 Team area options 데이터 세트를 선택한다.
- Select value column 목록에서 TEAM_AREA_ITEMID를 선택한다. 이 열은 팀 영역의 고유 ID이다.
- Select display text 목록에서 TEAM_AREA_NAME을 선택한다. 이 열은 매개변수의 레이블로 사용될 팀 영역의 이름이다.
- Sort by 목록에서 TEAM_AREA_NAME을 선택한다.
- OK를 클릭한다.
그림 2. 매개변수 작성하기
보고서를 서버에 업로드하여 실행하면 하나 이상의 팀 영역을 선택할 수 있는 목록 상자가 표시된다.
관심 있는 팀 영역을 선택한 후 Run을 클릭하면 된다. 하지만 매개변수가 아직 바인드되지 않았기 때문에 매개변수는 아직 데이터 세트를 제한하지 않는다.
그림 3. 런타임 시 보고서의 매개변수 값 지정하기
- 매개변수를 팀 영역 데이터 세트에 바인드한다.
그림 4. 매개변수에 데이터 세트 필드 바인드하기
- 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 오브젝트를 작성하는 것이다. 그런 다음 작업 항목의 심각도를 검색해야 할 때는 언제나 해당 오브젝트를 참조할 수 있다.
다음 단계에서는 이 기술의 기본사항에 대해 다룬다.
- 위의 심각도 열거가 포함된 예제와 같은 열거 값의 데이터 세트를 작성한다. Preview 탭을 사용하는 경우에는 관심 있는 열거에 대한 데이터가 표시되는지 확인한다.
이 데이터 세트를 보고서에 직접 표시하기를 원하지 않더라도 해당 데이터 세트를 보고서에 추가해야 한다. 그렇지 않으면 보고서는 데이터 세트를 데이터로 채우지 않는다. 다음 단계에서는 보고서의 데이터 세트에 숨겨진 참조를 추가한다.
- Palette 보기에서 동적 텍스트 필드를 보고서의 위쪽으로 끌어온다.
- 표현식 편집기에 다음 표현식을 입력한다.
Total.count(); - OK를 클릭한다.
- 새 동적 텍스트 필드를 선택한 후 Property Editor 보기에서 Binding 탭을 연다.
- Data Set 목록에서 데이터 세트를 선택한다.
- Properties 탭으로 이동하여 Visibility 섹션을 클릭한다.
- Hide Element 선택란을 체크한 후 For all outputs 단일 선택 단추를 선택한다.
이제 보고서가 실행되면 데이터 세트가 채워지지만 원시 데이터는 보고서에 직접 표시되지 않는다.
- Data Explorer 보기에서 데이터 세트를 선택한다.
- 보고서 편집기에서 Script 탭으로 이동한다.
이 탭은 데이터 세트를 제어하는 사용자 정의 스크립트를 표시한다. BIRT 스크립트에 대한 전체 안내는 이 기사의 범위를 벗어나지만 간단하게 요약하면 각 데이터 세트에는 데이터 세트 라이프사이클의 특정 지점에서 실행되는 여러 이벤트 핸들러가 있을 수 있다. 이 경우에는 데이터 세트가 열릴 때 JavaScript 오브젝트를 작성한 후 데이터 세트의 각 행에 대한 해당 오브젝트에 정보를 추가해야 한다.
- 편집기의 위쪽에 있는 Script 목록에서 beforeOpen 이벤트를 선택한다. 이 이벤트는 데이터 세트가 데이터로 채워지기 전에 한 번만 발생한다.
- 다음 코드를 편집기에 입력한다.
severity = new Object(); - Script 목록에서 onFetch를 선택한다. 이 이벤트는 데이터 세트의 각 행에 대해 한 번 발생한다.
- 다음 코드를 onFetch 이벤트 핸들러로 입력한다.
severity[row["LITERAL_ID"]] = row["LITERAL_NAME"];
이 코드는 링크된 이름 및 값 쌍을 오브젝트에 추가한다. 데이터 세트가 완전히 채워지고 오브젝트가 작성되면 해당 오브젝트를 사용하여 열거에 있는 각 값의 레이블을 검색할 수 있다.
예를 들어, severity[1] 코드를 삽입하면 "Unassigned"가 생성된다.
이제 다른 데이터 세트에서 오브젝트를 사용할 수 있다. 예를 들어, 작업 항목의 데이터 세트가 있는 경우 심각도를 표시하는 계산 결과 열을 추가할 수 있다.
- 작업 항목을 나열하는 데이터 세트를 위해 데이터 세트 편집기를 연다.
- Fact Information 탭에서 WI_SEVERITY 탭이 출력 열로 선택되어 있는지 확인한다.
- Computed Columns 탭에서 유형이 String이고 이름이 Severity Name과 같은 새로운 계산 결과 열을 추가한다.
Expression 필드에 다음 코드를 입력한다. severity[row["WI_SEVERITY"]]
그림 5. 계산 결과 열 작성하기
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가 일치하는 상태 데이터 세트에 있는 단일 행에 일치시킨다.
- STATE_NAME 열을 포함하여 작업 항목을 나열하는 데이터 세트를 작성한다.
- 프로젝트 영역 이름을 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 |
- STATE 테이블에 있는 상태를 나열하는 데이터 세트를 작성한다.
- Data Explorer 보기에서 Data Sets를 마우스 오른쪽 단추로 클릭한 후 New Joint Data Set를 클릭한다.
- New Joint Data Set 창에서 왼쪽에 있는 작업 항목 데이터 세트를 선택한 후 데이터 세트 이름 아래에서 State ID 열을 선택한다.
- 오른쪽에서 상태 데이터 세트를 선택한 후 STATE 열을 선택한다.
- Join Types 아래에서 Left Outer Join을 클릭한다.
-
Join Work Items to States와 같은 이름을 데이터 세트에 지정한다.
그림 6. 데이터 세트 결합하기
- 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 열을 포함하고 있으며 이 열은 일치하는 특성을 가진 작업 항목의 합계를 보여 준다. 예를 들어, 저장소에 있는 작업 항목의 총 수를 알려고 한다고 가정한다. 이 경우에는 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
다른 테이블은 모두 데이터 마트의 데이터를 표시한다.
데이터 마트의 작업 항목에 대한 히스토리 정보를 표시하는 WORKITEMS 스냅샷의 일부 테이블은 다음과 같다.
이 테이블(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 매개변수(작업 항목의 현재 소유자)로 전달하면 결과 데이터 세트에는 작업 항목이 첫 번째 사용자에서 두 번째 사용자로 전송된 모든 횟수가 표시된다.
이 테이블(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. 히스토리 데이터 세트의 시간 범위 설정하기
이러한 BIRT 오브젝트는 표현식 편집기의 BIRT Functions 아래에서 확인할 수 있다.
그림 8. BIRT today() 함수 선택하기
이러한 오브젝트에 대한 참조 정보는 Eclipse BIRT 참조(참고자료 섹션 참조)에서 확인할 수 있다.
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 필드가 아니어도 됨)를 선택하여 해당 작업 항목에 링크할 수 있다.
- 작업 항목의 테이블을 보고서에 추가한다.
- 테이블에서 데이터 필드(예: SUMMARY 필드)를 선택한다.
- Property Editor 보기에서 Hyperlink 탭을 클릭한다.
- Link to 필드 옆의 줄임표(세 개의 점) ... 단추를 클릭한다.
- Hyperlink Options 창에서 URI를 클릭하고 Location 필드에 다음 코드를 삽입한다.
'/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/'+row["WI_ID"] - OK를 클릭한다.
Rational Team Concert 대시보드에서 작업 항목의 링크 위로 커서를 이동하면 해당 작업 항목에 대한 정보가 포함된 팝업 창이 나타난다. 대시보드에서 해당 코드를 차용하여 보고서에서 작업 항목에 대한 참조에 팝업이 나타나도록 할 수 있다. 필자는 이러한 팝업을 작업 및 대시보드에서 사용할 수 없었고(있어서는 안되는 일부 메시지가 팝업에 표시됨) 이러한 팝업은 Rational Team Concert에서 공식적으로 지원하는 것이 아니지만 기본적인 용도로는 충분한 역할을 한다.
그림 9. 대시보드의 작업 항목 팝업 보기
- 보고서 편집기의 Master Page 탭을 클릭한다. Master Page의 맨 위와 맨 아래에는 각각 머리글과 바닥글 정보를 위한 섹션이 있다. 보고서로 코드를 한 번만 가져오도록 머리글에 대시보드 코드를 가져온다.
- Palette 보기에서 Text 필드를 보고서의 머리글 영역으로 끌어온다.
- 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>
|
- 보고서의 테이블에 있는 데이터 셀에서 또다른 Text 필드를 추가한다. 작업 항목의 ID 및 요약과 같은 데이터 세트의 정보를 표시하는 일반적인 데이터 필드 대신 이 텍스트 필드를 사용한다.
- 이 텍스트 필드에 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에게 감사의 마음을 전한다.
교육
- Eclipse BIRT 홈 페이지에서 BIRT에 대한 정보를 확인하고 BIRT 관련 도구를 다운로드하자.
- jazz.net wiki에는 Rational Team Concert 및 BIRT를 사용한 보고에 대한 페이지가 포함되어 있다.
- jazz.net YouTube 사이트에는 Rational Team Concert 사용에 대한 동영상이 포함되어 있다.
- IBM Rational Team Concert 기능과 장점에 대해 살펴보자.
- Rational Team Concert Information Center
- 다양한 기타 참고자료에 대한 링크가 포함된 Rational Team Concert에 관한 IBM developerWorks 페이지
- 웹 캐스트: Using Rational Team Concert in a globally distributed team
- 데모: 대시보드 및 보고서
- 팟캐스트: IBM Rational Team Concert and Jazz
- IBM Rational Software Delivery Platform에서 병렬 개발 및 지역적으로 분산된 팀을 위한 협업 도구와 아키텍처 관리, 자산 관리, 변경 및 릴리스 관리, 통합 요구사항 관리, 프로세스 및 포트폴리오 관리, 품질 관리를 위한 특수 소프트웨어를 포함한 기타 애플리케이션에 대해 살펴보자.
- developerWorks의 Rational 소프트웨어 영역에서 Rational Software Delivery Platform 제품과 관련된 기술 자료와 베스트 프랙티스를 볼 수 있다.
- 컴퓨터 기반, 웹 기반 및 강사 지도 Rational 온라인 강의를 살펴보자. 초급에서 고급까지의 다양한 강의를 통해 Rational 도구에 대한
지식을 쌓고 기술을 연마하자. 이 카탈로그의 강의는 컴퓨터 기반 교육 또는 웹 기반 교육을 통해 구입할 수 있다. 일부 "시작하기"
강의의 경우 무료로 제공된다.
- 1주일 동안의 developerWorks 튜토리얼, 기사, 다운로드, 커뮤니티 활동, 웹 캐스트,
이벤트 등에 대한 소식을 전하는 IBM
developerWorks 뉴스레터를 구독하자.
제품 및 기술 얻기
- IBM Rational Team Concert 클라이언트 및 서버의 평가판을 다운로드하자.
토론
- Jazz.net 토론 포럼에 참여하자.
- developerWorks 포럼 & 블로그를 통해 developerWorks 커뮤니티에 참여하자.
- Rational Team Concert와 관련되지 않은 활발한 BIRT 포럼은 birt-exchange.org를 참조한다.
