prev 2014. 12 next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
 
 

포인트 랭킹 Top 9

  • 1위. 김동영b
    23570점
  • 2위. 아름프로
    6846점
  • 3위. netfer
    1289점
  • 4위. 심플
    829점
  • 5위. 정의의소
    813점
  • 6위. 바이스
    627점
  • 7위. 달마다
    590점
  • 8위. 코디
    577점
  • 9위. 데로드
    448점

counter
 
 
 
 
 
  
 
출처 : http://jazz.net/library/article/495
필자 : Gary L. Mullen-Schultz, IBM

RTC는 바탕에서 째즈가 제공하는 강력한 프로세스 엔진을 내장하고 있습니다. 매우 강력한 기능 중의 하나는 기본 오퍼레이션의 행위를 커스마이징할 수 있는 겁니다. 예를 들어 RTC 2.0.0.2 iFix3에는 '작업 항목 저장'시에 사용할 수 있는 7가지의 서버 단의 사전 전제조건 행위 (모든 하위 해결, 필수 속성 등)를 팀/역할/반복 등에 강제할 수 있습니다.

함께 일했던 고객들은 operation advior라 불리는 커스텀 전제조건을 만들어야 하는 요건이 있었습니다. 만드는 것은 그렇게 쉽지는 않죠, 왜냐면 Jazz SDK와 이클립스 플러그인 구조를 알아야 하니까요. 커스텀 operation advisor를 성공적으로 만들기 위해 필요한 정보들은 있지만, 여러 웹사이트와 웹 페이지에 걸쳐 있습니다.

본 자료는, 시작부터 끝까지, RTC에 적용할 간단한 operation advsior를 어떻게 만드는 지를 설명합니다. 즉 "Hello World"라는 advisor를 "Save Work Item" 오퍼레이션에 후크를 걸고, 해당 작업 항목이 저장될 때 커스텀 조치가 실행되도록 할겁니다. 이 자료를 성공적으로 따라가다보면, 또 다른 operation advior (change set이 SCM에 전달될 때) 를 만드는 것도 상대적으로 쉽다게 생각될 겁니다. 또한 커스텀 코드의 또 다른 형태인 operation participant나 event handler로 만들 수 있을 겁니다.

시작해 볼까요!

다운로드 및 설치

주의: 저는 C:\RTC-SDK 를 설치 디렉토리 루트($INSTALLDIR)로 사용한 것을 가정해서 각 스텝을 기술합니다.

RTC 2.0.0.x 확장을 하고자 할때는, RTC 클라이언트, RTC SDK, 그리고 가능하다면 plain java client library를 설치합니다.

  1. Jazz.net에서 최신 RTC 2.0.0 x 다운로드를 찾은 후 All Downloads 페이지로 이동합니다..

  2. 어떤 에디션도 다운로드 받을 수 있습니다. zip 파일을 받으세요, 그러면 설치할 위치를 바꿀 수 있습니다.

  3. 설치할 PC에 맞는 아래의 zip 파일들을 다운로드 하세요:
    1. Client for Eclipse IDE.
    2. Plain Java Client Libraries.
    3. Rational Team Concert SDK (다운로드 페이지 아래쪽에 있습니다). RTC SDK 는 클라이언트, 서버, JUnit에 대한 바이너리와 소스를 포함하고 있습니다.
  4. 클라이언트 zip파일을 $INSTALLDIR 에 풉니다.

  5. RTC SDK zip 파일을 $INSTALLDIR/jazz/client/eclipse에 풉니다. 주의: 이 zip 파일에는 250자 이상의 경로를 포함하고 있어서 Windows에서 몇몇 압축프로그램에서 문제가 발생할 수 있습니다. 문제가 없는 압축 프로그램으로는 7Zip도 있습니다.

  6. plain java client library zip 파일을 새로 작성한 디렉토리 $INSTALLDIR/jazz/client/plainjava에 풉니다.

Target Platform 설정

(이클립스를 영문으로 띄우서 따라해 보실 분은 바로가기를 만든 후 속성창에서 C:\RTC-SDK\jazz\client\eclipse\eclipse.exe -nl en_US 를 추가해 줍니다.)

이제 이클립스 플러그 인 개발 환경을 설정합니다. Target platform은 자바 컴파일러가 작업할 플러그인과 소스를 접근할 수 있도록 하며, 당신의 개발 환경에서 SDK의 내용을 사용할 수 있도록 해 줍니다.

  1. 위의 스텝 1에서 설치한 이클립스 클라이언트 프로그램을 시작합니다. 저는 C:\RTC-SDK\jazz\client\eclipse\eclipse.exe 를 실행합니다. 대화상자가 뜨면 새로운 작업 공간을 지정합니다. 저는 C:\workspaces\HelloWorldAdvisor 에 작업 공간을 지정합니다.

  2. Plug-in Development Environment 환경 설정 대화 상자를 다음 순서로 엽니다 : Window -> Preferences -> Plug-in Development ->Target Platform. Location 필드에 $INSTALLDIR/jazz/client/eclipse/rtc-sdk/target/eclipse  선택하고 Reload 버튼을 누릅니다.  모든 jar 파일들이 선택되었는 지 확인하시고 Apply 버튼을 누른 후 OK 버튼을 누릅니다.

    Setting plug-in target platform

