Product Documentation

Ricalcolo SLA

Ricalcolo SLA


E' possibile ricalcolare gli SLA per determinati ticket, per farlo basta inserire l'id del ticket sulla tabella TABTicketServiceLevelsToReset.

Questa tabella ha le colonne IDTicket, DateAdded, IDServiceLevel, Instance

 

  • IDTicket: è un dato obbligatorio ed indica il ticket su cui si vuole eseguire il ricalcolo
  • DateAdded: è un dato obbligatorio e viene usato per un ordinamento nel ricalcolo, i record con DateAdded più vecchia verranno ricalcolati per primi
  • IDServiceLevel: non è obbligatorio e serve per ricalcolare gli SLA in un ticket solo per un determinato livello di servizio (usato ad esempio quando si crea un nuovo livello di servizio)
  • Instance: di default viene inserito a NULL, viene utilizzato solo nel caso si voglia eseguire un ricalcolo massivo di un gran numero di ticket, suddividento il ricalcolo in vari worker, in questo caso nel file configuration.xml dei vari worker va inserito il numero di istanza nel parametro RecalculationInstance, ogni servizio si preoccuperà quindi di eseguire il ricalcolo solo della propria coda, di seguito  una query per eseguire il dispatch automatico dei ricalcoli nelle varie code nell'esempio viene considerato il caso di una batteria di 5 servizi per il ricalcolo:

Per utenti esperti


OPEN CUR

DECLARE @Instances TABLE(Instance INT NOT NULL PRIMARY KEY CLUSTERED)
INSERT INTO @Instances(Instance) VALUES(1)
INSERT INTO @Instances(Instance) VALUES(2)
INSERT INTO @Instances(Instance) VALUES(3)
INSERT INTO @Instances(Instance) VALUES(4)
INSERT INTO @Instances(Instance) VALUES(5)
DECLARE @Instance INT

FETCH NEXT FROM CUR INTO @IDTicket, @DateAdded

WHILE @@FETCH_STATUS = 0
BEGIN
--SQL STATEMENT
SET @Instance = NULL
SELECT
TOP 1 @Instance = A.Instance
FROM
@Instances A
LEFT JOIN
TABTicketServiceLevelsToReset B WITH(NOLOCK) ON A.Instance = B.Instance
GROUP BY
A.Instance
ORDER BY
COUNT(IDTicket)

UPDATE TABTicketServiceLevelsToReset SET Instance = @Instance WHERE IDTicket = @IDTicket
FETCH NEXT FROM CUR INTO @IDTicket, @DateAdded
END
CLOSE CUR;
DEALLOCATE CUR;
END

N.B. È preferibile separare il servizio di calcolo runtime dal servizio di ricalcolo in modo che un eventuale ricalcolo non provochi dei delay nel calcolo Runtime. Fare riferimento alla guida di Installazione per la creazione dei due worker distinti.