Импорт библиотеки сценариев SSJS с использованием DXL в базу данных - PullRequest
3 голосов
/ 27 марта 2012

Нам нужно импортировать библиотеку SSJS в базу данных, используя DXL. Для этого мы написали Java-агент, и его код выглядит примерно так:

import lotus.domino.*;
public class JavaAgent extends AgentBase {
    private DxlImporter importer = null;
    public void NotesMain() {
        try {
            Session session = getSession();
            AgentContext agentContext = session.getAgentContext();

            String filename = "C:\\tempssjslib.xml";

            Stream stream = session.createStream();
            if (stream.open(filename) & (stream.getBytes() > 0)) {
                Database importdb = session.getCurrentDatabase();
                importer = session.createDxlImporter();
                importer.setReplaceDbProperties(true);
                importer.setReplicaRequiredForReplaceOrUpdate(false);
                importer.setAclImportOption(DxlImporter.DXLIMPORTOPTION_REPLACE_ELSE_IGNORE);
                importer.setDesignImportOption(DxlImporter.DXLIMPORTOPTION_REPLACE_ELSE_CREATE);
                importer.importDxl(stream, importdb);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } 
        finally {
            try {
                System.out.println(importer.getLog());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

Файл C: \ tempssjslib.xml содержит библиотеку SSJS, которую я создал в Domino Designer, а затем экспортировал с помощью «Инструменты> Утилиты DXL> Экспортер» (для целей тестирования). Но когда я запускаю эту библиотеку агентов, не импортируется в базу данных. Также нет ошибки в DxlImporter.getLog().

Я пробовал аналогичную процедуру с XPages, Form, библиотекой скриптов LotusScript и успешно смог их импортировать. Но тот же агент не может импортировать библиотеку SSJS.

Есть что-то, что я пропустил в коде? Можем ли мы импортировать библиотеку SSJS в базу данных, используя DXL?

Ответы [ 3 ]

1 голос
/ 27 марта 2012

Похоже, что инструмент экспорта (или, может быть, даже DXLexporter) не экспортирует все необходимые поля.Если вы добавите это вручную в файл dxl, непосредственно перед строкой item name = '$ ServerJavaScriptLibrary' ..., он успешно импортирует его.

<item name='$Flags'><text>.5834Q</text></item>
<item name='$TITLE'><text>...name of the SSJS library...</text></item>
1 голос
/ 28 марта 2012

Сделайте вашу жизнь проще и используйте плагин Import / Export, найденный в OpenNTF: http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7YAAF6 Он имеет ANT API, так что вы можете автоматизировать операции.Требуется Domino Designer, поэтому он может не подходить для вашего случая использования.В качестве альтернативы (не проверял): Вы смотрели, выставляет ли webDAV библиотеки скриптов?

1 голос
/ 27 марта 2012

Если вы напечатаете импортированный идентификатор заметки и проанализируете его в соответствующем инструменте (Ytria или Notespeek), вы увидите, что проблема в поле $ Flags.

Я создал тестовую библиотеку SSJS, и поле $ Flags содержит «.5834Q». Но у импортированного есть только "34Q".

У меня нет точной ссылки на эти флаги, но это может быть хорошим началом. Ручная перезапись этого поля работает успешно, но этот флаг может содержать некоторую ценную информацию.

Мне кажется, это ошибка.

Кроме того, у инструмента YTria есть хорошая справка о содержимом поля $ flags.

...