Перейти к содержанию

Операторы правил автоматизации

Для использования в выражениях в правилах автоматизации доступно множество операторов. Они сгруппированы по типам и приведены ниже вместе с примерами использования. Для удобства администраторов и разработчиков информация дублируется на английском языке.

Логические операторы (Boolean Operators)

  • a or b
  • a and b
Примеры выражений Результат
a or b   (например, если a истинно, то b либо истинно, либо ложно (e.g. a is true, b is either true or false)) истина (true)
a or b   (например, если b истинно, то a либо истинно, либо ложно (e.g. b is true, a is either true or false)) истина (true)
a or b   (например, a ложно, и b ложно. (e.g. a is false, and b is false)) ложь (false)
a and b   (например, а истинно, и b истинно (e.g. a is true, and b is true)) истина (true)
a and b   (например, а ложно, и/или b ложно (e.g. a is false and/or b is false)) ложь (false)

Сравнение - Равенство (Comparison – Equality)

  • value-a = value-b
  • value-a != value-b
Примеры выражений Результат
'text' = 'text' истина (true)
'text' != 'text' ложь (false)
'' = 'text' ложь (false)
'text' = "" ложь (false)
'' = "" истина (true)
"a\"b" = 'a"b' истина (true)
'a\'b' = "a'b" истина (true)
status = in_progress истина (true)
status = assigned ложь (false)
team = 'Database Administration' истина (true)
team = 9 ложь (false)
team.id = 9 истина (true)
team.id = 12 ложь (false)

Сравнение - Меньше, Больше (Comparison – Less than, Greater than)

  • value-a < value-b
  • value-a <= value-b
  • value-a > value-b
  • value-a >= value-b
Примеры выражений Результат
‘a’ < ‘a’ ложь (false)
‘a’ <= ‘a’ истина (true)
‘a’ > ‘a’ ложь (false)
‘a’ >= ‘a’ истина (true)
‘a’ < ‘b’ истина (true)
‘b’ > ‘a’ истина (true)
‘a’ > ‘b’ ложь (false)
‘’ < ’text’ истина (true)
‘text’ > ’’ истина (true)
status < completed истина (true)
status < registered ложь (false)
completed < status ложь (false)
registered < status истина (true)
team < ‘Application Development’ ложь (false)
team < ‘Service Desk’ истина (true)
‘Application Development’ < team истина (true)
‘Service Desk’ < team ложь (false)
team.id < 100 истина (true)
team.id < 1 ложь (false)
100 < team.id ложь (false)
1 < team.id истина (true)

Сравнение - Содержит (Comparison – Contains)

  • value in array
  • value not_in array
Примеры выражений Результат
a in [a,b] истина (true)
a not_in [a,b] ложь (false)
b in [a,b] истина (true)
c in [a,b] ложь (false)
ab in [a,b] ложь (false)
ab in [] ложь (false)
’’ in [] истина (true)
’’ in [a,b] ложь (false)
’’ in [a,,b] истина (true)
a in [ a , b ] истина (true)
status in [in_progress] истина (true)
status in [assigned, accepted, in_progress, waiting_for_customer] истина (true)
status in [assigned,completed] ложь (false)
team in [Application Development,Database Administration,Service Desk] истина (true)
team in [Application Development,Service Desk] ложь (false)
team.id in [8,9,10] истина (true)
team.id in [11,12,13] ложь (false)
11.0 in [11,12,13] истина (true)
11 in [11.0,12.0,13.0] истина (true)
team.id in [8.0,9.0,10.0] истина (true)
team.id in [8.1,9.1,10.1] ложь (false)

Сравнение - Аналогично (Comparison – Similar to)

    • is the ‘contains’ operator
  • ^ is the ‘starts_with’ operator
  • $ is the ‘ends_with’ operator
