JCF3.0™ 공통모듈-프로그램 관리 가이드
From JCFWiKi
Copyright © 2007 Daewoo Information Systems Co., Ltd. |
목차 |
[편집] 개요
JCF3.0 공통모듈은 기본적으로 메뉴와 프로그램을 이원화하여 관리하도록 되어 있다. 메뉴와 프로그램이 일치하는 부분도 있지만 하나의 메뉴가 제공하는 화면에 2개 이상의 프로그램이 존재할 수 있다. 따라서 메뉴와 프로그램의 별도 관리하도록 메뉴관리와 프로그램관리 모듈을 제공한다.
[편집] 프로그램관리 모듈
현재 UI가 Miplatform으로 구성되어 있으므로 서비스 컴포넌트와 1:1로 매핑된 UI화면(XML)이 프로그램의 개념이 있다고 할 수 있다. 따라서 각 화면의 버튼과 같은 컴포넌트에 대한 권한 및 접근통제가 프로그램 범위에서 관리된다. 기본적으로 프로그램관리 모듈은 프로그램관리를 위한 기본적인 CRUD와 단위 컴포넌트에 대한 권한 및 접근통제를 위해 AuthService와 연동하여 서비스를 제공한다.
[편집] JCF3.0 프로그램관리의 특징
[편집] 프로그램관리 모듈 설정
[편집] 테이블 생성하기
- 프로그램 테이블
CREATE TABLE PROGRAM ( PROGRAM_ID VARCHAR2(20 BYTE) NOT NULL, PROGRAM_NAME VARCHAR2(50 BYTE), PROGRAM_PATH VARCHAR2(100 BYTE), PROGRAM_DESC VARCHAR2(50 BYTE), FIRST_INSERT_TIME TIMESTAMP(6), LAST_UPDATE_TIME TIMESTAMP(6), FIRST_INSERT_USER_ID VARCHAR2(20 BYTE), LAST_UPDATE_USER_ID VARCHAR2(20 BYTE), PROGRAM_SRCNAME VARCHAR2(20 BYTE), DIV_CODE VARCHAR2(10 BYTE), SCRTGRAD_CODE VARCHAR2(10 BYTE) ); CREATE UNIQUE INDEX PROGRAM_PK ON PROGRAM (PROGRAM_ID) LOGGING NOPARALLEL; ALTER TABLE PROGRAM ADD ( CONSTRAINT PROGRAM_PK PRIMARY KEY (PROGRAM_ID) USING INDEX);
[편집] Spring 프로그램 설정
- applicationContext-program.xml
<?xml version="1.0" encoding="UTF-8"?> <beans default-autowire="no" default-lazy-init="false" default-dependency-check="none" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd" > <bean id="programService" class="jcf.biz.program.service.ProgramServiceImpl"> <property name="programDao"><ref bean="programDao"/></property> </bean> <bean id="programDao" class="jcf.biz.program.dao.ProgramDAOImpl"> <property name="sqlMapClient"><ref bean="sqlMapClient"/></property> </bean> </beans>
[편집] 프로그램관리 모듈 구조
- Spring Bean에 등록된 공통모듈 관계도
공통모듈은 메뉴관리, 프로그램관리, 공통코드관리, 사용자관리, 권한관리, 용어사전관리, 보안관리 기능을 제공하고 각 기능을 제공하기 위해 Spring에 등록된 Bean들이 다음과 같은 관계를 가지고 상호 연동한다.
- Spring Bean에 등록된 메뉴관리 모듈 관계도
- ProgramAction을 통해 요청된 request는 ProgramService로 전달되고 처리된다.
- ProgramService는 프로그램정보에 대한 CRUD API를 제공한다.
- ProgramService는 ProtramDAO를 통해 DB에 접근하고 필요한 정보에 대한 조작을 수행한다.
- 프로그램 사용 시 버튼에 대한 통제는 AuthService를 통해 제공된다.
- 프로그램 사용 시 AuthService는 버튼에 대한 접근통제 권한을 DB(Cache 적용)에서 조회하고 통제하여 프로그램 화면에 출력한다.
[편집] Presentation Tier
- 프로그램관리 화면을 위해 별도의 UI용 모델을 구성하지 않고 Business Tier에서 사용하는 ProgramRole을 그대로 활용한다.
[편집] Business Tier
- ProgramService
프로그램관리를 위한 CRUD를 제공하는 서비스 컴포넌트이다. 비즈니스 흐름의 특성상 저장을 요청하면 rowStatus에 따라 적절한 로직이 수행되어 처리된다. 다음은 저장을 요청하면 ProgramService에서 구동되는 함수를 나타낸 것이다.
public String saveProgramList(List programList) { int rowCount = 0; for (Iterator iterator = programList.iterator(); iterator.hasNext();) { Program program = (Program) iterator.next(); if (program.getRowStatus().equalsIgnoreCase(Constants.ROW_STATUS_INSERT)) { rowCount += programDao.insertProgram(program); } else if (program.getRowStatus().equalsIgnoreCase(Constants.ROW_STATUS_UPDATE)) { rowCount += programDao.updateProgram(program); } else if (program.getRowStatus().equalsIgnoreCase(Constants.ROW_STATUS_DELETE)) { rowCount += programDao.deleteProgram(program.getId()); } } return ((Integer) rowCount).toString(); }
- Business Tier: 프로그램관리 클래스다이어그램
[편집] Persistence Tier
[편집] 프로그램 관리
- 프로그램을 추가하고 구성하는 관리화면
화면에서 위에 있는 공통버튼은 AuthService에서 제공하는 서비스에 따라 출력된다. 프로그램의 구성에서 저장, 수정, 삭제는 X-internet의 특성에 따라 save 메소드하나로 동시에 처리된다. 물론 권한이 있는 경우에만 버튼이 출력되고 실행된다. 프로그램를 입력하여 구성할 경우 메뉴에 맵핑하기 위해 메뉴등록 프로그램의 메뉴 프로퍼티에 프로그램 번호를 입력한다.
