Совместное использование библиотеки LotusScript между базами данных
Можно ли создать библиотеку LotusScript в одной базе данных, а затем получить к ней доступ из другой базы данных?
Без простого копирования библиотеки в каждую базу данных, которая должна использовать ее.
Чего я хотел бы добиться, так это одного места, где я могу обновлять библиотеку и не нужно вручную копировать ее в каждую базу данных, которая ее использует. Я не могу использовать шаблон дизайна, поскольку базы данных, использующие эту библиотеку сценариев, используют разные шаблоны дизайна.
Я предполагаю, что другим решением было бы создать агента для копирования библиотеки во все базы данных при каждом ее обновлении. Так что, если кто-то делал что-то подобное раньше, я бы тоже хотел рассказать об этом.
2 ответа
Наследование дизайна в Lotus Notes не только на уровне базы данных - отдельные элементы дизайна (например, ваша библиотека скриптов) могут быть явно унаследованы от другого шаблона. См. Связывание отдельных элементов дизайна с шаблоном.
При таком наследовании задача конструктора на сервере Domino автоматически обновляет элемент дизайна. Чтобы это работало, шаблоны должны быть реплицированы на один и тот же сервер.
Возможно, вы захотите отключить это наследование при выпуске шаблона, чтобы избежать неприятных сюрпризов в производственной среде. Недавно я создал для этого решение: программно удалить наследование элементов дизайна Lotus Notes.
Андерс очень хорошо ответил на вопрос. Как уже сказал Андерс, Domino, к сожалению, не может делить библиотеки кода между базами данных. Весь код самодостаточен, что в данном сценарии является ограничением.
Копирование агента во все базы данных, для которых вы хотите его использовать, а затем использование наследования проекта - это быстрый и простой способ распространения агента.
Альтернативная идея состоит в том, чтобы иметь единую базу данных, которая служит хранилищем агентов, поэтому, если вам нужно многократно использовать один и тот же агент, его дизайн всегда находится в одной базе данных, но вам нужно будет спроектировать его так, чтобы он может выполнять операции со всей базой данных, которую нужно обновить.
Эффективно, используя каждую базу данных только в качестве источника данных, а соответствующие агенты работают из одного места. Это потребует дополнительной работы, которая позволит вам определить некоторые дополнительные документы конфигурации, которые агент (ы) будет использовать для определения баз данных, на которых вы хотите, чтобы агент работал.
Преимущества этого подхода:
Вам не нужно бороться с наследованием дизайна. Это может привести к беспорядку в больших масштабах, когда у вас есть сложные библиотеки скриптов / структуры дизайна, вам, возможно, придется купить сторонние инструменты, чтобы помочь вам сделать это.
Фактически вы можете контролировать, какие базы данных обновляются через серию документов конфигурации централизованно с помощью поля "активный / неактивный", которое помечает базу данных для обновления. Вместо того, чтобы напрямую "дотрагиваться" до агентов, что требует от вас грязных рук при включении / отключении агента. В некоторых корпоративных средах, которые жестко контролируются, вам нужно постоянно просить администратора Notes сделать это за вас.
Вы можете закодировать агент так, чтобы он сообщал об активности в ваших собственных пользовательских журнальных документах при его запуске в каждой базе данных, и централизованно хранить его.
Надеюсь, что это дает вам некоторые варианты...
Вы можете поделиться библиотекой lotusScript между базами данных. экспортируйте скрипт в файл с суффиксом.lss и поместите его на сервер домино в папке домино. Затем вы можете написать "use" script.lss "" как с обычными библиотеками LotusScript. Вы можете увидеть в папке домино уже есть некоторые библиотеки, например. lsconst.lss