Ссылки на другие пакеты Скачать в PDF

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

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

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

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

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

Свойства ссылки на пакет

Ссылка на пакет содержит следующие параметры:

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

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

Открыть окно Свойства ссылки на пакет можно следующими способами:

  • Команда Настроить на панели инструментов.
  • В контекстном меню пункт Настроить.
  • Двойной клик по добавленной ссылке.

В качестве значения параметра Версия задается маска. По умолчанию используется ^1.0.0.

Поддерживаются следующие способы задания маски:

  • Точное указание версии 1.2.3 или 1.0.0-beta.1.
  • С использованием символа ^. Включает конкретную версию и версии, которые не превосходят первую не нулевую часть маски. Например:
    • ^1.2.3 соответствует диапазону >=1.2.3 <2.0.0-0
    • ^0.2.5 соответствует диапазону >=0.2.5 <0.3.0-0
    • ^0.0.4 соответствует только версии 0.0.4
    • ^1.2.3-beta.2 соответствует диапазону >=1.2.3-beta.2 <2.0.0-0
    • ^0.0 соответствует диапазону >=0.0.0 <0.1.0-0
    • ^0 соответствует диапазону >=0.0.0 <1.0.0-0
  • С использованием символа ~. Включает конкретную версию и версии, которые больше указанной, в том же минорном диапазоне. Для случаев ~0, ~1 и т.п. маска работает так же, как и маска с символом ^. Например:
    • ~1 соответствует диапазону >=1.0.0 <2.0.0-0
    • ~1.2 соответствует диапазону >=1.2.0 <1.3.0-0
    • ~1.2.3 соответствует диапазону >=1.2.3 <1.3.0-0
    • ~1.2.3-beta.1 соответствует диапазону >=1.2.3-beta.1 <1.3.0-0
    • ~0.2 соответствует диапазону >=0.2.0 <0.3.0-0
    • ~0 соответствует диапазону >=0.0.0 <1.0.0-0
  • С использованием символа *. Используется для «замены» одного из числовых значений маски. Например:
    • * соответствует диапазону >=0.0.0 (то есть включает в себя любые версии пакета)
    • 1.* соответствует диапазону >=1.0.0 <2.0.0-0
    • 1.2.* соответствует диапазону >=1.2.0 <1.3.0-0

Общий пакет

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

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

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

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

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

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

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

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

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

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

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

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