Использование вычислений для создания одного поля из соответствий поиска
Вы можете использовать редактор вычислений для обработки данных приложений Service Desk или Asset Manager. В этом разделе представлен процесс создания вычислений, выполняющих обработку коллекции Поиск соответствий, для создания одного поля данных, которое может быть отображено или отправлено по электронной почте соответствующему пользователю.
Для получения дополнительной информации об использовании вычислений см. Вычисления.
Коллекция Поиск соответствий, созданная действием Автоматический поиск, обычно содержит различные типы объектов, например, инциденты и статьи. Эти объекты имеют различные атрибуты, и поэтому трудно составить вычисление для получения списка записей этой коллекции, так как вы не можете знать точно, какие атрибуты будут обнаружены. Например, инцидент содержит атрибут Дата создания в отличие от статьи, в то время как статья содержит атрибут Эффективность, а инцидент нет. Функция GetReferencedObject("") в редакторе вычислений позволяет вам перебрать коллекцию Поиск соответствий для идентификации соответствия каждого объекта в записи и последующего запроса соответствующих атрибутов для данной записи в следующей части вычисления.
Например, в следующем вычислении выполняется последовательность строк в коллекции Поиск соответствий и идентификация того, если строки соответствуют статье или инциденту. Если строка является статьей, генерируется строка Заголовок статьи=заголовок, где заголовок - это заголовок статьи; если строка - это инцидент, генерируется строка ИД инцидента=ИД, где ИД - это справочный номер инцидента.
import System
static def GetAttributeValue(Incident):
Value = ""
for item in Incident.SearchMatches:
Value += item.SerialNumber + "="
obj = item.GetReferencedObject("MatchingObject")
if obj.ClassType.FullName == "Статьи знаний":
Value += "Article Title=" + obj.Title
if obj.ClassType.FullName == "Управление инцидентами.Инцидент":
Value += "ИД инцидента" + obj.Id
Value += " / "
return Value
Во-первых, переменная Value остается незаполненной, а затем строка, которая начинается с for сообщает вычислению перебрать каждый элемент item в коллекции поиска соответствий сбора объекта Incident.
Каждый раз после того, как коллекция передает значение Value +=, текст, созданный остальной частью этой строки, добавляется к концу текущей строки, содержащейся в переменной Value. Поэтому первый раз вычисление передает строку Value += item.SerialNumber + "=", считывает значение SerialNumber первого элемента (который будет равен 1) и добавляет символ = для генерации строки 1=.
В строке obj = item.GetReferencedObject("MatchingObject") используется новая функция GetReferencedObject("") для установки переменной obj, равной объекту для элемента в текущей строке коллекции. Затем она используется позднее в вычислении, если необходимо.
Выражение if obj.ClassType.FullName == "Knowledge.Article": проверяет, если объект, полученный в предыдущей строке - это Knowledge.Article; если полученный объект НЕ Knowledge.Article, вычисление переходит к строке if obj.ClassType.FullName == "IncidentManagement.Incident": для проверки, если полученный объект - это IncidentManagement.Incident.
Если полученный объект - это Knowledge.Article, выполняется строка Value += "Article Title=" + obj.Title и добавляет текст Article.Title=<заголовок статьи> в переменную Value (где <заголовок статьи> это заголовок соответствующей статьи. Если полученный объект - это IncidentManagement.Incident, выполняется строка Value += "Incident Id=" + obj.Id и добавляет текст Incident Id=<ИД инцидента> в переменную Value (where <инцидент.ИД> - это справочный номер соответствующего инцидента.
Затем строка Value += " / " добавляет символ / в конец переменной Value, и вычисление повторяет цикл для следующего элемента коллекции с добавлением следующей записи, и так далее до конца коллекции.
После завершения вычисления создается строка следующей формы:
1=Заголовок статьи=Заголовок первого элемента коллекции / 2=Incident.Id=12033 / ...
В этом примере первый элемент в коллекции Поиск соответствий - это статья с заголовком Заголовок первого элемента коллекции, а второй элемент - это инцидент 12033.
В примере вычисления, если коллекция Поиск соответствий содержит элементы, отличные от статей или инцидентов, элементы логики if не найдут соответствий, и соответствующие строки окажутся пустыми, за исключением элементов серийных номеров в начале строк. Вы можете исправить это, добавив другой элемент if для нового объекта.