Usar um cálculo para criar um campo único a partir das Correspondências de Pesquisa
Você pode usar o editor de cálculos para manipular dados do Service Desk ou do Asset Manager. Esta seção descreve como criar um cálculo que itere a coleção Correspondências de Pesquisa para criar um campo único que possa ser exibido ou enviado por e-mail a um determinado usuário.
Para obter mais informações sobre o uso de cálculos, consulte Cálculos.
A coleção Correspondências de Pesquisa gerada pelo comportamento Pesquisa Automática inclui geralmente diferentes tipos de objeto – por exemplo, Incidentes e Artigos. Esses objetos têm diferentes atributos, e por isso é difícil criar um cálculo que retorna registros dessa coleção, uma vez que não é possível ter certeza quais atributos você espera encontrar. Por exemplo, o Incidente contém um atributo Levantar Data, mas o Artigo, não, enquanto o Artigo contém um atributo Eficiência, mas o Incidente, não. A função GetReferencedObject("") do editor de cálculos permite que você faça iterações através da coleção Correspondências de Pesquisa, identificando a qual objeto cada registro se refere, e solicite atributos adequados para cada registro na próxima parte do cálculo.
O exemplo de cálculo abaixo faz iterações através das linhas da coleção Correspondências de Pesquisa e identifica se a linha corresponde a um Artigo ou a um Incidente. Se a linha for um Artigo, ela gera a string título do artigo=tiítulo, onde tiítulo é o título do Artigo; se a linha for um Incidente, ela gera a linha ID incidente=Id, onde Id é o número de referência do Incidente.
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
Primeiro, a variável Value é definida como em branco; em seguida, a linha de início for instrui o cálculo para fazer iterações através de cada item na coleção Correspondências de Pesquisa no objeto Incident.
Todas as vezes que o cálculo passar pelo Value +=, o texto gerado pelo resto da linha será concatenado ao final da string atual armazenada na variável Value. Portanto, a primeira vez que o cálculo passar pela linha Value += item.SerialNumber + "=", ele lerá o SerialNumber do primeiro item (que será 1) e adicionará = para gerar a string 1=.
A linha obj = item.GetReferencedObject("MatchingObject") usa a função GetReferencedObject("") para que a variável chamada obj receba o objeto do item na linha atual da coleção. Ela, então, será usada pelas instruções "se" mais adiante no cálculo.
if obj.ClassType.FullName == "Knowledge.Article": testa se o objeto que retornou na linha anterior é Knowledge.Article; se o objeto que retornou NÃO for Knowledge.Article, o cálculo avança para a linha if obj.ClassType.FullName == "IncidentManagement.Incident": para testar se o objeto que retornou é IncidentManagement.Incident.
Se o objeto que retornou for Knowledge.Article, a linha Value += "título do artigo=" + obj.Title será executada e adicionará o texto Article.Title=<título do artigo> à variável Value (onde <título do artigo> é o título do artigo correspondente. Se o objeto que retornou for IncidentManagement.Incident, a linha Value += "Incident Id=" + obj.Id será executada e adicionará o texto Incident Id=<ID do incidente> à variável Value (onde <ID do incidente> é o número de referência do Incidente correspondente.
A linha Value += " / ", então, adiciona / ao final da variável Value, e o cálculo volta para o próximo item da coleção, adicionando o próximo registro, e assim por diante até o final da coleção.
Quando o cálculo estiver concluído, ele terá gerado uma string no formato:
1=título do artigo=Título do primeiro item na coleção / 2=Incident.Id=12033 / ...
Neste exemplo, o primeiro item na coleção Correspondências de Pesquisa é um Artigo com o título Título do primeiro item na coleção, e o segundo item é o Incidente 12033.
Com exemplo de cálculo, se a coleção Correspondências de Pesquisa contiver itens diferentes de Artigos ou Incidentes, as instruções if não encontrarão uma correspondência, e a linha correspondente ficará em branco, salvo pelo número de série do item no começo da linha. Você pode corrigir isso adicionando outra instrução if para o novo objeto.