본문 바로가기

아이티

ProFrame 간단하게 실습하기.

ProFrame 간단하게 실습하기.

이건 어디서 퍼와서 제가 설명을 덧붙인겁니다. 이해해주세요 ^^

기본 조회 실습을 예로 들겠습니다.
1. 사원(EDU_EMP) 테이블 조회 전체 설명
2. DBIO Module 생성
3. 입출력 구조체 생성 및 Mapping
4. BM 작성
5. BM 단위테스트
6. SM 작성
7. SM 단위테스트
8. 화면개발
 

자, 설명들어갑니다.
1. 사원(EDU_EMP) 테이블 조회 전체 설명( 별로 안중요!! 합니다. )

1.1 처리 플로우
INPUT(empno) -> 입력값 검증 -> 직원정보 조회 -> 문자 변환
  - INPUT (empno)
  - 입력값 검증 :
     INPUT 유효성 검증
     IF empno = NULL
         RETURN error;

  - 직원정보 조회 :
     EDU_EMP, EDU_DEPT 테이블을 참조(VIEW)
     RETURN
       ename, dname

  - 문자변환 :
     ename(사원명), dname(부서명) 대문자로 변환
     RETURN
       empinfo = ename + dname
 
1.2 사원 테이블 조회 전체 시나리오
  - EMPNO(사원번호)를 입력받아, 직원정보조회 테이블에서 EMPNO에 대한 사원이름과 부서명을 조회하고,
     문자변화 모듈에서 대문자 문자열로 변환하여 RETURN 받는다.
  1) 사원번호(empno)를 입력 받는다.
  2) 사원번호에 대한 검증을 거친 후, 직원정보 조회에서 사원이름과 부서명을 조회한다.
  3) 조회한 사원이름과 부서명은 문자변환 모듈에서 대문자로 변환한다.
  4) " I am 이름, My Department is 부서명 "의 문자열 조합을 만들고, RETURN 한다.


2. DBIO 모듈 생성
이해하기 쉽도록 그림으로 설명하겠습니다.
먼저 [오른쪽마우스]를 누르면 아래와 같이 나옵니다. 여기서 DBIO Query를 선택!!


Select조회는 Persist 나 View둘중 아무거로나 해도 상관은 없습니다.
Persist는 조회 수정 입력이 다 가능하지만 View는 아래보시면 조회밖에 안됩니다.
대상 테이블을 넣지않으면 finish를 할 수 없습니다.
꼭 테이블을 선택해주세요.


꼼꼼하게 테이블을 하게되면 Finish를 할수 있습니다.


Persist의 특징은 잘보시면 빨간동그라미, 파란동그라미로 쉽게 컬럼선택이 가능합니다.
Where절은 직접 써주세요.
부가설명을 잘 읽어보면 됩니다. ^^



여기서부터는 View로 작성하는 케이스입니다.


마찬가지로 대상테이블을 넣어야합니다.


Finish로 끝내버립니다!!! Finish로 가버렷!!!~~

View의 특징은 내가 직접 쿼리를 작성해줘야 한다는것 입니다.
툴의 도움없이 작성하셔야 하며 쿼리문법적오류가 있어도 작성시에는 오류를 잡아주지 않습니다.

그림설명은 이상입니다.


아래는 위그림을 글로 설명한 부분입니다.

2.1 DBIO 기본 쿼리 생성
  - DBIO > New > Table 기본 Query 를 선택하면 DBIO 기본 쿼리를 생성할 수 있다.
    Insert, Select, Update, Delete, Fetch 에 대해 기본 쿼리가 생성되고, 이를 Compile 한다.
2.2 DBIO 쿼리 생성
  - DBIO > New > DBIO Query 를 선택하면 DBIO 기본 쿼리를 생성할 수 있다.
    리소스 그룹, 논리명, 물리명, Type을 설정하고,
    2개의 테이블을 참조하므로 VIEW를 선택하고,
    Exec Type 에서 data 조회기능의 SELECT를 선택한다.

