Multi Channel User Guide

From JCFWiKi

Jump to: navigation, search

그림:check.gif

  • 산출물 : 멀티 채널 API 적용/사용 방법.
  • 작성자: 정광선
  • 최초작성일 : 2008/05/14

Copyright © 2008 Daewoo Information Systems Co., Ltd.

그림:forbidden.gif

X-Internet과 연동을 위해 사용되는 멀티 채널을 적용/사용하는 퀵 가이드이며, 스트럿츠2와 스프링2.5 그리고 Ibatis2 이상의 환경을 대상으로 한다.

목차

[편집] 라이브러리 적용

  • jcf-3.0.1.jar 와 jcf-ibatis-sqlmap-1.0-SNAPSHOT.jar 적용.
    • 기본의 jcf-xxx.jar 대신에 jcf-3.0.1은 jcf-3.0.1-SNAPSHOT-1038 빌드 이상의 버전을 적용하면 된다.
    • ibatis를 사용하는 경우, 기존에 사용하던 일반 ibatis-2.3.xxx.jar 대신에 jcf-ibatis-sqlmap-1.0-SNAPSHOT.jar를 적용한다.


[편집] web.xml 수정

  • web.xml에 작성되어 있는 스트럿츠2의 필터디스패처의 클래스를 jcf.web.ux.miplatform.MiplatformChannelIntegrationFilterDispatcher 으로 수정한다.
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
 
        에서....
 
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>jcf.web.ux.miplatform.MiplatformChannelIntegrationFilterDispatcher</filter-class>
	</filter>	
 
        으로 변경..

[편집] Action 클래스에서 데이터 입출력하기

  • InChannel을 통해서 UI를 통해 전달된 데이터를 자바 객체로 가져온다.
  • getVariable(String variableName) String : 주어진 variableName값에 일치하는 variable의 값을 스트링으로 반환한다.
  • getVariables() Map : 모든 variable 값을 맵객체로 반환한다.
  • getDataSet(Class clazz, String dataSetName) Object : 주어진 dataSetName에 일치하는 데이터셋의 값을 주어진 clazz 타입의 객체로 변환하여 리턴한다.
  • getDataSetList(Class clazz, String dataSetName) List : 주어진 dataSetName에 일치하는 데이터셋의 값을 주어진 clazz 타입의 객체 리스트로 변환하여 반환한다.


  • OutChannel을 통해서 자바 객체의 데이터를 XML로 변경하여 클라이언트로 보내준다.
  • setDataSet(String dataSetName, Object dataSet) void : 주어진 dataSet 값을 dataSetName으로 데이터셋으로 설정한다.
  • setDataSets(Map dataSetMap) void : 데이터셋이름(Key)과 데이터셋(value)으로 사용할 자바객체로 구성된 맵객체인 dataSetMap을 데이터셋으로 설정한다.
  • setVariable(String variableName, String variableValue) void : 주어진 variableName으로 variableValue를 베리어블로 설정한다.
  • setVariables(Map variableMap) void : 문자열의 variableName과 variableValue로 구성된 맵 객체인 variableMap의 값들을 베리어블로 설정한다.
  • send(Map dataSetMap, Map variableMap) void : 주어진 dataSetMap과 variableMap의 값을 클라이언트에게 전송한다.
  • send(Map dataSetMap) void : 주어진 dataSetMap의 값을 클라이언트에게 전송한다.
  • send() void : set 메소드를 통해서 설정된 데이터셋과 베리어블 값들을 클라이언트에게 전송한다.
  • success(String code, String message) void : 주어진 코드와 메세지 값으로 클라이언트에게 처리 처리 완료 응답을 보낸다(send() 사용하지 않음).
  • success(String message) void : 주어진 메세지 값으로 클라이언트에게 처리 처리 완료 응답을 보낸다(send() 사용하지 않음).
  • success() void : 클라이언트에게 처리 처리 완료 응답을 보낸다(send() 사용하지 않음).
  • error(String errorCode, String errorMessage) void : 주어진 에러코드와 에러메세지로 클라이언트에게 처리 실패 응답을 보낸다(send() 사용하지 않음).
  • error(String errorMessage) void : 주어진 에러메세지로 클라이언트에게 처리 실패 응답을 보낸다(send() 사용하지 않음).
  • error() void : 클라이언트에게 처리 실패 응답을 보낸다(send() 사용하지 않음).
  • API 사용 예제 - 저장시
	public void saveCodes() {
		List saveCodes = InChannel.getDataSetList(Code.class, "ds_code");		
		codeService.saveCodes(saveCodes);		
		OutChannel.success();
	}
  • API 사용 예제 - 조회시
	public void findUser() {
		// InChannel을 통해서 userId 베리어블 값과  가져온다.
		String userId = InChannel.getVariable("userId");
		Code locationCode = InChannel.getDataSet(Code.class, "ds_location_code");
 
		List user = userService.findUsers(userId);
		List house = houseService.findHouses(userId, locationCode);
		String currentFlag = getSession().getAttribute("currentFlag");
 
		// OutChannel을 통해서 가져온 객체 user, house 그리고 스트링값 currentFlag를 OutChannel에 세팅한 후, 전송한다.
		OutChannel.setVariable("currentFlag", currentFlag);
		OutChannel.setDataSet("ds_user", user);
		OutChannel.setDataSet("ds_house", house);
		OutChannel.send();
	}

[편집] 주의 사항

  • 1. DB 에서 조회한 데이터를 새로운 List 객체(new ArrayList)에 저장하지 않는다.
  • 2. 조회 결과로 맵 객체는 사용하지 않는다.
  • 3. 한건을 조회할 경우에도 리스트를 사용한다.(ibatis dao에서는 리스트로 조회하고, action 단에서도 조회된 리스트를 그대로 OutChannel.setDataSet(..)한다. 즉, 객체 한건단위로 조회하는 것을 지양한다. 만약 null인경우 적절한 응답을 못주게 된다.)