메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

[fleXive] 소개 – Java EE 5 웹 개발에 대한 보완적인 접근(3)

한빛미디어

|

2008-06-13

|

by HANBIT

6,854

제공 : 한빛 네트워크
저자 : Markus Plesser and Daniel Lichtenberger
역자 : 정규현
원문 : Introducing [fleXive] - A Complementary Approach to Java EE 5 Web Development

JSF의 컨텐츠 인스턴스에 접근

제품 상세 페이지(web/productDetails.xhtml)에서, 선택된 제품 인스턴스(#{productBean.pk}에 저장된)가 태그를 이용해서 모든 필드들을 보여주고, 제조업체 페이지에 대한 JSF링크를 제공한다. 컨텐츠 인스턴스 값은 JSF-EL 변수를 통해서 직접 접근 가능하다. 예를 들어, #{product.name}는 현재 보여지는 제품의 이름 속성을 돌려준다.

    

#{product.name}

[...]
제품의 제조업체는 참조 속성이다. 예를 들어 그것은 또 다른 컨텐츠 인스턴스를 참조한다. 제조업체 값을 읽어 들이기 위해서는 #{product.manufacturer$.name}와 같은 뒤에 따라오는 변수를 사용하는 제조업체에 접근한다. 더불어 제조업체 페이지를 열기 위해 명령어 링크를 만든다. #{product.manufacturer.defaultTranslation} 변수가 프라이머리 키인 제조업체 참조의 기본 페이지 내용을 돌려준다.

  #{product.manufacturer$.name}
  


[그림 6] 제품 상세 페이지(속성과 함께)

고객정보와 함께 저장된 이미지들을 보여주는 것은 쉬운 일이다. 제품 이미지 속성은 바이너리에 대한 참조(메모리 낭비가 크기 때문에 바이너리 자체는 아니다)를 가지고 있고, 그것은 태그를 이용해서 이미지로 보여질 수 있다. $list 접미변수는 1이상의 다수의 그룹 또는 속성값에 대한 반복자를 제공한다.

[역자주] 반복자(Iterator) : 자료구조 유형 가운데 하나. 저장되어 있는 데이터들을 참조하는 포인터로서 기능한다. 반복이라는 표현이 포함된 것은, 일반적으로 다수의 데이터 저장 혹은 읽기에 있어서 일정방향으로 계속해서 데이터를 참조하기 때문에 붙여진 이름이다.

  

제품 페이지의 마지막 기능은 제품의 변수 그룹을 다루는 것이다. 각각의 제품 변수 (예를 들어 제품과 연계된 색상)의 경우에, 제품 번호, 색상, 최신 제품 번호와 링크를 보여준다. (전체 제품 페이지에서, 변수의 이미지는 일반 제품 이미지에 추가된다.)

  
  • #{variant.color} (#{variant.articleNumber})

  • [그림 7] 제조업체 상세 페이지

    실행

    이미 애플리케이션 서버를 설치했고, 설치 가이드에 기술된 데이터 소스들을 정의 했다면, 프로젝트는 컴파일 되고 전개될 수 있다. 이렇게 하기 위해 products디렉토리에서 다음을 실행한다.
    ant
    
    계획된대로 일이 끝나면, dist 서브디렉토리에 products.ear이라는 파일이 생길 것이고, 애플리케이션 서버에 설치할 준비가 끝난다.

    컨텐츠 버전, 워크플로우, 그리고 Live 버전

    [fleXive]의 컨텐츠는 버전관리가 된다: 컨텐츠가 수정되면, 사용자는 기존의 것을 수정하는 대신에 새 버전을 만들 것인지에 대해서 선택할 수 있다. 워크플로우는 애플리케이션 사용자들의 조직 구조를 기술하는 방법을 제공한다. 예를 들어 신문은 편집, 검토, 검토완료와 같은 워크플로우 단계로 기술될 수 있다. 다른 사용자들은 각각 다른 책임을 가진다. 예를 들어 기사 작성자는 검토 중이거나 검토가 완료된 기사를 변경할 수 없으며, 검토자는 편집중인 기사를 수정할 수 없다.

    버전상태가 Live인 경우 애플리케이션 사용자가 해당 컨텐츠를 볼 수 있다는 것을 의미한다. 가장 최근 버전일 수도 있지만, 컨텐츠 수정으로 인해, 과거의 버전을 볼 수도 있다. 컨텐츠의 버전을 Live로 하기 위해서는, 워크플로우 스텝을 Live로 설정해야 한다. 특정 컨텐츠 인스턴스는 오직 하나의 워크플로우 스텝만을 가질 수 있으므로, 모든 컨텐츠는 하나를 초과하는 Live버전을 가질 수는 없다.

    제품 애플리케이션에서 이 개념이 작동하는 것을 볼 수 있다: 백엔드에서 현존하는 제품을 수정하는 경우, 워크플로우 스텝은 Live에서 Edit로 변경되고, 그리고 나서 프론트엔드 애플리케이션에서는 안보이게 된다. 편집 스텝에서 새로운 버전을 만드는 경우, 수정을 한 다음, 새로운 버전이 Live상태가 된 다음에야 프론트엔드 데이터에 반영이 된다.

    정리하며

    이 기사는 [fleXive]의 복합적인 데이터 구조들, 다국어지원, 버전관리와 워크플로우와 같은 주요기능을 보여주기 위해 만들어졌다. 아직 설명되지 않은 많은 기능들이 있다. 예를 들어 고도로 최적화된 컨텐츠 트리, 트리 노드에 대한 일반적이고 계층적인 특성, ACL(액세스 제어 목록)과 유저그룹에 기반한 개인별 속성에 따른 세세하게 정의가능한 보안기능, 스크립팅과 이미지로부터 EXIF를 추출하거나 PDF파일들에 대한 풀텍스트 인덱싱과 같은 문서 관리 기능들과 같은 것들이다. 이러한 기능들에 대한 보다 상세한 정보와 문서들을 보고자 한다면, http://www.flexive.org를 방문해주기 바란다. 특히 광범휘한 참고문서가 도움이 될 것이다.

    참조할 수 있는 자료들
    저자 Markus Plesser는 오스트리아 비엔나에 위치한 소프트웨어 개발사인 UCS(Unique Computing Solutions)의 CTO이자 소프트웨어 아키텍트이다. [fleXive]의 수석 개발자가운데 한명이며, 퍼시스턴스 엔진에 대한 책임을 지고 있는 사람가운데 하나이다. 여러가지 웹 기술들에 관심을 가지고 있으나, EJB나 Spring같은 서버 사이드 애플리케이션에 특히 관심을 가지고 있다.

    저자 Daniel Lichtenberger 는 오스트리아 비엔나에 위치한 소프트웨어 개발사인 UCS(Unique Computing Solutions)의 소프트웨어 엔지니어이다. Java EE 플랫폼기반의 기업용 소프트웨어를 개발하며, 웹 기술들과 에자일 개발에 깊은 관심을 가지고 있다.
    TAG :
    댓글 입력
    자료실