Argomento precedente: AgentiArgomento successivo: Creazione dei moduli di business logic


Output - Tabelle utente

Lo script di business logic standard non dispone dell'accesso alle tabelle di output esterne. Esistono solo due destinazioni di output:

L'utilizzo della tabella esterna T_SLALOM_OUTPUTS è obbligatorio quando sono necessari altri output oltre il risultato periodico del livello di servizio, quando l'output aggiuntivo non è disponibile con l'aggiunta di un'altra metrica, o quando l'aggiunta di un'altra metrica riduce il calcolo delle prestazioni, utilizzando lo stesso insieme di record, solo per fornire un output diverso.

Ad esempio, considerare il caso in cui una metrica è impostata per calcolare la percentuale di ticket risolti in meno di un giorno e deve essere generato un report con l'elenco di tutti i ticket non risolti in meno di un giorno, è necessario che la formula restituisca come output ogni ticket rilevato come non riuscito in una tabella esterna, oltre ad aggiungerlo alle statistiche di calcolo.

Con questo requisito, la tabella del livello di servizio di output normale non può fornire questo output, perché:

I record vengono scritti nelle tabelle utente di output solo per l'agente che è in esecuzione per il periodo di riferimento della metrica e che calcola eccezioni e correzioni. Ad esempio, se la metrica è definita con un periodo di riferimento mensile, quindi le istruzioni di output (Tools.SaveRecord e Tools.SaveFields) NON vengono eseguite quando il motore sta eseguendo la formula per le altre granularità quali HOUR, DAY, WEEK, QUARTER e YEAR.

Un ulteriore vantaggio di avere questa tabella esternamente è che può essere utilizzata per i requisiti di più report. Altri requisiti di report tipici possono essere generati da queste tabelle oltre ai requisiti contrattuali. Ad esempio, una metrica che calcola il numero di ticket chiusi in un mese potrebbe anche calcolare il tempo di risoluzione del ticket e fornire l'output di tutte queste informazioni nella tabella di output. In questo modo è consentita un'analisi più dettagliata dei singoli ticket chiusi durante il periodo, insieme alle informazioni aggiuntive che potrebbero essere necessarie per un requisito di report diverso.

Le informazioni contenute in tali tabelle sono inoltre gestite dal meccanismo di ricalcolo del motore. Durante il processo di ricalcolo, i record vengono contrassegnati come non attivi e viene scritta una nuova riga al loro posto. È un punto importante da notare poiché tutte le istruzioni SQL dei report in formato libero devono includere un segno di spunta nel campo IS_ACTIVE nella tabella T_SLALOM_OUTPUTS (in cui is_active = 1) dal momento che solo questi record sono attuali.

Nota: durante l'esecuzione dell'ambito di business logic nel processo di debug delle formule, i messaggi vengono in realtà scritti nella tabella T_DEBUG_SLALOM_OUTPUTS invece che nella tabella T_SLALOM_OUTPUTS.

Durante la documentazione dei dati tramite T_SLALOM_OUTPUTS, i dati inseriti sono sempre testo (poiché i campi di T_SLALOM_OUTPUTS sono tutti varchar2). Di conseguenza, i valori di data vengono convertiti in testo applicando il formato del sistema operativo che potrebbe variare durante il ciclo di vita dell'applicazione. T_SLALOM_OUTPUTS potrebbe pertanto risentire delle incongruenze nei formati di data. Inoltre, la business logic gestisce le date in UTC, mentre ci si potrebbe aspettare che T_SLALOM_OUTPUTS contenga la data/ora locale, pertanto in alcuni casi potrebbe essere necessario per utilizzare la funzione di conversione Tools.GetLocaleDate(date) per risolvere questo problema.

La seguente funzione converte le date in ora locale e mantiene la coerenza del formato di data formattando le date al formato "dd/mm/yyyy hh24:mi:ss":
Function FormatDate(time)
     Dim LocalTime
     LocalTime=Tools.GetLocaleTime(time)
     FormatDate=Day(LocalTime) & "/" & Month(LocalTime) & "/" &
  Year(LocalTime) & " " & _
     Hour(LocalTime) & ":" & Minute(LocalTime) & ":" & Second(LocalTime)
End Function

Esistono due metodi che possono essere utilizzati per scrivere nella tabella esterna dall'interno della formula di business logic:

Entrambi i metodi dell'oggetto Tools sono descritti di seguito in modo più dettagliato:

Tools.SaveRecord tableName, key,[val1],[val2],…

