Utilisation d'un calcul pour créer un seul champ à partir de Correspondances de recherche

Vous pouvez utiliser l'éditeur de calcul pour manipuler vos données Service Desk ou Asset Manager. Cette section explique comment créer un calcul qui effectue une itération dans la collection Correspondances de recherche afin de créer un champ unique, pouvant être affiché ou envoyé par e-mail à l'utilisateur approprié.

Pour en savoir plus sur l'utilisation des calculs, consultez Calculs.

La collection Correspondances de recherche générée par le comportement Recherche automatique inclut généralement plusieurs types d'objet, comme des incidents et des articles. Ces objets ont des attributs différents, si bien qu'il est difficile d'écrire un calcul pour renvoyer des enregistrements depuis cette collection, car vous ne savez pas à quels attributs vous attendre. Par exemple, Incident contient l'attribut Déclenché le mais Article ne le possède pas, et Article comporte l'attribut Efficacité, qui n'apparaît pas dans Incident. La fonction GetReferencedObject("") de l'éditeur de calcul vous permet d'effectuer une itération dans la collection Correspondances de recherche afin d'identifier l'objet auquel chaque enregistrement fait référence, puis demander les attributs appropriés de chaque enregistrement dans la portion suivante du calcul.

L'exemple de calcul ci-après examine les lignes de la collection Correspondances de recherche, et détermine si chaque ligne correspond à un article ou à un incident. Si la ligne porte sur un article, cela génère la chaîne Article Title=titre, où titre est le titre de l'article ; si la ligne porte sur un incident, cela génère la chaîne Incident Id=ID, où ID est le numéro de référence de l'incident.

Copier
import System
static def GetAttributeValue(Incident):
    Value = ""
    for item in Incident.SearchMatches:
        Value += item.SerialNumber + "="
        obj = item.GetReferencedObject("MatchingObject")

        if obj.ClassType.FullName == "Knowledge.Article":
            Value += "Article Title=" + obj.Title
        if obj.ClassType.FullName == "IncidentManagement.Incident":
            Value += "Incident Id=" + obj.Id
    Value += " / "
return Value

D'abord, la variable Value est définie sur une chaîne vide, puis la ligne commençant par for demande au calcul d'effectuer une itération dans chaque élément (item) de la collection Correspondances de recherche (SearchMatches) pour l'objet Incident.

À chaque passe du calcul (Value +=), le texte généré par le reste de la ligne est concaténé à la fin de la chaîne actuelle stockée dans la variable de valeur (Value). Ainsi, la première fois que le calcul traite la ligne Value += item.SerialNumber + "=", il lit le numéro de série (SerialNumber) du premier élément (ce sera 1), puis ajoute = pour créer la chaîne 1=.

La ligne obj = item.GetReferencedObject("MatchingObject") utilise la fonction GetReferencedObject("") pour définir la variable nommée obj sur une valeur identique à l'objet de l'élément dans la ligne actuelle de la collection. Ces données sont ensuite utilisées par les instructions if, plus loin dans le calcul.

if obj.ClassType.FullName == "Knowledge.Article": vérifie si l'objet renvoyé dans la ligne précédente est Knowledge.Article ; si l'objet renvoyé n'est PAS Knowledge.Article, le calcul passe à la ligne if obj.ClassType.FullName == "IncidentManagement.Incident": pour vérifier si l'objet renvoyé est IncidentManagement.Incident.

Si l'objet renvoyé est Knowledge.Article, la ligne Value += "Article Title=" + obj.Title s'exécute et ajoute le texte Article.Title=<titre d'article> à la variable Value (<titre d'article> étant le titre de l'article correspondant). Si l'objet renvoyé est IncidentManagement.Incident, la ligne Value += "Incident Id=" + obj.Id s'exécute et ajoute le texte Incident Id=<ID incident> à la variable Value (<ID incident> étant le numéro de référence de l'incident correspondant).

La ligne Value += " / " ajoute ensuite / à la fin de la variable Value, et le calcul effectue une boucle jusqu'à l'élément suivant de la collection, ajoute l'enregistrement suivant, et ainsi de suite jusqu'à la fin de la collection.

À la fin du calcul, la chaîne générée a le format suivant :

1=Article Title=Titre du premier élément de la collection / 2=Incident.Id=12033 / ...

Dans cet exemple, le premier élément de la collection Correspondances de recherche est un article portant le titre Titre du premier élément de la collection et le second élément est l'incident 12033.

Dans cet exemple de calcul, si la collection Correspondances de recherche contient des éléments autres que des articles ou des incidents, les instructions if ne trouvent aucune correspondance et la ligne associée reste vide, à l'exception du numéro de série de l'élément en début de ligne. Vous pouvez corriger le problème en ajoutant une autre instruction if pour le nouvel objet.