🏛️ 홍익인간CMS 개발자 매뉴얼

Version 202506 | Updated 2025-06-12
🌐 언어 선택: 🇰🇷 한국어 🇲🇳 Монгол 🇺🇸 English

6. 🔧 확장 및 커스터마이징

6.1 개발 프로세스

홍익인간CMS를 기반으로 한 개발 프로세스는 다음과 같은 단계로 구성됩니다.

6.1.1 개발 단계

홍익인간CMS를 활용한 개발은 다음과 같은 프로세스를 따릅니다:

📋 요구사항 분석

  • 기능 요구사항 정의
  • 비기능 요구사항 정의
  • 시스템 범위 설정

🏗️ 설계 및 아키텍처

  • 데이터베이스 설계
  • 화면 설계
  • 인터페이스 설계
  • 아키텍처 설계

💻 구현 및 코딩

  • 기능 구현
  • 단위 테스트
  • 코드 리뷰

🧪 테스트 및 디버깅

  • 통합 테스트
  • 시스템 테스트
  • 성능 테스트
  • 버그 수정

6.1.2 전자정부 표준프레임워크 호환성 유지 개발

홍익인간CMS는 전자정부 표준프레임워크를 기반으로 하므로, 개발 시 다음과 같은 사항을 준수해야 합니다:

🏛️표준 아키텍처 준수

  • MVC 패턴 준수
  • 계층 간 명확한 분리
  • 인터페이스 기반 설계

🛠️표준 개발 환경 활용

  • 전자정부 표준프레임워크 개발환경 활용
  • 표준 라이브러리 활용

📝표준 코딩 규칙 준수

  • 네이밍 규칙 준수
  • 주석 규칙 준수
  • 코드 포맷팅 규칙 준수

6.1.3 개발 환경 구성

홍익인간CMS 개발 환경은 다음과 같이 구성됩니다:

🌐웹 프로젝트 구조

  • 웹 프로젝트는 [WEB] 프로젝트에 개발
  • 백엔드 관리는 [BO] 프로젝트에 구현하는 이중 구조

📂형상관리

  • SVN, GIT 등의 형상관리 도구 활용
  • 버전 관리 및 변경 이력 관리

🚀빌드 및 배포

  • Maven을 활용한 빌드
  • Jenkins 등을 활용한 CI/CD 구성 가능

6.2 프로젝트 구성

홍익인간CMS는 다음과 같은 프로젝트 구조로 구성되어 있습니다.

6.2.1 프로젝트 구조

프로젝트 구조
humanframe (루트 프로젝트)
├── humanframe.core (라이브러리)
├── humanframe.backoffice (관리자 모듈)
└── humanframe.web (사용자 웹 모듈)

📦모듈 구성

  • humanframe.backoffice, humanframe.web: 부모 프로젝트인 humanframe의 하위 모듈
  • 각각 독립적인 웹 애플리케이션으로 배포 불가
  • 최종적으로 humanframe.web가 배포되는 형태

🔄형상(버전)관리

  • SVN, GIT 등 여러 버전 프로젝트를 연동하는 것이 좋음
  • 브랜치 전략을 통한 효율적인 개발 관리

⚙️MAVEN 설정

  • maven dependency 추가 또는 수정이 필요한 경우 부모 프로젝트의 pom.xml 파일을 수정
  • 각 모듈별 pom.xml에는 해당 모듈에 특화된 의존성만 추가

6.2.2 설정파일 위치 구성

홍익인간CMS의 주요 설정 파일은 다음 위치에 있습니다:

설정파일 위치 경로

주요 설정 파일

설정 파일 설명
context-datasource.xml 데이터베이스 연결 설정
context-mapper.xml MyBatis 매퍼 설정
context-properties.xml 시스템 속성 설정
context-scheduler.xml 스케줄러 설정
human-resource.xml 리소스 관련 설정

6.3 커스터마이징 방법

홍익인간CMS는 다양한 방법으로 커스터마이징이 가능합니다.

6.3.1 기본 설정 커스터마이징

⚙️프로퍼티 설정

  • context-properties.xml 파일에서 시스템 속성 변경
  • 환경별(local, dev, prd) 설정 분리

🗄️데이터베이스 설정

  • context-datasource.xml 파일에서 데이터베이스 연결 정보 변경
  • 다양한 DBMS 지원 (CUBRID, Oracle, MySQL, MS-SQL, Tibero)

