[Setup Environment Config]


Simultaneous Task running via another user on one bot is not impossible.


環境設定:1.Dic設定 2.Error Handling規約 3.Folder名前作り


▶AA의 유저는 하나의 어카운트에 귀속되므로, 한 어카운트에 이미 귀속된 유저는 다른 어카운트에서 사용할 수 없다.


▶10.5이상의 버전에서만 net4.7이상을 지원한다.


설치시는 sql10.2로 환경설정할 것(10.3으로 하지말것)

한번으로 안될시 -> 기존 설치된 sql2014를 모두 제거 -> 재설치(AACR인스턴스가 존재)




[Dev Environment Config]

▶가장 처음과 끝에 에러 핸들링으로 처리하기


▶devEnDic과 realEnDic을 만들어 개발환경과 본환경의 디렉토리를 구분하기(중복언급)



[AA technic]

Debugging
Debugging button is upper part of page or click the starting part of line makes break point.

 

Put into Log command one task by task

▶파일이나 폴더를 만들때는 if문으로 감싸서, 혹시나 이미 존재하더라도 오류가 나지 않도록 처리할 것


▶되로록이면 키보드가 아닌 오브젝트 조작으로 진행하고, 가장 적합하도록 여러번 테스팅을 거쳐 오류가 나지 않는 조합을 선택하도록


▶runscript 시 파라미터에 공백이 있으면 공백 구분으로 잘라버리므로 오류가 난다.


▶aa에서 DB를 최초로 CSV로 격납시 , 델리미터지만, Excel.Application 객체로 한번이라도 오픈하면 탭 델리미터로 바뀌어버린다.

-> Excel.Application 객체로 오픈한 CSV는 삭제해버릴 것


▶일본어로 된상태에서 키보드 조작하면 폰트가 망가짐


- (Extremely important) Don’t forget to disconnect Database before end, otherwise DB denies AA accessing into DB with error message : commonly trigger insufficient previlege.


As KeyStroke works are sometimes faster than window’s working, put in Delay command after Keystrokes command. 


▶Array를 잘 사용하면 편리


▶내용을 확인 하는 로직을 만들때는 if result="error"를 배치해서 스크립트에서 오류난 거 거르고 그 다음, if result <> "pass" 로 result가 fail일뿐만 아니라 계산 오류로 공백으로 아웃풋되는 것도 거르기


▶이후 운용에 유리할 수 있도록 프로그래밍이 되어 있는가?

-가령 개발패스와 실환경패스를 정하는 부분 등이 운용보수에 편하게 짜여져 있는가?

-스크립트가 하나의 태스크에만 사용되는 것이아니라, 파라미터만 바꾸면 다른 테스크에도 통용될 수 있도록 일반성있게 짜여져 있는가? 스크립트 내의 변수의 위치에는 고정치를 줄 것이 아니라 파라미터를 통한 변수를 줄 것


▶VBScript는 에러핸들링을 해도 AA에서 에러경고창을 띄우지만, JScript는 에러핸들링시 에러경고창을 띄우지않는다.
-The message box which task shows is not shown by AAPlayer hence it cannot be controlled using the Error Handling command in the Task Editor. It is shown by AA_MyVB.vbs. To hide this message box, open AA_MyVB.vbs located at AAE Client installation path and comment following line.
WScript.Echo("Error In Script - " & VbCrlf & err.number & " " & err.description)


▶task와 에러 핸들링은 if 문으로 개별적 에러 처리가 필요. 

10.5버전(최신버전 임에도 불구하고) 아직 task와 script에 대한 에러 핸들링 커맨드가 구비되지 않음.


▶SAP 조작은
첨부파일에 있는 두 단계의 설정을 거쳐 옵션에서 scripting record and play를 실행시키면, 엑셀의 마크로처럼 내가 건들였던 움직임이 VBS로 반환된다.


▶웹 오브젝트 조작에서 오브젝트로 추출된 각 태그의 value를 변수로 선정할 수 있다.


▶스크립트 내에서는 절대 절대디렉토리를 만들지 말고, AA에서 만들어진 변수에 담긴 디렉토리만을 사용해서, 메인테넌스를 일괄화 시켜야한다.


▶웹 메니징 컨트롤에서, 버튼 태그로 되어 있어서 오브젝트 셀렉팅이 되지 않는 경우, 마우스 오른쪽 버튼을 누르면 셀렉팅된다.


▶Run Script에서 파라미터를 넣을 때, 하나의 파라미터를 반드시 ""로 감싸도록한다.

 AA는 띄워쓰기를 하나의 파라미터 단위로 인식하기 때문에, 파일명 자체에 스페이스가 들어가 있으면 하나의 패스를 두개로 나눠서 읽는 참사가 발생한다.


▶기본 변수 설정

변수의 설정 조건 : 1. 고정적으로 사용되어 재사용성이 높은가? 2. 운용에 유리하게 사용될 수 있는 변수인가? 3. 다른 변수에 또 값을 담아 돌려사용할 수 없는가? 꼭 만들어야하는가?

dpRoot : AA는 상대패스가 안되므로 루트 디렉토리를 담는 변수를 만들어 놓고, 이후에 각 path에 dpRoot를 이용하여 디렉토리를 지정한다.
dpRootD

dpRootR


dpInput : 실제 사용하는 디렉토리 변수

pathInputDev : 개발용 디렉토리 변수

pathInputReal: 본환경 디렉도리 변수


dpOutput : 실제 사용하는 디렉토리 변수

pathOutputDev : 개발용 디렉토리 변수

pathOutputReal: 본환경 디렉도리 변수


fpLog : 로그의 위치와 파일명은 고정되있으므로 로그위치 로그파일명을 변수에 담을 것

fpCsv: CSV의 위치는 고정
dpScript :  Script의 위치는 고정


result : 각 태스크의 부분적, 잠정적 결과를 일시적으로 받아냄

resultScript

resultTask


dayOfToday : 오늘의 일

monthOfToday : 오늘의 달

yearOfToday : 오늘의 년


loopingVar : 루프시에는 하나의 변수를 여러곳에서 돌려사용하는 것이 복잡하므로 새로운 루프용 변수를 취득할 것

sqlQuery : sql문을 담음

errorScript : 

errorTask : 

emailReceiver : 


-변수 외에는 절대 하드코딩 하지 않는다. 예를 들어 파일패스와 같은 경우는 변수에 값을 넣고 변수를 전달하지, 파일패스에 직접 하드코딩하는 일은 없도록한다. 나중에 메인테넌스 시 어디를 하드 코딩 했는지 판단이 불가능하고 이는 프로그램 오류를 발생하기 때문이다. 언제 누구에 의해서라도 통제될 수 있도록 변수만 활용하도록 한다.



[Maintainance]

▶스케쥴러를 실행한 어카운트가 로그 아웃 시 스케쥴러의 시행도 불가능하다.


▶스케쥴러보다 트리거가 우선된다.


▶스케쥴러가 여러개 동일한 시간에 시행될시 priority에 따라 실행 순서가 바뀐다.


▶ development 권한을 가진 clinet 유저는 세부적 스케쥴링이 불가능하고, one time only 스케쥴링만 가능하게된다.


▶ os가 영어가 아닐시 monthly 스케쥴러가 실행되지 않는다.


▶ 컨트롤룸은 20분이 지나면 자동으로 유저가 로갓된다.

+ Recent posts