Questo metodo consente di salvare un record in una tabella denominata T_SLALOM_OUTPUTS. Il parametro tableName (Nome tabella) specifica la tabella (virtuale) all'interno di T_SLALOM_OUTPUTS in cui devono essere scritte le informazioni. Ogni record nella tabella utente ha una chiave univoca che specifica il record in cui devono essere scritte le informazioni. Inoltre, ogni record presenta fino a 20 campi con valore di tipo stringa. Il metodo SaveRecord riceve un nome di tabella utente e una chiave. Accetta inoltre tutti i campi valore nella tabella utente. Questi parametri di valore sono facoltativi e possono essere omessi. Se un record con la stessa chiave esiste già, verrà aggiornato. Solo i campi valore trasferiti come parametri vengono aggiornati. Se un record con questa chiave non esiste, verrà creato.

Tools.SaveFields tableName, key, [fieldName1,fieldVal1], [fieldName2,fieldVal2]

Questo metodo è simile a SaveRecord, ma invece di enumerare tutti i valori, fornisce coppie di nomi di campo e i relativi valori di campo. I numeri del campo possono sostituire i nomi di campo. I nomi di campo devono essere definiti manualmente in precedenza nella tabella T_SO_FIELD_NAMES. Questa tabella viene utilizzata per registrare la struttura delle tabelle di output.

È consigliabile che l'esperto di business logic definisca la struttura della tabella di output prima della scrittura in T_SLALOM_OUTPUTS, perché così la struttura e il significato dei campi sono già ben definiti e renderanno l'esecuzione della query molto più semplice.

La struttura della tabella comprende:

L'utilizzo del metodo SaveFields è preferibile poiché conserva la documentazione della struttura e il significato dei valori inseriti.

Esempio:

Considerare un caso in cui è necessario generare un elenco di tutti gli incidenti con il tempo di risoluzione superiore alla soglia definita, oltre al risultato della metrica che calcola la percentuale di ticket risolti entro tale soglia. La scrittura nelle tabelle di output tabelle verrà eseguita nella procedura del gestore eventi OnXXXEvent dopo la convalida della soglia.

Viene illustrato nell'esempio seguente:

Sub OnIncidentEvent(eventDetails)
                                     
    If eventDetails("RESOLUTION_TIME")<=SThreshold Then
     CountSuccessIncident s= CountSuccessIncidents+1
    Else
building the record unique key
     KeyString= eventDetails("IncidentID") &eventDetails.Time	

        Tools.SaveFields "IncidentsTable", KeyString, "CASE_ID",
    eventDetails("CASE_ID"),_
           "CUSTOMER_REF",eventDetails("CUSTOMER_REF"),_
           "TICKET_CREATOR",eventDetails("TICKET_CREATOR"),_
           "CREATION_TIME",eventDetails("CREATION_TIME"),_
           "SEVERITY",eventDetails("SEVERITY"),_
           " RESOLUTION_TIME ",eventDetails("RESOLUTION_TIME "),_
           "CLOSE_TIME",eventDetails("CLOSE_TIME")
    End If
End Sub

Di seguito sono riportati alcuni suggerimenti relativi all'uso delle tabelle T_SLALOM_OUTPUTS:

Nota: la scrittura nelle tabelle di output può avere effetto sulle prestazioni del motore, poiché la scrittura di una tabella è un'operazione computazionale complessa, rispetto a un calcolo in memoria. Pertanto, considerare con attenzione se e in quali casi è necessario utilizzare questa funzionalità, quindi ridurre al minimo il numero di volte in cui si esegue l'accesso alle tabelle.

Report sulle informazioni dalle tabelle definite dall'utente

Non è possibile utilizzare la procedura guidata di creazione report CA Business Service Insight standard per i report sulle informazioni scritte nelle tabelle di output. Per generare report su queste informazioni è necessario creare un report in formato libero. In sostanza, implica la creazione di una query SQL nella parte superiore di questa tabella. Siccome la tabella contiene molte tabelle logiche che vengono scritte da varie formule, è consigliabile che un utente che abbia dimestichezza con SQL (esperto delle sorgenti dati) crei una visualizzazione di T_SLALOM_OUTPUTS in modo da distinguere facilmente le diverse tabelle logiche contenute e verificare inoltre che le informazioni siano recuperate come pianificato.

La definizione della visualizzazione avrà già tutto l'insieme dei campi di tipo stringa per le informazioni di tipo pertinente e conterrà inoltre tutti i filtri necessari (tabella logica, record attivi, metrica pertinente, ecc.).

Di seguito è riportato un esempio di creazione della visualizzazione:

create or replace view kpi_view as
select
     to_date(t...) as fieldName,
     to_number(t..), …
from t_slalom_outputs t,
     t_rules r,
     t_sla_versions sv,
     t_slas s,
where table_name = 'TableName'
     and is_active = 1
     and t.rule_id = r.psl_rule_id
     and r.sla_version_id = sv.sla_version_id
     and sv.sla_id = s.sla_id
     and sv.status = 'EFFECTIVE'