상대 기간을 구현하는 방법
cmn_relative_duration 테이블 및 DurationCalculator 스크립트 포함을 만들어 상대 기간을 구현할 수 있습니다.
시작하기 전에
프로시저
- cmn_relative_duration 테이블을 생성합니다.
- DurationCalculator 스크립트 포함을 만듭니다.
- 상대 기간 샘플 항목(예: "다음 영업일 오후 4시까지")을 만듭니다.
- 상대 기간을 지원하는 데 필요한 필드를 SLA 테이블에 추가합니다.
- SLA에 대한 기간 계산을 수정합니다.
- SLA에 대한 SLA 백분율 타이머 계산을 수정합니다(work_seconds를 사용해야 함).
- 워크플로우에 일정 필드 추가: 일정 및 시간대(워크플로우 테이블의 필드에 따라 선택됨).
- 워크플로우 작업 활동에 기간 지원 필드를 추가합니다.
- 작업 활동에 대한 기간 계산 스크립트를 구현합니다.
상대 기간 테이블 및 DurationCalculator 메서드
cmn_relative_duration 테이블은 기한을 기간 또는 상대적 기간으로 정의할 수 있도록 지원합니다.
이 테이블은 "name"과 "script"라는 두 개의 필드로 구성됩니다. "script" 필드에는 상대 기간 계산 스크립트가 포함되어 있습니다. 이 스크립트에는 기한을 계산하는 데 사용되는 "calculator" 변수가 포함되어 있습니다.
DurationCalculator 스크립트 포함을 사용하여 기간 계산을 수행할 수 있습니다. 다음은 이 스크립트 포함에서 사용할 수 있는 메서드입니다.
| 방법 | 설명 |
|---|---|
| setSchedule (문자열 schedID, [문자열 시간대]) | 기한 계산에 사용할 일정과 시간대를 설정합니다. |
| setStartDateTime(GlideDateTime 시작) | 기간 계산의 시작 시간을 설정합니다. "start"가 공백이면 현재 날짜/시간을 사용합니다. |
| calcDuration(int 초) | 종료 날짜와 시간을 계산합니다. 완료되면 this.endDateTime 및 this.seconds 속성이 계산 결과를 나타내도록 설정됩니다. |
| calcRelativeDuration(문자열 relativeDurationID) | 지정된 상대 기간 스크립트를 사용하여 기간을 계산합니다. 완료되면 this.endDateTime 및 this.seconds 속성이 계산 결과를 나타내도록 설정됩니다. |
| getEndDateTime()을 호출합니다. | 지속 시간의 종료 날짜와 시간을 나타내는 calcDuration/calcRelativeDuration에 의해 설정된 this.endDateTime 속성을 가져옵니다. |
| getSeconds()를 호출합니다. | calcDuration/calcRelativeDuration에 의해 설정된 this.seconds 속성을 가져오며, 해당 기간 동안 수행할 작업의 총 시간(초)을 나타냅니다. 주: 시작 시간과 종료 시간 사이의 총 시간이 아니라 총 작업 시간이며 작업 시간의 백분율을 결정하는 데 사용할 수 있습니다 |
| getTotalSeconds()를 호출합니다. | 기간의 시작 시간과 종료 시간 사이의 총 시간(초)을 나타내는 calcDuration/calcRelativeDuration에 의해 설정된 this.totalSeconds 속성을 가져옵니다. |
상대 기간 스크립트에서 사용되는 함수는 다음과 같습니다.
| 기능 | 설명 |
|---|---|
| 부울 isAfter(GlideDateTime dt, 문자열 시간) | '시간'은 'dt'로 지정된 시간 이후입니까? DT가 비어 있으면 현재 날짜/시간이 사용됩니다. 시간은 24시간 형식의 "hh:mm:ss"입니다. |
| calcRelativeDueDate(GlideDateTime 시작, int 일, 문자열 endTime) | "시작"에서 시작하여 일정과 시간대를 사용하여 "일"을 더한 기한을 계산합니다. 작업 마감일을 찾으면 시간을 해당 날짜의 'endTime'으로 설정합니다. 완료되면 this.endDateTime 및 this.seconds 속성이 계산 결과를 나타내도록 설정됩니다. endTime이 비어 있으면 종료 근무일의 종료를 사용합니다. |