업무 로직과 관련된 문의입니다.
작성하고자 하는 RPA 작업은,
매월 8일에 수행하려 하는데, 8일이 휴일(주말포함)인 경우 다음날에 수행하고자 합니다.(08:30AM)
0 30 8 8-10 * ? *
와 같이 크론식을 만들었습니다. (휴일이 길 경우를 대비하여 8~11일)
이런 경우에 업무흐름을 어떻게 작성해야 할지 문의드립니다.
8일이 수요일(영업일)인 경우
1)8일 - 영업일(휴일은 수행 안함) 체크하여 RPA 수행. set asset 액티비티 수행(true/false assign)
9일 - get asset 조건 확인후에, true 인 경우 RPA 수행 안함.
false인 경우, 영업일(휴일은 수행 안함) 체크하여 RPA 수행. set asset 액티비티 수행(true/false assign)
10일 - get asset 조건 확인후에, true 인 경우 RPA 수행 안함.
false인 경우, 영업일(휴일은 수행 안함) 체크하여 RPA 수행. set asset 액티비티 수행(true/false assign)
8일이 일요일(휴일)인 경우
1)8일 - 영업일(휴일은 수행 안함) 체크하여 RPA 수행. set asset 액티비티 수행(true/false assign)
9일 - get asset 조건 확인후에, true 인 경우 RPA 수행 안함.
false인 경우, 영업일(휴일은 수행 안함) 체크하여 RPA 수행. set asset 액티비티 수행(true/false assign)
10일 - get asset 조건 확인후에, true 인 경우 RPA 수행 안함.
false인 경우, 영업일(휴일은 수행 안함) 체크하여 RPA 수행. set asset 액티비티 수행(true/false assign)
수행이 시작된는 8일은 ‘get asset 조건 확인’ 작업은 안합니다. 이런 식으로 구상해봤는데
더 좋은 방법이 있을까 해서 글을 올려 봅니다. 좋은 의견 있으면 comment 부탁드립니다. 감사합니다!
적어주신 영업일인 경우와 휴일인 경우의 작업 내용이 완전히 동일해서 어떤 차이가 있는지는 정확히 모르겠습니다만, 휴일 여부에 따라 가변적인 기준일에 대하여 수행작업이 있는 것으로 이해했습니다.
그렇다면 휴일인지 아닌지 여부를 바탕으로 당월의 작업기준일을 계산하여 작업을 실행한 날짜가 기준일과 일치하는지 여부에 따라 IF나 Flow Decision으로 분기하시면 될 것 같습니다.
작업해야 하는 기준일 계산
1-1. 당월8일이 평일이면 당월 8일을 그대로 작업일로 지정
1-2. 당월 8일이 평일이 아니면 당월 8일에서 평일이 나올때까지 하루씩 더하고 검사하기를 반복하여 최종적으로 나온 날짜를 작업일로 지정
오늘이 작업일에 해당하는지 검사
그런데 영업일을 계산한다고 하면 주말 뿐만 아니라 회사 자체 휴일(창립기념일, 여름휴가 등)까지 고려하는 경우도 많이 있으므로 보통은 별도의 엑셀파일 등으로 수기관리가 필요해집니다.
그리고 1-2의 경우 엑셀에서 제공하는 WORKDAY라는 함수를 사용하면 매우 손쉽게 계산 결과가 나옵니다.
따라서 다음과 같이 엑셀로 기준일 계산 템플릿을 미리 만들어두면 UiPath에서는 작업일 부분만 Read Cell 하여 그 값이 작업을 시작한 날짜와 일치하는지만 IF로 확인하면 되는 식으로 간략화 할 수도 있을 것 같습니다.
엑셀은 그렇게 잘하는건 아니라서 그런지 함수가 좀 지저분해 보일 수 있는데, 영업일 계산을 엑셀 함수로 대체 가능하다는 점만 참고하시면 될 것 같습니다.
그리고 스케쥴링의 경우 8~11일 사이면 어쩌다 가끔 장기 연휴 겹쳤을 때 수행이 누락 될 수도 있을 것 같습니다. 다른 이슈가 없다면 기간을 더 넉넉하게 잡거나 아니면 편하게 매일 수행하도록 하셔도 될 것 같습니다.
기준일계산 부분을 프로세스 초반에 넣어둔다면 해당일이 아닌 경우 금방 종료될 것이므로 매일 수행하더라도 로봇 가용성에 크게 영향을 주지 않을 수 있습니다.