2.3 DBIO 쿼리 작성
  - edu_emp와 edu_dept 테이블을 참조하여, ename과 dname data를 얻는 SQL문을 작성한다.
     하단의 입력변수는 쿼리 실행 시 입력될 INPUT값이다.
2.4 DBIO 쿼리 테스트=>오라클에서 plan으로 쿼리문법 검사가 더 빠를수도 있다.
  - 하단의 Preview 탭을 선택하고, 입력변수에 유효한 INPUT값을 설정한다.
     Result 탭에서 테스트 결과를 확인할 수 있다.
  - 1) Preview & Test 탭 선택   2) 유효한 empno 설정  3) 테스트  4) ResultSet 결과값 확인

2.5 Compile Resource (단축키 : Alt+c)
  - ProFrame Navigator > DBIO > view > pfm > edu_search_empinfo [직원정보조회] 에서
    마우스 우클릭 > Compile Resource 하면
    Console 탭에서 ======> 완료 ExitCode = [0] 을 확인



3. 입출력구조체 생성 및 Mapping 
입출력 구조체는 중요합니다. 그 이유는 화면과의 입출력구조체를 통해 데이타 이동으로 표시되기 때문에
각 구조체 크기나, 구조체명, 순서도 중요할 수 있습니다.
그리고 BM, SM 작성시 입출력 구조체를 선택하게 되어있으니 BM, SM 작성전에 먼저 만들어야 합니다.
*부연설명 : BM(비지니스모듈) SM(서비스모듈) ^^

3.1 입력 구조체
  - PROMAPPER > structure > New > Structure 를 선택하여 입력구조체를 생성하고,
    리소스 그룹, 논리명, 물리명을 설정한다.
    리소스 그룹 : pfm
    논리명 : 직원정보조회 입력구조체
    물리명 : edu_search_empinfo_in

  - edu_search_empinfo_in 탭 창에서
    편집 : FixedLength 선택하고 팝업창에서 저장 버튼 클릭
    검색 > 필드 > 물리명 중 empno 를 Drag & Drop

3.2 출력 구조체
  - PROMAPPER > structure > New > Structure 를 선택하여 출력구조체를 생성하고,
    리소스 그룹, 논리명, 물리명을 설정한다.
    리소스 그룹 : pfm
    논리명 : 직원정보조회 출력구조체
    물리명 : edu_search_empinfo_out

  - edu_search_empinfo_out 탭 창에서
    편집 : FixedLength 선택하고 팝업창에서 저장 버튼 클릭
    검색 > 필드 > 물리명 중 직원정보(empinfo) 를 Drag & Drop

3.3 DBIO 입출력구조체
DBIO입출력구조체는 DBIO작성시 자동생성이 가능합니다.
이건 따로 작업을 본인이 안해줘도 될듯 합니다.

  - 다음은 DBIO의 입력, 출력 구조체 설정이다.
     DBIO의 입출력 구조체에는 FixedLength 설정을 하지 않는다.

  - <edu_change_toupper_in>
     ename / string / 10
     dname / string / 14

  - <edu_change_toupper_out>
     empinfo / string / 130

3.4 Compile Resource & Dlupdate
  - Compile Resource 와 Dlupdate 를 수행한다.
  - ProFrame Navigator > PROMAPPER > structure > pfm > edu_search_empinfo_in 에서
    마우스 우클릭 > Compile Resource 하고, Dlupdate 한다.
    Console 탭에서 ======> 완료 ExitCode = [0] 을 확인
꼭 Dlupdate안해도 되긴 합니다. ^^ 그래도 하는걸 권장합니다.
 

4. BM 작성
4.1 BM 생성 및 입출력구조체 지정
  - ProFrame Navigator > PROBUILDER > biz_module > New > EMB Design 을 통해서
     Business Module을 만들고 입출력구조체를 지정합니다.