스케줄러 설정

  • context-scheduler.xml 파일에서 스케줄러 작업 설정
  • Cron 표현식을 통한 실행 주기 설정

6.3.2 UI 커스터마이징

🎨테마 설정

  • /humanframe.web/src/main/webapp/humanframe/theme 디렉토리에서 테마 설정
  • CSS, JavaScript, 이미지 등 리소스 변경

📐레이아웃 설정

  • Tiles 설정 파일에서 레이아웃 변경
  • humanframe.web/src/main/webapp/WEB-INF/jsp/theme JSP 템플릿 수정

🧩컴포넌트 커스터마이징

  • 사용자 정의 태그 라이브러리 활용
  • JavaScript 컴포넌트 수정

6.3.3 기능 확장

🎮 컨트롤러 추가

  • 새로운 컨트롤러 클래스 작성
  • 기존 컨트롤러 확장

⚙️ 서비스 추가

  • 새로운 서비스 인터페이스 및 구현체 작성
  • 기존 서비스 확장

🗄️ DAO 추가

  • 새로운 DAO 클래스 작성
  • 기존 DAO 확장

🗺️ 매퍼 추가

  • 새로운 MyBatis 매퍼 XML 파일 작성
  • 기존 매퍼 확장

6.4 샘플 프로그램 개발

홍익인간CMS는 개발자가 참고할 수 있는 샘플 프로그램을 제공합니다.

6.4.1 샘플 프로그램 구성

📁샘플 프로그램 위치

  • 샘플 프로그램은 관리자/사용자로 구분되어 각각 제공됨
  • 샘플 프로그램이 구현되는 자바 프로젝트는 [WEB-humanframe.web] 프로젝트임
  • 관리자용 소스는 "admin" 폴더에 위치
  • JSP파일은 관리자 사용자 각각 "fnct/sample" 폴더에 위치

샘플 프로그램 소스 위치

구분 경로
JAVA소스 /humanframe.web/src/main/java/humanframe/web/
Mapper경로 /humanframe.web/src/main/resources/humanframe/sqlmap/mappers
JSP경로 /humanframe.web/src/main/webapp/WEB-INF/jsp

6.4.2 샘플 프로그램 개발 방법

🎮 컨트롤러 작성

  • SampleController 클래스를 참고하여 새로운 컨트롤러 작성
  • @Controller 어노테이션 및 @RequestMapping 설정

⚙️ 서비스 작성

  • SampleService 인터페이스 및 SampleServiceImpl 클래스를 참고하여 새로운 서비스 작성
  • @Service 어노테이션 설정

🗄️ DAO 작성

  • SampleDAO 클래스를 참고하여 새로운 DAO 작성
  • @Repository 어노테이션 설정

📦 VO 작성

  • SampleVO 클래스를 참고하여 새로운 VO 작성
  • Getter/Setter 메소드 구현

🗺️ 매퍼 작성

  • human-fnct-sample.xml 파일을 참고하여 새로운 매퍼 작성
  • SQL 쿼리 작성

🖼️ JSP 작성

  • 샘플 JSP 파일을 참고하여 새로운 JSP 작성
  • JSTL, EL, 사용자 정의 태그 활용

6.4.3 샘플 프로그램 예시

컨트롤러 예시 (SampleController)

[실제 코드] humanframe.web.controller.front.SampleController

@Controller
@RequestMapping("/fnct/sample")
public class SampleController extends HumanAbstractController {

    @Resource(name="sampleService")
    private SampleService sampleService;

    @Resource(name="fileService")
    private FileService fileService;

    @RequestMapping(value={"index","list"})
    public String list(
            HttpSession session
            , HttpServletRequest request
            , Model model)  throws Exception {
        SiteVO curSiteVO = (SiteVO)request.getAttribute("curSiteVO");

        HumanListVO listVO = new HumanListVO(request);
        listVO = sampleService.sampleListVO(listVO);

        model.addAttribute("useAtCode", CodeMap.USE_AT);
        model.addAttribute("listVO", listVO);

        return "/front/"+ curSiteVO.getSiteSkn() + "/fnct/sample/list";
    }