Примеры выражений Результат
‘ivan.ivanov@proproduct.ru’ *= ‘ivanov’ истина (true)
‘ivan.ivanov@proproduct.ru’ ^= ‘ivanov’ ложь (false)
‘ivan.ivanov@proproduct.ru’ *= ‘ivan’ истина (true)
‘ivan.ivanov@proproduct.ru’ ^= ‘ivan’ истина (true)
‘ivan.ivanov@proproduct.ru’ $= ‘ivan’ ложь (false)
‘ivan.ivanov@proproduct.ru’ $= ‘proproduct’ ложь (false)
‘ivan.ivanov@proproduct.ru’ $= ‘proproduct.ru’ истина (true)

Сравнение - Присутствие (Comparison – Presence)

  • value is_blank
  • value is_present
Примеры выражений Результат
team.name is_blank ложь (false) (название команды обязательно, так как оно должно содержать значение (as the team name is required as must contain a value))
request.custom_fields.my_date is_present истина (true), если поле расширения UI «my_date» определено и содержит непустое значение (when the UI extension field “my_date” is defined and contains a non-empty value), ложь (false) в противном случае (otherwise)

Формулы (Formulas)

    • is the ‘add’ or ‘concatenate’ operator
    • is the ‘subtract’ operator
    • is the ‘multiply’ operator
  • / is the ‘divide’ operator
  • % is the ‘modulo’ operator

Обратите внимание, что знак "+" действует как оператор "конкатенации", если значение слева от него является текстовой строкой. В противном случае он действует как оператор "сложения" (Note that + acts as the ‘concatenate’ operator when the value to its left is a text string. Otherwise, it acts as the ‘add’ operator).

Примеры выражений Результат
1 + 1 2.0
2 – 1 1.0
2 * 5 10.0
6 / 3 2.0
15 % 6 3.0
1 1 1 + 1 4.0
1 + 2 * 6 % 4 5.0
‘start’ + ‘_at’ + ’ field’ поле "start_at" (start_at field)
1 + team.name 1.0
1 + team.id 8.0
2.0 + team 9.0
team + 3.0 10.0
created_at + 3.days 3 дня после даты создания (3 days after the creation date)
team.id + ’ – ’ + team.name 7.0
’’ + team.id + ’ – ’ + team.name 7 – Сервис Деск (Service Desk)
‘{{team_id}} – {{team_name}}’ 7 – Сервис Деск (Service Desk)
created_at – 4.hours за 4 часа до даты создания (4 hours before the creation date)
5 / 5 1.0
5 / 0 ноль (nil)

Путь для получения переменной (Path for Retrieving a Variable)

Выражение, извлекающее переменную, всегда начинается с записи, для которой определено правило автоматизации (An expression that retrieves a variable always starts from the record for which the automation rule is defined).