Plug-in 생서하기

  1. 새 플러그인을 만듭니다 : Plug-in Development->Plug-in Project.
    첫 페이지를 아래처럼 작성한 뒤 Next!
    Project name : HelloWorldAdvisor

    Creating plug-in project


  2. 두번째 페이지를 아래 처럼 작성하고 Finish
    Activator는 옵션으로 시작 및 종료 조치를 필요시 수행할 수 있도록 해줍니다.
    UI contribution 부분은 뺍니다.

    Creating plug-in project


  3. Plug-In Development 퍼스펙티드로 옮길 것인지 물어오면 그렇게 하십시요.

  4. MANIFEST.MF 파일이 자동적으로 열릴겁니다. Overview 탭에서 This plug-in is a singleton을 선택하고, 파일을 저장하세요.

  5. Dependencies 탭에서 Add 버튼을 누르고, 아래 네가지 플러그인을 추가합니다. 모두 추가한 뒤, 파일을 저장하세요.
    1. com.ibm.team.process.common
    2. com.ibm.team.process.service
    3. com.ibm.team.workitem.common
    4. com.ibm.team.repository.common
  1. Dependencies 탭에서, Automated Management of Dependencies 섹션에 있는 Add... 버튼을 누르고, 나와있는 모든 플러그인을 추가한 후 OK.버튼을 누릅니다.  1~2분 작업이 완료되면 MANIFEST.MF 파일을 저장합니다.

  2. Extensions 탭에서, Add.버튼을 누르고 목록에서 com.ibm.team.process.service.operationAdvisors 를 선택하고  Finish.를 누릅니다.

  3. Extension Element Details 섹션 아래에 있는 정보입니다. operationId  항목은 만들려는 플러그인이 확장할 RTC operation을 나타냅니다. 클래스는 스텝 9에서 처리하기 위해 지우고, 아래와 같이 수정 후 파일을 저장합니다.

    Field

    Value

    id

    HelloWorldAdvisor.prohibitSave

    name

    Prohibit Save (Hello World Advisor)

    operationId

    com.ibm.team.workitem.operation.workItemSave

  4. class 링크를 클릭합니다. 아래 붉은 네모입니다.

    Extensions tab

  5. 우리가 만들 advisor용 구현 클래스를 생성할 대화상자가 나타납니다. 여기에는 구현해야 할 인터페이스(com.ibm.team.process.common.advice.runtime.IOperationAdvisor)가 여러분을 위해 이미 설정되어 있습니다. 클래스 명은HelloWorldProhibitSave 로, 패키지명은 helloworldadvisor 로 명명 후 Finish.를 누르세요.

    Creating new advisor class

  6. 방금 생성한 HelloWorldProhibitSave.java 파일이 자동으로 열립니다. 파일의 내용을 아래처럼 수정합니다.
    아래 코드는 'work item save operation' 을 항상 실패하게 하고  Team Advisor 뷰에 작업 항목 유형을 프린트해 줍니다.
    package helloworldadvisor;

    import org.eclipse.core.runtime.IProgressMonitor;

    import com.ibm.team.process.common.IProcessConfigurationElement;
    import com.ibm.team.process.common.advice.AdvisableOperation;
    import com.ibm.team.process.common.advice.IAdvisorInfo;
    import com.ibm.team.process.common.advice.IAdvisorInfoCollector;
    import com.ibm.team.process.common.advice.runtime.IOperationAdvisor;
    import com.ibm.team.repository.common.IAuditable;
    import com.ibm.team.repository.common.TeamRepositoryException;
    import com.ibm.team.workitem.common.ISaveParameter;
    import com.ibm.team.workitem.common.model.IWorkItem;

    public class HelloWorldProhibitSave implements IOperationAdvisor {
    public static final String PROBLEM_TYPE = " HelloWorldAdvisor.prohibitSave";

    public void run(AdvisableOperation operation,
    IProcessConfigurationElement advisorConfiguration,
    IAdvisorInfoCollector collector, IProgressMonitor monitor)
    throws TeamRepositoryException {

    Object data = operation.getOperationData();

    if (data instanceof ISaveParameter) {
    ISaveParameter param = (ISaveParameter) data;
    IAuditable auditable = param.getNewState();
    if (auditable instanceof IWorkItem) {
    IWorkItem sourceworkItem = (IWorkItem) auditable;

    IAdvisorInfo problem = collector.createProblemInfo(
    "Hello World!", "This work item is of type: "
    + sourceworkItem.getWorkItemType(),
    PROBLEM_TYPE);
    collector.addInfo(problem);
    }
    }
    }
    }
  7. 옵션입니다만 Activator.java 클래스가 시작 및 종료시 메세지를 출력하도록 할 수 있습니다.  예를 들어 start()
    메쏘드에 아래 라인을 추가해 봤습니다:
    System.out.println("Hello Activator World!!!!!!!!!!!!!!!!!!!!");

  8. MANIFEST.MF 파일과 새로 만든 Java 파일을 저장했는 지 다시 한번 확인해 주세요.

