Понятие и изменение контекста в Comindware Tracker
Понятие контекста используется для настройки бизнес-логики и вычислений в Comindware Tracker. В первую очередь, у любой информационной системы есть база данных, и чтобы получить какие-то данные из нее, нужно написать запрос к базе.
Контекст — это отправная точка запроса к базе данных. Границами контекста являются приложения, задачи, триггеры и т.д., в которых пишется запрос (в форме вычисляемых атрибутов, условий на переходах, фильтров и т.д.), и их нужно различать для правильного написания формулы.
$ - обозначение изначального контекста.
- Для вычисляемых атрибутов $ = контекст текущего приложения.
- Для префильтров ссылочных полей $ = контекст приложения, куда ведет данная ссылка.
- Для задач $ = контекст задачи.
- Для триггера $ = контекст приложения, определенного в рамках предыдущей активности (изначально это контекст текущего приложения).
$$ - системные переменные, не зависящие от контекста какого-либо определенного приложения:
- currentUser = текущий пользователь;
- contextItem = изначальный объект;
- now = текущая дата и время;
- incomingMessage = текущее сообщение (для триггера на получение электронного сообщения);
- contextComment = текущий комментарий (для триггера на добавление комментария).
Для смены контекста используются ссылочные поля. Чтобы перейти по ссылке, используются системные имена атрибутов типа «Ссылка» после $ и символы -> или <- (для обратной ссылки). В триггерах можно менять контекст по самим атрибутам типа «Ссылка» или без атрибутов, просто сменяя контекст на другое приложение.
Примеры смены контекста
Пример 1: искомый атрибут находится в другом приложении, и в текущем контексте есть ссылка на него (например, для вычисления какого-либо поля)
$fieldReference->fieldText
Пример 2: искомый атрибут находится в другом приложении, которое ссылается на текущее, при этом в текущем контексте ссылки на другое приложение нет (например, для вычисления какого-либо поля)
$<-fieldReference->fieldText
Пример 3: мы находимся в контексте задачи, а искомый атрибут - в контексте связанной записи (например, для вычисления Исполнителя)
$parent->field
Пример 4: в рамках триггера мы несколько раз поменяли контекст с приложения на приложение, и в конце нужно заполнить поле значением из изначального объекта, который стартовал триггер
$$contextItem->field