在数据库中使用DXL导入SSJS脚本库

时间:2012-03-27 14:13:36

标签: java lotus-notes xpages

我们需要使用DXL在数据库中导入SSJS库。为此,我们编写了一个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 包含我在Domino Designer中创建的SSJS库,然后使用“Tools> DXL Utilities> Exporter”导出(用于测试目的)。但是当我运行此代理库时,会在数据库中导入。 DxlImporter.getLog()也没有错误。

我尝试使用XPages,Form,LotusScript脚本库进行类似的过程,并成功导入了它们。但是同一个代理无法导入SSJS库。

代码中是否有我遗漏的内容?我们可以使用DXL在数据库中导入SSJS库吗?

3 个答案:

答案 0 :(得分:1)

如果您打印导入的音符ID并在适当的工具(Ytria或Notespeek)中进行分析,您将看到问题出在$ Flags字段中。

我创建了一个测试SSJS库,$ Flags字段包含“.5834Q”。但是进口的只有“34Q”。

我没有这些标志的确切参考,但它可能是一个好的开始。手动覆盖此字段可以成功运行,但此标志可能包含一些有价值的信息。

这对我来说似乎是个错误。

此外,YTria工具对$ flags字段内容有很好的参考。

答案 1 :(得分:1)

看起来导出工具(或者甚至DXLexporter)不会导出所有需要的字段。如果您在dxl文件中手动添加它,就在项目名称='$ ServerJavaScriptLibrary'...行之前,它将成功导入它。

<item name='$Flags'><text>.5834Q</text></item>
<item name='$TITLE'><text>...name of the SSJS library...</text></item>

答案 2 :(得分:1)

让您的工作更轻松,并使用OpenNTF上的导入/导出插件:http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7YAAF6它有一个ANT API,因此您可以自动执行操作。需要Domino Designer,因此它可能不适合您的用例。或者(尚未检查):您是否看过webDAV是否公开了脚本库?