Plug-in 빌드하기

  1. Extensions 탭에서, 아래 붉은 네모 박스, 즉 Export deployable plug-ins and fragments 아이콘을 클릭해서 플러그 인을 빌드합니다. 빌드 결과를 위한 디렉토리를 지정하고 Finish를 누릅니다.  빌드 중 에러가 발생하면 log 파일이 zip 파일내에 생성됩니다..

    Building plug-in


  2. 아래 처럼 새로운 Feature Project을 생성합니다.
    Feature는 여러분의 플러그인을 패키지하며, 이클립스 형상 관리 인프라가 보다 잘 관리할 수 있도록 해줍니다.

    Creating feature project


  3. 첫 화면에서 아래 처럼 작성하고 Next >.를 누릅니다.
    Project name : HelloWorldAdvisorFeature

    Creating feature project


  4. 다음 화면에서.  HelloWorldAdvisor 플로그인을 찾아 선택하고 Finish.버튼을 누릅니다.

    Selecting plug-in used by feature project


  5. 아래처럼 새로운 Update Site Project 을 생성합니다.
    이클립스 update site는 여러 Feature를 하나로 패키징할 수 있게 하며, 설치, 업그레이드 및 제거를 관리할 수 있도록 해줍니다.

    Creating update project


  6. 첫 화면에서 아래처럼 작성하고 Finish.버튼을 누릅니다.
    Project name : HelloWorldAdvisorUpdate

    Creating update project


  7. HelloWorldAdvisorUpdate 프로젝트에 있는 site.xml 파일이 자동으로 열립니다. New Category 버튼을 클릭하고 Work Item Save Operations.에 대한  NameLabel 필드를 작성한 후 파일을 저장합니다.
    Name : HelloWorldAdvisor
    Lable : Hello World Advisor


  8. Add Feature 버튼을 누른 후, 첫글자 H 를 입력한 후 HelloWorldAdvisorFeature 를 선택한 후 OK.버튼을 누릅니다.
    파일을 저장합니다.

    Adding desired feature to update project


  9. Site Map 탭의 우축 상단에 있는, 아래의 붉은 네모 박스, 즉 Build All 아이콘을 선택합니다. 완료까지 1분 이상 소요될 수 있습니다.

    Building update project


  10. 만약 Build All 오퍼레이션이 실패하면, 실패 관련 보다 자세한 정보를 log 파일을 통해 볼 수 있다는 메시지 박스가 나타납니다.
    만약 성공했다면, 당신의 이클립스 작업 공간에서 완성된 플러그인을 찾을 수 있습니다.
    제 이클립스 작업공간명은
    C:\workspaces 아래에 있는 HelloWorldAdvisor 로 아래와 같습니다.:

    Directory structure of update project


Plug-in 설치하기

  1. 이클립스 작업공간에 있는 update site를 보다 안정적은 위치로 복사하도록 하겠습니다..
    1. $JAZZ-ROOT\server 디렉토리에 HelloWorldAdvisor-update-site 디렉토리를 만듭니다.
      여기서 $JAZZ-ROOT는 RTC 서버가 설치된 디렉토리 위치입니다.
    2. 이클립스에 HelloWorldAdvisorUpdate 프로젝트 콘텐츠를 위에서 만든 디렉토리로 export하도록 하겠습니다.
      먼저 해당 프로젝트 하위에 있는 것을 모두 선택한 후 우클릭하고 Export.를 선택합니다.
      아래 그림과 같습니다:

      Exporting update project

    3. Export 마법사에서  General -> File System.를 선택하고 Next >.를 누릅니다.
    4. To directory 필드에 step a에서 작성한 디렉토리를 입력합니다.
      입력을 마치면, Finish를 누릅니다.

      Selecting target directory of export


  2. RTC 서버를 시작합니다.

  3. $JAZZ-ROOT\server\conf\jazz\provision_profiles 디렉토리에 HelloWorldAdvisor.ini 라는 텍스트 파일을 만듭니다. $JAZZ-ROOT 는 RTC 서버가 설치된 디렉토리입니다.  HelloWorldAdvisor.ini 파일 내용을 아래와 같이 작성합니다:

