Usar un cálculo para crear un campo único desde Buscar correspondencias

Puede utilizar el editor de cálculo para manipular los datos de Service Desk o Asset Manager. Esta sección describe cómo crear un cálculo que itere por la colección Buscar correspondencias para crear un campo único que se pueda mostrar o enviar por correo electrónico al usuario adecuado.

Para obtener más información acerca del uso de cálculos, consulte Cálculos.

La colección Buscar correspondencias que se genera con el comportamiento Búsqueda automática suele incluir tipos de objetos diferentes, por ejemplo, Incidencias y artículos. Estos objetos tienen atributos diferentes, por eso es difícil escribir un cálculo que devuelva registros de esta colección, ya que no puede estar seguro de qué atributos espera encontrar. Por ejemplo, Incidencia contiene un atributo Elevar Fecha pero no así Artículo; mientras que Artículo contiene un atributo Eficacia pero Incidencia, no. La función GetReferencedObject("") del editor de cálculos le permite iterar a través de la colección Buscar correspondencias, identificando a qué objeto se refiere cada registro, y a continuación solicitar los atributos adecuados para dicho registro, en la siguiente parte del cálculo.

El siguiente ejemplo de cálculo itera a través de las columnas de la colección Buscar correspondencias e identifica si la columna se corresponde con un Artículo o con un Incidencia. Si la columna es un Artículo, genera el comando Título de Artículo=title, donde title es el título del Artículo; si la columna es una Incidencia, genera el comando ID de incidencia=Id, donde Id es el Número de referencia de la Incidencia.

Copiar
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

En primer lugar, la variable Value se ajusta en blanco, luego la línea que empieza con for indica al cálculo que debe iterar a través de cada item de la colección Buscar correspondencias en el objeto Incidencia.

Cada vez que el cálculo pasa Value +=, el texto que genera el resto de la línea se concatena hasta el final del comando actual guardado en la variable Value. Así que la primera vez que el cálculo pasa la línea Value += item.SerialNumber + "=", lee el SerialNumber del primer elemento, que será 1, y agrega = para generar el comando 1=.

La línea obj = item.GetReferencedObject("MatchingObject") utiliza la función GetReferencedObject("") para ajustar la variable denominada obj para que sea igual al objeto del elemento de la columna actual de la colección. Entonces, las instrucciones if utilizan estos en el cálculo.

if obj.ClassType.FullName == "Knowledge.Article": prueba si el objeto devuelto en la línea anterior es Knowledge.Article; si el objeto devuelvo NO es Knowledge.Article, el cálculo avanza a la línea if obj.ClassType.FullName == "IncidentManagement.Incident": para probar si el objeto devuelto es IncidentManagement.Incident.

Si el objeto devuelto es Knowledge.Article, la línea Value += "Título del artículo=" + obj.Title ejecuta y agrega el texto Article.Title=<título del artículo> en la variable Value, donde <título del artículo> es el título del artículo correspondiente. Si el objeto devuelto es IncidentManagement.Incident, la línea Value += "ID de incidente=" + obj.Id ejecuta y agrega el texto Incident Id=<ID de incidente> a la variable Value, donde <ID de incidente> es el Número de referencia de la incidencia correspondiente.

Entonces, la línea Value += " / " agrega / al final de la variable Value, y el cálculo accede al elemento siguiente de la colección, y agrega el registro siguiente, y así hasta el final de la colección.

Cuando se completa el cálculo, se habrá generado un comando con el formato:

1=Título del artículo=Título del primer elemento de la colección / 2=Incident.Id=12033 / ...

En este ejemplo, el primer elemento de la colección Buscar correspondencias es un Artículo con el título Título del primer elemento de la colección y el segundo elemento es Incidencia 12033.

Con el cálculo de ejemplo, si la colección Buscar correspondencias contiene elementos diferentes a Artículos o Incidencias, las instrucciones if no encontrarán una correspondencia y la línea correspondiente estará en blanco, excepto el elemento del número de serie que aparece en el inicio de la línea. Esto se puede solucionar agregando otra instrucción if para el nuevo objeto.