Ссылки на другие пакеты

Этот механизм применяется для использования объектов и/или получения наборов данных из других пакетов. В качестве таких объектов могут выступать узлы сценария, подключения, производные компоненты. Чтобы эти объекты были доступны в других пакетах, для них должна быть задана область видимости «Открытый (доступен во всех пакетах)», которая задается параметром объекта «Модификатор доступа».

Для создания ссылки следует выполнить следующие операции:

  1. на панели «Навигация» выбрать элемент «Ссылки»;
  2. в контекстном меню элемента «Ссылки» выбрать пункт «Добавить». Откроется окно «Добавление ссылки на пакет»;
  3. в параметре «Путь к файлу пакета» задать путь к пакету, доступ к объектам которого необходимо получить;
  4. нажать «Применить».

После создания Ссылки на внешний Пакет можно:

Первые два используются если не требуется изменение логики обработки данных, последний, — если алгоритм требует корректировки.

Для открытых Пакетов допустимо использование всех вариантов, для закрытых используются только Узел-ссылка и Выполнение узла.

Дополнительная информация

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

Общий пакет

При открытии пакета, ссылающегося на другой пакет (далее — внешний пакет), и который не открыт в данной сессии, последний будет загружен как Общий пакет. Это можно увидеть в Администрировании на странице Диспетчер. Пакет будет находится в Общих пока будет активна хотя бы одна ссылка из других пакетов.

Важно: При работе с Узлом-ссылкой, ссылающейся на узел другого пакета, следует помнить, что запрошенные в общем пакете данные будут загружены/рассчитаны один раз.

  • При этом, все соответствующие узлы будут заблокированы до тех пор, пока расчеты не завершатся!
  • При повторном запросе будут возвращены ранее полученные данные, то есть пересчет производится не будет!

Если необходимо произвести пересчет данных, можно:

  • Закрыть все пакеты, ссылающиеся на внешний и загруженный как общий пакет.
  • Либо изменить дату создания внешнего пакета (например, сохранив его). Это приведет к появлению второй, но уже обновленной копии в Общих пакетах.
  • Либо открыть внешний пакет в текущей пользовательской сессии. Тогда он не будет открыт как общий.

После этого рабочий пакет необходимо открыть заново.

Пример:
Пример работы с внешним пакетом lib
Рисунок 1. Пример работы с внешним пакетом lib

Здесь у нескольких пользователей открыты пакеты ссылающиеся на внешний пакет lib.

Первый пользователь (Albert) открыл внешний пакет lib и, следом, рабочий. Его внешний пакет будет работать с данными в своей сессии, независимо от открытых пакетов других пользователей.

Другие пользователи (Alisa и Jeanette) открыли лишь рабочие пакеты в своих сессиях. Поэтому внешний пакет lib загрузился как общий (счетчик отображает количество сессий, которые ссылаются на данный пакет), и все обращения этих пользователей будут направлены к общему пакету. Результаты в соответствующих Узлах-ссылках будут идентичными у данных пользователей в их сессиях.