Примеры выражений

Выражения, используемые в определениях Фильтра событий и Тревог, должны получать результат типа Boolean. Это позволяет SberMobile Server определить, может ли событие пройти через фильтр или должна ли тревога быть активирована по какому-либо событию.

Выражение

Результат вычисления

Тип результата

5 + 5 > 7

true

Boolean

3 + 2

5

Integer

"Red" + " " + "Line"

"Red Line"

String

{speed}>5  

true, если ссылка speed разрешается  в  целое число более 5.

Boolean

{name} == "admin"  

true, если ссылка name разрешается в строку “admin”.

Boolean

{failed[3]} == false

true, если ссылка failed[3] разрешается  в "false" (Boolean)

Boolean

{env/context} ~= "^abc.*"

true, если ссылка env/context разрешается  в Строку, совпадающую с  регулярным выражением "^abc.*", т.е. начинается с "abc".

Boolean

{int[1]} == {int[2]}

true,если обе ссылки разрешаются в значения, похожие друг на друга (т.е. два числа или две строки) и эти значения равны.

Boolean

({field} + 5) * ({field2} - 1) / 2 == {field[1]} + 1

true или false, в зависимости от значений разрешенных ссылок, которые должны быть числовыми.

Boolean

substring("smiles", 1, 5)

"mile"

String

max(100, {pressure})

Значение ссылки pressure, если оно больше 100 или равно 100.

Number

Расчет расстояния между точками

Предположим, мы владеем компанией, сдающей в аренду автомобили, и не хотим, чтобы наши автомобили уезжали далеко от стоянки. В целях управления, каждая машина оборудована небольшим контроллером, который читает положение машины с GPS приемника и отправляет его на сервер SberMobile по сотовой связи при помощи GPRS. В нашей системе, мы имеем координаты двух точек: автомобиля и стоянки. Мы можем рассчитать расстояние между ними при помощи выражения или создать выражение, которое активирует тревогу, когда расстояние превысило заданный предел.

Если наши координаты выражены в радианах, мы можем применить следующую формулу для поднятия тревоги, если расстояние между транспортным средством и стоянкой превысило 500 километров:

acos(sin({car_latitude}) * sin({base_latitude}) + cos({car_latitude}) * cos({base_latitude}) * cos({car_longitude} - {base_longitude})) * 6371  > 500

6371 радиус Земли в километрах

500 разрешенное максимальное расстояние между автомобилем и стоянкой в километрах

Если координаты выражения в градусах (что более вероятно в случаях данных GPS приемника), мы просто конвертируем градусы в радианы, например:

{car_latitude} / 180 * 2 * 3.1415926