(아까만들었던 3 Step 입출력구조체를 선택하면 됩니다.)

4.2 BM EMB Design 작성
  - 메뉴에서 Virtual Module 을 클릭하여 이미 만들어진 BM에 연결합니다.
  - Toupper 모델에서 마우스우클릭 > 코드 편집 클릭
이 부분은 잘 모르겠네요. ^^

4.3 BM 소스 작성
  - edu_change_toupper 모듈은 INPUT 문자열을 대문자로 변환하는 역할을 한다.
    세부 코딩 내역은 다음과 같다.
-------------------------------------------------------------
Toupper Code
int i;
char tmp1[10];
char tmp2[10];

bzero( &tmp1, sizeof(tmp1));
bzero( &tmp2, sizeof(tmp2));

for (i=0; i < strlen(INPUT->ename); i++)
    tmp1[i] = toupper(INPUT->ename[i]);

for (i=0; i < strlen(INPUT->dname); i++)
    tmp2[i] = toupper(INPUT->dname[i]);

snprintf(OUTPUT->empinfo, sizeof(OUTPUT->empinfo),
          "I am %s, My department is %s", tmp1, tmp2);

-------------------------------------------------------------
서비스부분은 설명할게 좀 많으니 알아서 하시면 됩니다.
모르면???  배워야죠 ^^ 설명은 패스~ 따로 답변다시면 아는한도 내에서 대답은 해드립니다.

4.4 소스생성 & Compile Resource & Dlupdate
  1) 소스 생성
  2) ProFrame Navigator > PROBUILDER > biz_module > pfm > edu_change_toupper [문자변환] 에서
  3) 마우스우측 클릭 > Compile Resource 클릭하고 Dlupdate 클릭
  4) Console 탭에서 ======> 완료 ExitCode = [0] 을 확인

5. BM 단위 테스트
  - ProFrame Navigator에서 Business Module을 클릭하여 단위테스트 항목을 실행하면
    BM수준에서 단위테스트를 할 수 있습니다.

  1) ProFrame Navigator > PROBUILDER > biz_module > pfm > edu_change_toupper [문자변환] 에서
  2) 마우스우측 클릭 > 단위테스스 클릭
  3) Module TEST 창에 INPUT 값을 입력하고 전송 클릭
  4) OUTPUT 확인
단위테스트는 제 경우에는 크게 필요하지 않습니다.

6. SM 작성
6.1 SM 생성
  - ProFrame Navigator > PROBUILDER > service_module > New > EMB Design 을 클릭하면
    신규 서비스 모듈을 생성할 수 있습니다.
    신규 서비스 모듈을 생성할 때 입출력구조체도 같이 지정합니다.
  - 리소스 타입 (Service Module), 논리명 (직원정보 check), 물리명 (edu_check_empinfo), 리소스 그룹(pfm)
  - 입출력 구조체 지정 (edu_check_empinfo_out)
  - 거래코드 & 서비스명 설정

6.2 SM EMB Design
  - 이미 만들어진 직원정보조회 BM과 문자변환 BM을 드래그앤드롭하여 Service Module에 추가합니다.
     DBIO와 모듈 입출력을 지정합니다.
  1) ProFrame Navigator > DBIO > view > edu_search_empinfo [직원정보조회] 를 드래그앤드롭
  2) ProFrame Navigator > PROBUILDER > biz_module > fpm > edu_change_toupper [문자변환]을 드래그앤드롭
  3) 직원정보조회 모델에서 마우스우클릭 > 변환 > 입력변환

6.3 DBIO & MODULE 입출력 실습.


이상 ProFrame의 간단한 서비스생성에 대한 설명을 마치겠습니다.
Tmax제품의 메뉴얼이 더 자세한 도움이 되겠죠? ^^
그럼 즐거운 코딩되시길 바랍니다.

'아이티' 카테고리의 다른 글

파일 hexcode 보기  (0) 2012.10.02