프레임워크 교육
트리거 = pa에 시작되고 요청을 호출할때 발생함
비즈니스 로직은 PAD에 담기게 됨
시퀀스 INIT= 사전에 준비해야할 작업(사이트를 열어서 로그인 등) 프로세스 = 작업하는 곳 파이널 = 작업을 업로드 하거나 보낼때 사용 됨
케이 시냅스 = 건드리지 않는 부분 비지니스 시냅스 = 필요에 따라 수정 하는 부분 리트라이어블 흐름 = 다시 돌려야할 부분 ㅇㄹㄴㅇㄹ = 가시 돌리면 안되는 부분
프레임워크 교육
8월 22일 14시
Job은 실행 기록같은 것이다
(로그 기록)
PA는 PC가 없이 가동이 됨. API로만 자동화
PAD는 사용자처럼 작업해서 데이터 수집을 해서 작업하는 것
트리거 발생( 메일이 들어오거나, 매일 8시에 돌린다 등등 조건을 걸 수 있음)
트리거는 PA에서 걸 수 있도록 함. PA가 PAD를 호출할 수 있도록 구성되어있음
PA와 PAD를 모두 포함한게 프레임워크
비즈니스 로직은 PAD에 남게 됨
PAD 호출 후 PAD가 정상 호출에 성공을 했는지 실패했는지 남길 수 있음
init process final 크게 3가지가 있음
init이 과제 준비 작업(변수 설정 및 날짜 계산. 사전 작업. 사이트 로그인하는 작업 등등)
process는 실제 작업들
결과 파일 작성 및 메일 보여주는 작업 등이 final 작업
PAD에서 끝이나면 PA로 호출할 수 있고 끝이 남
하위 흐름 중에서
[KSynapse] : 건드리지 않는 내용을 넣게 됨
[Business] : init에서 파일을 다운 받아야 한다면 Business 하위 흐름에 위치 시켜야 함
init도 두 부분으로 나뉘게 됨(오류 발생했을 때는 기준으로)
[InitRetryable] : 다시 처음부터 돌리는 방법1(껐다 다시 켰을 때 성공이 되는 경우도 있기 때문)
[InitOnce] : 다시 돌리지 않는 부분을 넣음
ex) 상품 등록을 하게 되면 다시 중복해서 등록할 필요가 없으니까 InitOnce 부분에 들어가게 됨
[SetTransection] : 메일 10건을 처리를 한다면 프로세스 부분을 어떻게 구성을 해야하는지 생각.
반복문? 프로세스 재사용? → 재사용을 하는 것이 낫다
그러면 프로세스 부분은 여러 번 돌아가게 됨
10건이 아니더라도 목록을 추출하면 테이블에 n개가 들어가게 되어서 프로세스로 돌어가게 됨
[Process] : Step이 나뉘어져 있는데 이렇게 나눌 수 있다 라는 것
10건 중에서 3번째가 오류가 났으면 3번째부터 다시 수행. → 그 3번째 안에서도 오류가 난 부분과 안난 부분을 나누기 위해서 Step을 나눔
완료된 Step이면 다음 Step으로 넘어갈 수 있는 부분을 변수 설정 해줄 수 있음
[StepFinal] : 메일을 보내거나 끝났을 때 작업을 넣는 것
#개발표준(회사와 사이트마다 다름) -변수명명 규칙, 흐름명명(작업을 동사행태로 가져옴) 규칙을 확인해야됨
-PDD = 업무 분석 및 To-Be 설계 0.1부터 시작해서 버전을 계속해서 설계도를 업데이트가 되야됨 -문서를 정확하게 설계해야지 다른 사람들도 한눈에 알아보기에 좋은 개발자라고 할 수 있음.
–과제를 분석하고 설계를 해보고 다음주 수요일까지 개발까지가 목표 목요일은 QA까지 완료해야됨.
상호명 엑셀 파일을 읽는것 - 작업대상
init retryable = 에러가 발생해서 성공할때까지
프로세스를 준비하기 위해서가 가장 정확한 의의라고 볼 수 있다.
x: 성공 error : 일반적인 에러 예기치 못한 BRE, Notry = 예기된 에러로 리트라이를 안하며 개발자에 따라 각자 정의됨 예) 웹하드에 파일이없거나 메일이 안갔거나 재시도를 해봤자 의미가 없는 것
- 예시 과제 설명(국세청)
- 프로젝트 개요를 보고 init과 process와 final을 나눠야 함
- init에서 엑셀 파일과 조회하는 과정을 2번 해야 함
- 프로세스 명도 잘 봐야 함. 이게 목적인 것이다
- 엑셀 파일을 읽어서 상호명을 읽음. 작업 대상(상호명이 몇 개가 있는지 모르니까). 방문판매사업자 조회를 상호명만큼 해야 함. 이게 process만큼 해야 함(트랜잭션) 사업자 등록번호를 얻는 것까지가 프로세스. 국세청에 조회는 작업대상만큼 조회를 할거임. 그럼 프로세스. 휴폐업 상태의 상호들을 엑셀 파일에 정리하는 것은 한 번만 함.프로세스에서 조회만 하고 전체 트랜잭션 데이터를 엑셀에 한 번만 써도 됨. 메일 공유는 한 번만 해도 되니까 step5로 해도 되겠다.
- init
- initOnce
- 없음(사전에 준비해야 될 것이 없음). 예를 들어서 경로를 세팅하는데 날짜가 아닐 수도 있음. 영업 일이 아닐 때 트랜 잭션이 끝나야 하니까. 이체 일인데 영업 일이 아니면 이체를 하면 안될 때
- 있다면 경로 설정 정도라고 볼 수 있음
- initretryable(프로세스에서 사용하는 것을 준비하는 단계라고 생각하면 됨, 재시도가 가능한)
- 프로세스에서 실패했을 때 다시 돌아감. 성공하면 한 번만 실행됨. ex 확인 버튼을 누르다가 오류가 나면 다시 다 닫았다가 다시 열음. 프로세스에서 실패했을 때도 들어감. (다른 경우는 처음 경우와 settransactiondata에서 실패했을 때)
- 사용하는 프로그램을 닫았으니까 다시 열 수 있는 것이 들어감
- 공정거래위원회 조회 화면까지, 국세청 조회 화면까지 해야함
- initretryable이 없으면 계속 확인하고 닫고 확인하고 닫고 해야함. 비효율적
- settransactiondata(한 번씩만)
- 상호명 엑셀 파일을 읽어서 데이터 테이블로 만들어야 함(트랜잭션이라는 것. 트랜잭션 아이템의 묶음을 트랜잭션이라고 하는데 트랜잭션 아이템을 트랜잭션으로 보기도 함)
- process
- StepA : 상태를 가지고 옴(영업일인지, 휴업일인지)
- B :
- int_transationNumber를 우리는 데이터테이블로 받기 때문에 0부터 시작
- Step : A, B, C, D
- 트랜잭션을 먼저 설정했으니까 먼저임
- 0 A → 0 B → 0 C → 0 D → 1 A … 순으로 감
- max : 2라고 했을 때(첫 시도와 별개로 재시도가 2번)
- 0 A 성공 → 0 B 실패(첫 시도) → 0 B 실패 → 0 B 실패 → 1 A 로 가야됨. (이미 0 트랜잭션에서 재시도 횟수를 채움)
- 실패할 때도 코드를 잘 짜야함(담당자가 실패했을 때 메일 보내달라고 할 수 있음)
- 총 4가지
- (성공으로 집계) : 에러가 없을 때가 있고(성공), 비즈니스 룰 익셉션(BRE)일 때(사전에 정의된 에러),
- (실패로 집계) : 일반 에러(위에서 했던 경우. 일반/예기치 못한), NoRetry 일 때
- BRE와 NoRetry를 스스로 구분할 줄 알아야 하는데 모르면 물어봐라
- 파일이 없거나 그럴 떄 재시도 해봤자 의미가 없으니까 BRE나 NoRetry로 됨
- 공책 다시 보기
- 0 A 실패 → 0 A 실패 → 0 A 실패 → 1 A 성공 → 1 B 실패 → 1 C BRE → 2 A로 감
- 방문판매업 신고 상태일 때가 없다 → BRE 에러? → 정의되지 않음 → NoRetry일까? → 성공과 BRE일 때는 성공으로 집계를 하고 예기치 못한 에러와 NoRetry는 실패로 집계를 한다 → BRE로 들어가는데 우리가 잘못됐냐 담당자가 잘못됐냐 이건데 엑셀에 조회 되지 않은 값을 줬으니까.
- stepfinal
- 엑셀 저장, 메일 발송까지
sdlfkg’;sldkfgl;’ksdb,xmc/v.,mb/x.c,vb,.msdflkgl’e;lkrgoweiropgi[posidfgk;’xlkcbx,cvmb,/.mxc.,vsdlfkgl;’e;lrkopisdoigsd;lfkg;sldkf,.xc.,vb.,x/c.v,bm/x.c,vbmxc/.,vgskdflg;’sdfl;gk;dlsf’geortipwe[poritewg.lsdfmgbsmd;flmbsl;fd;lgksd;’fkgle’;rlitoweir[potis;fd’lgkls’d;flkxc,vmb/.xmcvb./,xmcv./b,mx/.v,cmbdsgs’;fldgks’;dlfkg;’erotiwope[rpotiksjdkfl;gskdfjg;lksdjfgklcgvnmxc,.m/n.,m.v,cbn,/.cmvb.,nmc/v.,blfkh’;dflgkh;ldf’;glkheoritpe[rpotipoi]]]]]
댓글남기기