Geneva 이전 릴리스에서 업그레이드한 경우에는 변경 관리를 활성화한 후에 이전 상태 레이블을 새 상태 레이블로 업데이트해야 합니다.
이 태스크 정보
변경 관리 상태 모델을 활성화하면 현재 변경 기록의 상태 값이 수정되지 않습니다. 그러나 현재 변경 기록의 상태 필드에는 새 상태 레이블이 표시됩니다.
| 상태 값 |
새 상태 레이블 |
이전 상태 레이블 |
| -5 |
신규 |
보류 중 |
| -4 |
평가 |
(사용되지 않음) |
| -3 |
승인 |
(사용되지 않음) |
| -2 |
예약됨 |
(사용되지 않음) |
| -1 |
구현 |
(사용되지 않음) |
| 0 |
검토 |
(사용되지 않음) |
| 1 |
(사용되지 않음) |
오픈 |
| 2 |
(사용되지 않음) |
진행 중 |
| 3 |
종결 |
완료 종결 |
| 4 |
취소됨 |
미완료 종결 |
| 7 |
(사용되지 않음) |
건너뛴 채 종결 |
예를 들어, 상태 값이 -5인 기록에는 변경 관리 상태 모델이 활성화되기 전에 보류 중 상태 레이블이 있습니다. 상태 모델이 활성화되면 이러한 기록은 -5의 상태 값을 유지하면서 신규 레이블을 포함합니다. 조직에서 요구하는 변경 관리 프로세스를 상태 모델과 함께 사용하려면 수동으로 또는 스크립트를 통해 상태 값을 기존 변경 기록의 새 레이블에 적절히 업데이트해야 합니다.
또한 이전 상태 레이블을 기반으로 쿼리를 실행하는 모든 보고서를 업데이트하여 새 상태 레이블을 반영해야 합니다.
프로시저
-
상태 필드 값을 이전 상태 레이블에서 신규 상태 레이블로 자동으로 업데이트하려면 다음 예시 스크립트를 사용자 지정한 후 실행합니다.
updateStates();
function updateStates() {
function hasApprovers(changeGr) {
var approverGr = new GlideRecord("sysapproval_approver");
approverGr.addQuery('sysapproval', changeGr.getUniqueValue());
approverGr.query();
return approverGr.getRowCount() > 0;
}
function hasRunningWorkflows(changeGr) {
var workflow = new Workflow();
var workflowGr = workflow.getRunningFlows(changeGr);
var hasRunningFlows = workflowGr.getRowCount() > 0;
return hasRunningFlows;
}
// Old State Model
var PENDING = '-5';
var OPEN = '1';
var CLOSED_COMPLETE = '3';
var CLOSED_INCOMPLETE = '4';
var CLOSED_SKIPPED = '7';
// New State Model
var NEW = '-5';
var ASSESS = '-4';
var AUTHORIZE = '-3';
var SCHEDULED = '-2';
var IMPLEMENT = '-1';
var REVIEW = '0';
var CLOSED = '3';
var CANCELLED = '4';
// Find all change requests
var record = new GlideRecord('change_request');
record.query();
// Update state from old value to new value
while (record.next()) {
switch(record.getValue('state')) {
case OPEN:
if (!hasRunningWorkflows(record) && !hasApprovers(record))
record.state = NEW;
break;
case CLOSED_COMPLETE:
record.state = CLOSED;
record.close_code = "successful";
break;
case CLOSED_SKIPPED:
record.state = CANCELLED;
record.close_code = "unsuccessful";
break;
case CLOSED_INCOMPLETE:
record.state = CLOSED;
record.close_code = "successful_issues";
break;
}
record.autoSysFields(false);
record.setWorkflow(false);
record.update();
}
}
-
기존 변경 요청 기록에서 상태 레이블이 변경되었는지 확인합니다.