Utilizzo di un calcolo per creare un campo singolo dalle Corrispondenze ricerca
È possibile utilizzare l'editor di calcolo per manipolare i dati contenuti in Service Desk o Asset Manager. Questa sezione descrive come creare un calcolo che scorra attraverso la raccolta Corrispondenze ricerca per creare un singolo campo visualizzabile o inviabile via e-mail all'utente appropriato.
Per ulteriori informazioni sull'utilizzo dei calcoli, consultare Calcoli.
La raccolta Corrispondenze ricerca generata dal comportamento Ricerca automatica include in genere vari tipi di oggetti, ad esempio, Incident e Articoli. Tali oggetti presentano attributi diversi, pertanto è difficile scrivere un calcolo che restituisca record da questa raccolta, dato che non si può essere sicuri di quali attributi ci si aspetti di trovare. Ad esempio, Incident contiene un attributo Data generazione ma non l'Articolo, mentre l'Articolo contiene un attributo Efficacia, a differenza dell'Incident. La funzione GetReferencedObject("") nell'editor di calcolo consente di scorrere all'interno della raccolta Corrispondenze ricerca, identificare a quale oggetto si riferisce ciascun record, quindi richiedere attributi appropriati per tale record nella parte successiva del calcolo.
Il calcolo esemplificativo in basso scorre attraverso le righe nella raccolta Corrispondenze ricerca e identifica se la riga corrisponde a un Articolo o a un Incident. Se la riga è un Articolo, genera la stringa Article Title=title, in cui title rappresenta il titolo dell'Articolo; se la riga è un Incident, genera la stringa Incident Id=Id, in cui Id è il Numero di riferimento dell'Incident.
import System
static def GetAttributeValue(Incident):
Value = ""
for item in Incident.SearchMatches:
Value += item.SerialNumber + "="
obj = item.GetReferencedObject("MatchingObject")
if obj.ClassType.FullName == "Articoli della conoscenza":
Value += "Article Title=" + obj.Title
if obj.ClassType.FullName == "IncidentManagement.Incident":
Value += "ID incident" + obj.Id
Value += " / "
return Value
Per prima cosa, la variabile Value viene impostata su vuoto, quindi la riga che inizia con for istruisce sul calcolo in cui far scorrere ciascun item nella raccolta Corrispondenze ricerca sull'oggettoIncident.
Ogni volta in cui il calcolo supera Value +=, il testo generato dal resto di tale riga viene concatenato al termine della stringa corrente archiviata nella variabile Value. Pertanto, la prima volta in cui il calcolo supera la riga Value += item.SerialNumber + "=", legge il SerialNumber del primo elemento (che risulterà essere 1), quindi aggiunge = per generare la stringa 1=.
La riga obj = item.GetReferencedObject("MatchingObject") utilizza la funzione GetReferencedObject("") per impostare la variabile denominata obj in modo che corrisponda all'oggetto per l'elemento nella riga corrente della raccolta. Ciò viene quindi utilizzato dalle istruzioni if più avanti nel calcolo.
if obj.ClassType.FullName == "Knowledge.Article": verifica se l'oggetto restituito nella precedente riga è Knowledge.Article; se l'oggetto restituito NON è Knowledge.Article, il calcolo passa alla riga if obj.ClassType.FullName == "IncidentManagement.Incident": per verificare se l'oggetto restituito è IncidentManagement.Incident.
Se l'oggetto restituito è Knowledge.Article, la riga Value += "Titolo Articolo=" + obj.Title esegue e aggiunge il testo Article.Title=<article title> alla variabile Value (in cui <article title> rappresenta il titolo dell'articolo corrispondente. Se l'oggetto restituito è IncidentManagement.Incident, la riga Value += "Id Incidente=" + obj.Id esegue e aggiunge il testo Incident Id=<incident id> alla variabile Value (in cui <incident.id> rappresenta il Numero di riferimento dell'Incident corrispondente.
La riga Value += " / " aggiunge quindi / al termine della variabile Value, quindi il calcolo ritorna indietro fino al successivo elemento nella raccolta, aggiungendo il record successivo, e così via fino alla fine della raccolta.
Una volta completato il calcolo, avrà generato una stringa del tipo:
1=Titolo articolo=Titolo del primo elemento nella raccolta / 2=Incident.Id=12033 / ...
In questo esempio, il primo elemento nella raccolta Corrispondenze ricerca è un Articolo con il titolo Titolo del primo elemento nella raccolta, mentre il secondo elemento è Incident 12033.
Con il calcolo di esempio, se la raccolta Corrispondenze ricerca contiene elementi diversi da Articoli o Incident, le istruzioni if non troveranno una corrispondenza, e la riga corrispondente risulterà vuota, ad eccezione del numero di serie dell'elemento all'inizio della riga. Per risolvere questa situazione, aggiungere un'altra istruzione if per il nuovo oggetto.