Hej! Czy jest tu jakiś ServiceNow developer, który ogarnia workflow? Szukam kogoś kto umiałby odpowiedzieć na parę pytań. Pozdrawiam :)
Spytaj tutaj, jak ktoś coś wie to może się przyda dla potomnych.
A zatem pytanie:
Mam tabelę Order (rozszerza Task) i Order Task (rozszerza Order) i muszę zrobić workflow dla Order.
Pierwszy krok: mam poprosić o zatwierdzenie managera osoby podanej w 'requested for'. A jeśli osoba otwierająca ticket jest tym managerem to żeby było autozatwierdzenie. Po zatwierdzeniu tworzy mi się nowy Order Task, a status Order zmienia na 'In progress'.
Mój kod działa w tym momencie źle bo wchodzę jako manager, tworzę ticket, w Approval zmienia mi się na Approved, ALE w Approvers zamiast Requested powinnam mieć Approved:
Magia dzieje się dalej bo kiedy (nadal jako manager) tworzę nowy Order to automatycznie zatwierdza mi się właśnie ten pierwszy, wcześniej utworzony- i dla tego pierwszego tworzy się też Order Task oraz stan zatwierdzonego Order zmienia się na In progress.
Nie wiem co mam źle w kodzie, może ktoś jest w stanie podpowiedzieć:
(function() {
var requestedFor = new GlideRecord('sys_user');
requestedFor.get(current.u_reference_1);
if (requestedFor.isValidRecord()) {
var managerSysId = requestedFor.u_manager;
var currentUserSysId = gs.getUserID();
if (currentUserSysId == managerSysId) {
current.approval = 'approved';
var numberCurrent = current.number;
gs.info('my log, current Order number: ' + numberCurrent);
var currentSysId = current.sys_id;
gs.info('my log, currentSysId: ' + currentSysId);
// change record by number, in table sysapproval_approver
var approvalGR = new GlideRecord('sysapproval_approver');
// approvalGR.addQuery('sysapproval', currentSysId);
//approvalGR.addQuery('approver', managerSysId);
approvalGR.addQuery('number', '=', numberCurrent);
approvalGR.query();
gs.info('My log, approvalGR.getRowCount() ' + approvalGR.getRowCount());
gs.info('approvalGR.state ' + approvalGR.state);
while (approvalGR.next()) {
approvalGR.state = 'approved';
approvalGR.update();
gs.info('approvalGR.state ' + approvalGR.state);
gs.info('Approval record for ' + approvalGR.sysapproval.getDisplayValue() + ' has been auto-approved.');
}
} else {
gs.info("Manager sys_id is not found");
}
} else {
gs.info("Requested_for user not found or invalid");
}
})();