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

Понятие и изменение контекста в Comindware Tracker

Понятие контекста используется для настройки бизнес-логики и вычислений в Comindware Tracker. В первую очередь, у любой информационной системы есть база данных, и чтобы получить какие-то данные из нее, нужно написать запрос к базе.

Контекст — это отправная точка запроса к базе данных. Границами контекста являются приложения, задачи, триггеры и т.д., в которых пишется запрос (в форме вычисляемых атрибутов, условий на переходах, фильтров и т.д.), и их нужно различать для правильного написания формулы.

$ - обозначение изначального контекста.

  • Для вычисляемых атрибутов $ = контекст текущего приложения.
  • Для префильтров ссылочных полей $ = контекст приложения, куда ведет данная ссылка.
  • Для задач $ = контекст задачи.
  • Для триггера $ = контекст приложения, определенного в рамках предыдущей активности (изначально это контекст текущего приложения).

$$ - системные переменные, не зависящие от контекста какого-либо определенного приложения:

  • currentUser = текущий пользователь;
  • contextItem = изначальный объект;
  • now = текущая дата и время;
  • incomingMessage = текущее сообщение (для триггера на получение электронного сообщения);
  • contextComment = текущий комментарий (для триггера на добавление комментария).

Для смены контекста используются ссылочные поля. Чтобы перейти по ссылке, используются системные имена атрибутов типа «Ссылка» после $ и символы -> или <- (для обратной ссылки). В триггерах можно менять контекст по самим атрибутам типа «Ссылка» или без атрибутов, просто сменяя контекст на другое приложение.

 

Примеры смены контекста

Пример 1: искомый атрибут находится в другом приложении, и в текущем контексте есть ссылка на него (например, для вычисления какого-либо поля)

$fieldReference->fieldText

Пример 2: искомый атрибут находится в другом приложении, которое ссылается на текущее, при этом в текущем контексте ссылки на другое приложение нет (например, для вычисления какого-либо поля)

$<-fieldReference->fieldText

Пример 3: мы находимся в контексте задачи, а искомый атрибут - в контексте связанной записи (например, для вычисления Исполнителя)

$parent->field

Примечание : в случае с подзадачами $parent будет менять контекст на вышестоящую подзадачу или головную задачу. При написании выражений нужно это учитывать.

Пример 4: в рамках триггера мы несколько раз поменяли контекст с приложения на приложение, и в конце нужно заполнить поле значением из изначального объекта, который стартовал триггер

$$contextItem->field


Исследования осуществляются <br>ООО «Колловэар» при грантовой <br>поддержке Фонда «Сколково»
Comindware