Примеры выражений Результат
status согласованный (approved)
workflow.status прогресс приостановлен (progress_halted)
created_at 2017-09-12T14:00:00Z
planned_duration 8
workflow.tasks[first] 1-я задача рабочего процесса (1st task of the workflow)
workflow.tasks[1] 1-я задача рабочего процесса (1st task of the workflow)
workflow.tasks[last] последняя задача рабочего процесса (last task of the workflow)
workflow.tasks[-1] последняя задача рабочего процесса (last task of the workflow)
workflow.tasks[#20122] задача с идентификатором 20122 в рабочем процессе (task with ID 20122 of the workflow)
workflow.tasks[1].custom_fields.name значение поля расширения UI с идентификатором «name» из задачи рабочего процесса (the value of the UI extension field with ID ‘name’ from the workflow’s task)
workflow.tasks[1].custom_fields.你好,世界 значение поля расширения UI с идентификатором «你好,世界» из задачи рабочего процесса (the value of the UI extension field with ID ‘你好,世界’ from the workflow’s task)
workflow.tasks[#20122].subject Изменить согласование контролера (Change controller approval)
workflow.tasks[“Change controller approval”].id 20122.0
workflow.tasks[‘Change controller approval’] 20122.0
workflow.tasks[first].notes[first].text текст из первого комментария первой задачи рабочего процесса (the text from the first note of the first task of the workflow)
workflow.tasks[first].notes[first].person.name имя лица, которое добавило первый комментарий первой задачи рабочего процесса (the name of the person who added the first note of the first task of the workflow)

Путь для извлечения коллекции (Path for Retrieving a Collection)

Выражение, извлекающее коллекцию, всегда начинается с записи, для которой определено правило автоматизации, или использует операцию find_all (An expression that retrieves a collection always starts from the record for which the automation rule is defined, or makes use of the find_all operation).

Примеры выражений Результат
cis Все КЕ, связанные с текущей задачей (All cis related to the current task)
workflow.requests[first].cis Все КЕ, связанные с первым запросом рабочего процесса (All cis related to the first request of the workflow)
cis.size Количество КЕ, связанных с текущей задачей (The number of CIs related to the current task)
cis.count Количество КЕ, связанных с текущей задачей (The number of CIs related to the current task)
workflow.tasks.select(status = registered) Задачи рабочего процесса, имеющие статус "Зарегистрировано" (The workflow’s tasks that have the registered status)
workflow.tasks.reject(status = registered) Задачи рабочего процесса, не имеющие статус "Зарегистрировано" (The workflow’s tasks that do not have the registered status)
workflow.tasks.select(status = failed) + workflow.tasks.select(status = rejected) Задачи рабочего процесса со статусом «Сбой» в сочетании с задачами рабочего процесса со статусом «Отклонено» (The workflow’s tasks that have the failed status combined with the workflow’s tasks that have the rejected status)
cis.empty? Истина, если к текущей задаче не привязаны никакие КЕ, ложь в противном случае (true if there are no CIs linked to the current task, false) otherwise
cis.any? Истина, если к текущей задаче привязана хотя бы одна КЕ, ложь в противном случае (true if there is at least one CIs linked to the current task, false otherwise)
cis.any?(status = in_production) Истина, если к текущей задаче привязаны какие-либо КЕ со статусом в производстве, ложь в противном случае. Возвращает ложь, если к задаче не привязаны никакие КЕ (true if there are any CIs linked to the current task with an in_production status, false otherwise. Returns false when there are no CIs linked to the task)
cis.all?(status = in_production) Истина, если все КЕ, связанные с текущей задачей, имеют статус "в производстве", ложь в противном случае. Возвращает истина, если к задаче не привязаны никакие КЕ (true if all CIs linked to the current task have an in_production status, false otherwise. Returns true when there are no CIs linked to the task)
cis.none?(status = in_production) Истина, если к текущей задаче не привязаны КЕ со статусом "в производстве", ложь в противном случае. Возвращает истина, если к задаче не привязаны КЕ (true if there are no CIs linked to the current task with an in_production status, false otherwise. Returns true when there are no CIs linked to the task)
workflow.tasks.select(category = approval).reject(finished_at != nil) Все задачи согласования, связанные с рабочим процессом, которые еще не завершены (All approval tasks linked to the workflow that are not yet completed)
workflow.tasks.select(category = implementation).map(member) Все участники задач внедрения, связанных с рабочим процессом (All members of implementation tasks linked to the workflow)
person.permissions.detect(account = ‘dc’).workflow_manager Является ли это лицо менеджером рабочих процессов в пространстве ЦОД? (Is the person a workflow manager in the data center account?)

Извлечение несвязанных записей (Retrieving unrelated records)

Для извлечения записей, не связанных с записью, для которой определено правило автоматизации, доступны следующие функции поиска (The following lookup functions are available to retrieve records that are unrelated to the record for which the automation rule is defined).

Примеры выражений Результат
find(person, ‘singileeva.klavdiya@pro-product.ru’) Сингилеева Клавдия (Singileeva Klavdiya)
find(person, ‘singileeva.klavdiya@pro-product.ru’).job_title Должность Сингилеевой Клавдии (The job title of Singileeva Klavdiya)
find(person, workflow.requests[first].custom_fields.email) Запись лица, основанная на адресе электронной почты, указанном в поле электронной почты расширения UI первого запроса, связанного с рабочим процессом (A person record based on the email address provided in the email field of the UI Extension of the first request related to the workflow)
find(service_instance, 2334) Экземпляр услуги с идентификатором 2334 (The service instance with id 2334)
find(service_instance, ‘Minsk Network’) Экземпляр услуги "Сеть Минска" (The Minsk Network service instance)
find(ci, predecessors[first].custom_fields.ci_id) Поиск КЕ на основе идентификатора КЕ, выбранного в расширении UI предшествующей задачи (Find the CI based on the ci_id that was chosen in a UI Extension of the predecessor task)
find(ci, ‘unknown’) Ноль (nil)
find_all(person, ‘Singileeva Klavdiya’) Список всех лиц с именем Сингилеева Клавдия (An array of all people with the name Singileeva Klavdiya)
find_all(ci, custom_fields.impacted_assets) Массив всех КЕ, выбранных в поле расширений UI с несколькими вариантами ответов (An array of all CIs chosen in a multi-suggest UI Extension field)
search(ci, ‘SPARCS’).detect(status = in_production) Массив всех КЕ, находящихся в эксплуатации, из списка, содержащего не более 50 элементов, полученных с помощью глобального поиска по ключевому слову «SPARCS» (An array of all CIs that are in production, from a list of at most 50 cis that are retrieved using global search with keyword ’SPARCS").

Манипуляции со строками (String Manipulation)

Примеры выражений Результат
’ hello’.lstrip Удаляет начальный пробел (‘hello’ Removes leading whitespace).
’hello ’.rstrip Удаляет пробелы в конце строки (‘hello’ Removes trailing whitespace).
‘hello’.start_with?(‘hell’) Истина. Истина, если строка начинается с одного из указанных суффиксов (true True if string starts with one of the suffixes given).
‘hello’.end_with?(‘lo’) Истина. Истина, если строка заканчивается одним из указанных суффиксов (true True if string ends with one of the suffixes given).
‘table’.match?(‘bl’) Истина. Значение "Истина", если шаблон найден в строке (true True if pattern is matched in string).
s=‘foo’, s.include?(‘f’) Истина. Истина, если self содержит другую строку (true True if self contains other string).
s=‘foo’, s.exclude?(‘t’) Истина. Истина, если self не содержит другую строку (true True if self does not contain other string).
‘hello’.ljust(10) Если целое число больше длины строки, возвращает строку с заполнением по левому краю (’hello ’ If integer is greater than length of string, returns padded string, left justified).
‘hello’.rjust(10, ‘oh’) Если целое число больше длины строки, возвращает строку с заполнением, выравниваемую по правому краю (‘ohohohello’ If integer is greater than length of string, returns padded string, right justified).
subject.size Количество символов 28 (28 Number of characters).
subject.length Количество символов 28 (28 Number of characters).
’ spacey string ’.strip Удалить начальные и конечные пробелы (‘spacey string’ Remove leading and trailing white spaces).
’ spacey string ’.squish Заменить несколько пробелов одним пробелом и удалить начальные и конечные пробелы (‘spacey string’ Replace multiple spaces with a single space and removes leading and trailing white spaces).
’ spaceeeey ssstring ’.squeeze Заменить последовательности одинаковых символов одним символом (’ spacey string ’ Replace runs of the same character by a single character).
‘desserts’.reverse Поменять символы местами (‘stressed’ Flip the characters around).
‘r-service’.upcase Все буквы заглавные (All capitals).
‘R-SERVICE’.downcase Все строчные буквы (All lower case).
‘hI tHERE’.swapcase Строчные буквы в заглавные и наоборот (‘Hi There’ Lower case to capitals and vice versa).
’ ’.empty? Истина. Возвращает "истина", если строка пустая или содержит только пробелы (true True when string is empty or only contains white spaces).
’ ’.blank? Истина. Возвращает "истина", если строка пуста или содержит только пробелы (true True when string is empty or only contains white spaces).
’ ’.present? Ложь. Возвращает "истина", если строка содержит символы, отличные от пробелов (false True if string contains characters other than white spaces).
‘break-me-up’.split(‘-’) Разделить строку на массив строк по разделителю ([‘break’, ‘me’, ‘up’] Split the string into an array of strings on the separator).
‘break-me-up’.split(/[eau]+/) Разделить строку на массив строк по разделителю регулярного выражения ([‘br’, ‘k-m’, ‘-’, ‘p’] Split the string into an array of strings on a regular expression separator).
‘break-me-up’.slice(3) Взять строку, начиная с указанного файла index.md и далее (‘eak-me-up’ Take the string from the given index.md and onwards).
‘break-me-up’.slice(-5) Взять строку, начиная с указанного файла index.md и далее (‘me-up’ Take the string from the given index.md and onwards).
‘break-me-up’.slice(3,2) Взять фиксированное количество символов из заданного файла index.md (‘ea’ Take a fixed amount of characters from the given index.md).
‘break-me-up’.replace(‘-’, ’ ’) Заменить все вхождения другой строкой (‘break me up’ Replace all occurrences with another string).
‘break-me-up’.replace(/[eau]+/, ‘*’) Заменить все вхождения регулярного выражения другой строкой (‘br*k-m*-*p’ Replace all occurrences of the regular expression with another string).
‘break-me-up’.replace(/([eau]+)/, ‘\1’) Заменить все вхождения регулярного выражения другой строкой, используя группы захвата (‘br*ea*k-m*e*-*u*p’ Replace all occurrences of the regular expression with another string using capture groups).
[‘break’,‘me’,‘up’].join(’ and ’) Объединить элементы массива, используя указанный разделитель (‘break and me and up’ Concatenate the elements in an array with the provided separator).
‘10.428571428571429’.to_number Преобразовать строку в число (10.428571428571429 Convert the string to a number).

Манипуляции с числами (Number Manipulation)

Примеры выражений Результат
10.428571428571429.to_string Преобразовать число в строку (‘10.428571428571429’ Convert the number to a string).
10.428571428571429.round Округление до целого числа (10 Round to a whole number).
10.428571428571429.round(2) Округление до указанного количества десятичных знаков (10.43 Round to the given number of decimals).

Манипуляции с датой и временем (Date & Time Manipulation)

Примеры выражений Результат
now >1.секунды назад <1.секунды с настоящего момента (>1.seconds.ago <1.seconds.from_now)
today >1 день назад <1 день с настоящего момента (>1.day.ago <1.day.from_now)
1.second.ago >2 секунды назад <0 секунд с настоящего момента (>2.seconds.ago <0.seconds.from_now)
2.seconds.ago >3 секунды назад <1 секунда назад (>3.seconds.ago <1.second.ago)
1.minute.ago >61 секунд назад <59 секунд назад (>61.seconds.ago <59.seconds.ago)
2.minutes.ago >121 секунд назад <119 секунд назад (>121.seconds.ago <119.seconds.ago)
1.hour.ago >61 минут назад <59 минут назад (>61.minutes.ago <59.minutes.ago)
2.hours.ago >121 минут назад <119 минут назад (>121.minutes.ago <119.minutes.ago)
1.day.ago >25 часов назад <23 часа назад (>25.hours.ago <23.hours.ago)
2.days.ago >49 часов назад <47 часов назад (>49.hours.ago <47.hours.ago)
1.week.ago >8 дней назад <6 дней назад (>8.days.ago <6.days.ago)
2.weeks.ago >15 дней назад <13 дней назад (>15.days.ago <13.days.ago)
1.month.ago >32 дня назад <27 дней назад (>32.days.ago <27.days.ago)
2.months.ago >63 дня назад <56 дней назад (>63.days.ago <56.days.ago)
1.year.ago >366 дней назад <364 дня назад (>366.days.ago <364.days.ago)
2.years.ago >732 дня назад <729 дней назад (>732.days.ago <729.days.ago)
1.second.from_now >0.секунд.от_сейчас <2.секунд.от_сейчас (>0.seconds.from_now <2.seconds.from_now)
2.seconds.from_now >1.секунд.от_сейчас <3.секунд.от_сейчас (>1.seconds.from_now <3.second.from_now)
1.minute.from_now >59.секунд.от_сейчас <61.секунд.от_сейчас (>59.seconds.from_now <61.seconds.from_now)
2.minutes.from_now >119.секунд.от_сейчас <121.секунд.от_сейчас (>119.seconds.from_now <121.seconds.from_now)
1.hour.from_now >59 минут с настоящего момента <61 минута с настоящего момента (>59.minutes.from_now <61.minutes.from_now)
2.hours.from_now >119 минут с настоящего момента <121 минута с настоящего момента (>119.minutes.from_now <121.minutes.from_now)
1.day.from_now >23.часа.от_сейчас <25.часа.от_сейчас (>23.hours.from_now <25.hours.from_now)
2.days.from_now >47.часов.от_сейчас <49.часов.от_сейчас (>47.hours.from_now <49.hours.from_now)
1.week.from_now >6.дней.от_сейчас <8.дней.от_сейчас (>6.days.from_now <8.days.from_now)
2.weeks.from_now >13.дней.от_сейчас <15.дней.от_сейчас (>13.days.from_now <15.days.from_now)
1.month.from_now >27 дней с настоящего момента <32 дней с настоящего момента (>27.days.from_now <32.days.from_now)
2.months.from_now >56.дней.от_сейчас <63.дней.от_сейчас (>56.days.from_now <63.days.from_now)
1.year.from_now >364.дней.от_сейчас <366.дней.от_сейчас (>364.days.from_now <366.days.from_now)
2.years.from_now >729.дней.от_сейчас <732.дней.от_сейчас (>729.days.from_now <732.days.from_now)
planned_duration.hours.from_now >79.часов.от_сейчас <81.часов.от_сейчас (>79.hours.from_now <81.hours.from_now)
now.year Год, например, 2019 (Year, e.g. 2019)
now.month Месяц года, например, третий (март) (Month of year, e.g. 3 (March))
now.day День месяца, например, 21 (Day of month, e.g. 21)
now.hour Час дня, например, 19 (Hour of day, e.g. 19)
now.minute Минута часа, например, 45 (Minute of hour, e.g. 45)
now.second Секунда минуты, например, 12 (Second of minute, e.g. 12)
now.day_of_year День года, например, 80 (Day of year, e.g. 80)
now.day_of_week День недели, например, 4 (четверг) (Day of week, e.g. 4 (Thursday))
now.is_monday День - понедельник, например, ложь (Day is a Monday, e.g. false)
now.is_tuesday День - вторник, например, ложь (Day is a Tuesday, e.g. false)
now.is_wednesday День - среда, например, ложь (Day is a Wednesday, e.g. false)
now.is_thursday День - четверг, например, ложь (Day is a Thursday, e.g. true)
now.is_friday День - пятница, например, ложь (Day is a Friday, e.g. false)
now.is_saturday День - суббота, например, ложь (Day is a Saturday, e.g. false)
now.is_sunday День - воскресенье, например, ложь (Day is a Sunday, e.g. false)
now.utc Совпадение даты и времени в часовом поясе UTC (Same date time in UTC timezone)
custom_fields.my_date_time.to_date_time Преобразовать строковое значение даты и времени, полученное из пользовательских полей, в формат даты и времени (Convert string value of date time captured in a custom fields to a date time)
now.in_time_zone(person.time_zone) Совпадение даты и времени в часовом поясе лица (Same date time in timezone of person)
now.in_time_zone(rule_account.time_zone) Дата и время совпадают с часовым поясом пространства, в которой создано правило (Same date time in timezone of account in which the rule is created)
now.in_time_zone(‘Amsterdam’) Одна и та же дата и время в указанном часовом поясе (Same date time in given timezone)
now.iso8601 Те же дата и время в формате iso8601 (Same date time in iso8601 format)
duration(created_at, now) Количество минут между созданием и текущим моментом (Number of minutes between creation and now)
template.support_hours.target_at(now, 8.hours, ‘Moscow’) Целевой срок, рассчитанный на основе часов поддержки из шаблона запроса, время начала и продолжительность, для часового пояса Москвы (A target time using the support hours of a request template, a start time and a duration, for the Amsterdam time zone)

Предопределенные значения (Predefined Values)

Примеры выражений Результат
updated_by Лицо, инициировавшее выполнение правила автоматизации путем обновления записи, к которой относится это правило автоматизации (The person who triggered the execution of the automation rule by updating the record to which the automation rule belongs).
rule_account Пространство, в котором определено правило автоматизации (The account in which the automation rule is defined).
related_note Комментарий, созданный в момент выполнения правила автоматизации. Если комментарий не был создан, значение пустое. При использовании триггера «При добавлении комментария» это значение всегда присутствует, если у пользователя, ответственного за автоматизацию, есть права на чтение комментария (The note created at the moment the automation rule was triggered. If no note was created the value is empty. When the “On note added” trigger is used, this value is always present given the automation user has permissions to read the note).
related_internal_note Внутренний комментарий, созданный в момент выполнения правила автоматизации. Если комментарий не был создан, значение пустое (The internal note created at the moment the automation rule was triggered. If no note was created the value is empty).
true Истина (true)
false Ложь (false)
empty Ноль (nil)
nil Ноль (nil)
null Ноль (nil)

Тройные утверждения (Ternary Statements)

Выражение Результат
true then ‘yes’ else ‘no’ да (‘yes’)
!true then ‘yes’ else ‘no’ нет (‘no’)
is_assigned then teamA.id else teamB.id идентификатор команды А, если is_assigned истинно (teamA.id if is_assigned is true)
true ? ‘yes’ : ‘no’ да (‘yes’)
!true ? ‘yes’ : ‘no’ нет (‘no’)
is_assigned ? teamA.id : teamB.id идентификатор команды А, если is_assigned истинно (teamA.id if is_assigned is true)

Новые записи (только для задач) (New records (only for tasks))

Выражение Результат
new(task) В пространстве правил появилась новая пустая задача (New empty task in rule account)
new(task, ‘Finalize the change plan’) Новая задача, основанная на предоставленном шаблоне (New task based on the given template)

Предыдущие значения поля (Previous Field Values)

Идентификатор поля можно использовать для поиска значения этого поля. Например, чтобы получить текущее значение поля «Тема» рабочего процесса, можно использовать следующее выражение (A field identifier can be used to look up the value of this field. For example, to retrieve the current value of a workflow’s Subject field, the following expression can be used):

  • workflow.subject

Однако также можно найти предыдущее значение поля записи, то есть значение, которое поле имело до сохранения записи и срабатывания правила автоматизации. Это делается путем добавления _was после идентификатора поля. Например, для поля «Тема» в рабочем процессе выражение выглядит следующим образом (It is also possible, however, to look up a record’s previous field value, i.e. the value that the field had before the record was saved and the automation rule was triggered. This is done by adding _was after the field identifier. To do this for the Subject field of a workflow, for example, the expression becomes):

  • workflow.subject_was

Интерполяция строк (String Interpolation)

Можно использовать выражения внутри выражений. Однако выражение можно использовать только в том случае, если оно уже определено, поэтому порядок выражений важен. Пример ниже работает, потому что выражение «note» определено до того, как оно используется в выражении «hello_note» (It is possible to use expressions within expressions. However, an expression can only be used if it is already defined, so the order of the expressions is important. The example below works, because the expression ‘note’ is defined before it is used in the expression ‘hello_note’):

  • note: notes[last]
  • hello_note: “hello {{note}}”

Можно изменять порядок выражений, перетаскивая их вверх или вниз, чтобы гарантировать, что каждое выражение будет определено до того, как оно будет использовано в другом выражении (It is possible to reorder expressions by dragging them up or down to ensure that each expression is defined before it is used in another expression).