url=file:../HelloWorldAdvisor-update-site
featureid=HelloWorldAdvisorFeature

url 값은 위에서 복사한 Update Site 디렉토리와 같아야 합니다.

참고: Feature를 제거할 려면,  $JAZZ-ROOT\server\conf\jazz\provision_profiles 디렉토리에서 그냥  .ini 파일을 제거하면 됩니다. 그리고 아래 스텝 4에 처럼 서버 리셋 요청을 시작한 후 RTC 서버를 중지하고 재시작합니다.

  1. RTC 서버가 provision_profiles 디렉토리에 있는 Feature를 다시 로드하도록 아래 URL를 사용하여 RTC 서버 리셋을 요청합니다. https://localhost:9443/jazz/admin/cmd/requestReset

    주의 : 로그인 화면에서 모든 권한을 가진 ID로 로그인하세요. 그리고 위의 URL를 입력 후 아래
    메세지가 나올 때까지 기다리세요.
    Jazz 서버는 다음에 다시 시작될 때 구성된 업데이트 사이트에서 다시 로드하고 설정하도록 플래그 설정되었습니다.
    (The Jazz Server has been flagged to reset and reload from the configured update-site when it is next restarted
    .)
  2. RTC 서버를 중지하고 재시작하세요. 어드민 페이지에 접근을 시도하세요 (https://localhost:9443/jazz/admin). 톰캣 표준 출력 창에 아래 붉은 네모 박스 내의 메세지와 유사한 메시지를 볼 수 있을 겁니다.:

    Standard Output from Tomcat

    첫번째 네모박스는 Feature들이 재로드됨을 보여주는 것이고,
    (
    $JAZZ-ROOT\server\tomcat\work\Catalina\localhost\jazz\eclipse 디렉토리를 삭제!)
    두번째 네모박스는 당신이 작성한 Feature가 성공적으로 로드되어 초기화되었음을 보여줍니다.

주의: 플러그인을 수정할 때마다, 새 플러그인을 로드하기 위해 아래와 같은 스텝을 수행해야 합니다:

  1. 스텝 23에서 처럼 리셋 URL를 수행합니다.
  2. RTC 서버를 중지합니다..
  3. 스텝 19에서 처럼 HelloWorldAdvisorUpdate 프로젝트에 대한  Build All 오퍼레이션을 수행합니다.
  4. RTC 서버를 재시작합니다.

Plug-in  구성 및 테스트

  1. RTC 이클립스 클라이언트를 띄우고, HelloWorldAdvisor 라는 프로젝트 영역을 만듭니다. 프로세스 템플릿은 원하는 것을 선택하세요.

  2. 새 프로젝트 영역 편집기가 자동으로 열리면, Process Configuration 탭으로 옮깁니다.

  3. Team Configuration을 열고  Operation Behavior를 선택합니다.  오퍼레이션 목록에서 아래쪽에 있는 Save Work Item (server)를 선택합니다..

  4. Save Work Item (server) 행의 Everyone (default) 칼럼을 선택합니다. Preconditions and follow-up actions are configured for this operation 체크 박스가 체크되도록 하세요.

  5. Preconditions 옆에 있는 Add 버튼을 눌러서 아래처럼 당신이 작성한 항목이 나타나는 지 확인하세요:

    Adding new advisor to project


  6. Prohibit Save (Hello World Advisor) 를 선택하고 OK버튼을 누릅니다. 이제 Apply changes를 클릭하고 Save 버튼을 누릅니다.

  7. 작업 항목 하나를 열어봅니다. ( 뷰에 있는 Work Items -> Shared Queries -> Predefined 에서  Recently created 쿼리를 실행하면 기존 작업 항목을 열어 볼 수 있습니다).

  8. SeverityNormal 에서 Major 로 바꾸고  Save 버튼을 누를 경우의 예입니다. 아래처럼 붉은 네모 박스의 정보를 볼 수 있습니다.:

    Your operation advisor in action

여기까지 입니다! 여러분은 성공적으로, 새로운 RTC operation advisor를 생성하고, 배포하고, 구성하고, 테스트했습니다.


조회 수 :
6890
등록일 :
2010.10.17
21:17:30 (*.148.64.111)
엮인글 :
http://jazzlab.net/jazz/notes/13276/bc8/trackback
게시글 주소 :
http://jazzlab.net/jazz/13276
List of Articles
번호 제목 글쓴이 날짜 조회 수
등록된 글이 없습니다.