    @RequestMapping(value={"form"})
    public String form(
            SampleVO sampleVO
            , @RequestParam Map<String,Object> reqMap
            , HttpServletRequest request
            , Model model) throws Exception{

        //log.debug("sampleVO: " + sampleVO.toString());
        SiteVO curSiteVO = (SiteVO)request.getAttribute("curSiteVO");
        SiteMenuVO curMenuVO = (SiteMenuVO)request.getAttribute("curMenuVO");
        String currUri = curMenuVO.getMenuUri();

        int sampleNo = EgovStringUtil.string2integer((String) reqMap.get("sampleNo"));

        sampleVO.setSiteNo(curSiteVO.getSiteNo());
        sampleVO.setMenuNo(curMenuVO.getMenuNo());

        if(sampleNo == 0){
            sampleVO.setCrud(CRUDValues.CREATE);
        }else{
            sampleVO = sampleService.retrieveSample(sampleNo);
            sampleVO.setCrud(CRUDValues.UPDATE);
        }


        //return value
        model.addAttribute("useAtCode", CodeMap.USE_AT);

        model.addAttribute("sampleVO", sampleVO);
        model.addAttribute("param", reqMap);
        model.addAttribute("currUri", currUri);

        return "/front/"+ curSiteVO.getSiteSkn() + "/fnct/sample/form";
    }

    // 기타 메소드...
}

6.5 메뉴 및 프로그램 등록

홍익인간CMS에서 새로운 메뉴와 프로그램을 등록하는 방법은 다음과 같습니다.

6.5.1 관리자 메뉴 추가

📋 관리자 CMS관리 - 메뉴관리

  • 관리자 페이지에서 "CMS관리 > 메뉴관리" 메뉴 접근
  • "메뉴추가" 버튼을 클릭하여 새로운 메뉴 추가
  • 메뉴 정보(상위메뉴, 메뉴명, 프로그램관리 URL, 순서 등) 입력
  • 입력 정보 저장

🔐 메뉴 권한 설정

  • 메뉴 추가 후 "CMS관리 > 권한그룹관리" 메뉴 접근
  • 권한 그룹 선택 및 추가한 메뉴에 권한 부여
  • 권한 설정 저장

✅ 관리자 페이지 노출 확인

  • 메뉴 추가 후 로그아웃 및 재로그인 필요
  • 관리자 페이지에서 노출 여부 확인
  • 권한 설정에 따라 접근 가능 여부 확인

6.5.2 사용자 메뉴 추가

📋 관리자 프로그램 - 프로그램관리

  • 관리자 페이지에서 "프로그램 > 프로그램관리" 메뉴 접근
  • 새로운 프로그램 정보(서비스URL 등) 등록

🌐 사이트-메뉴관리

  • 관리자 페이지에서 "사이트 > 사이트관리" 메뉴 접근
  • "메뉴설정" 버튼을 클릭하여 사이트 메뉴 설정 페이지 접근
  • "메뉴추가" 버튼을 클릭하여 새로운 메뉴 추가
  • 메뉴 정보 입력 시 유형-기능프로그램 선택
  • "기능프로그램검색" 버튼을 클릭하여 프로그램 관리에서 등록한 프로그램 선택(체크시 자동 추가)
  • 입력 정보 저장

🚀 메뉴 배포

  • 메뉴 추가 후 "배포 > 배포 관리" 메뉴 접근
  • 목록에서 신규 생성한 메뉴 선택 및 "처리" 버튼을 클릭하여 배포 처리

✅ 사용자 페이지 노출 확인

  • 배포 처리 후 사용자 페이지에서 노출 여부 확인
  • 메뉴 노출 설정에 따라 노출 여부 확인

6.6 확장 모듈 개발

홍익인간CMS는 다양한 확장 모듈을 개발하여 기능을 확장할 수 있습니다.

6.6.1 게시판 확장

📋게시판 유형 추가

  • 기존 게시판 유형(Type 1~8)을 참고하여 새로운 유형 추가
  • 컨트롤러, 서비스, DAO, VO, 매퍼, JSP 등 작성

🎨게시판 스킨 추가

  • 기존 게시판 스킨을 참고하여 새로운 스킨 추가
  • CSS, JavaScript, JSP 등 작성

6.6.2 추가 프로그램 개발

🧩추가 프로그램 컴포넌트 작성

  • 추가 프로그램 컨트롤러, 서비스, DAO 등 작성
  • 추가 프로그램 JSP 템플릿 작성

📝추가 프로그램 등록

  • 관리자 페이지에서 추가 프로그램 등록