NotesDXLExporter导出数据库

时间:2014-06-02 00:04:24

标签: xpages xpages-ssjs

我在XPage的按钮上写了这个SSJS。我想将当前数据库导出到dxl文件。

var stream:NotesStream = session.createStream();
var fileName:String = "c:\\Export\\exportedDB.dxl";
dBar.info(fileName,"Start Try");
try{
    if(stream.open(fileName)){
            dBar.info("File Opened");
            stream.truncate();
            dBar.info("stream Truncate");
        exporter:NotesDxlExporter = session.createDxlExporter();
        dBar.info("Exporter Created");
        stream.writeText(exporter.exportDxl(database));
        dBar.info("Export Completed");
        stream.close();
        dBar.info("Stream Closed")
    }else{
        dBar.info("Could Not Open File");
    }
}catch(e){
    dBar.info("try failed");
}

我在调试工具栏中收到消息“Exporter Created”但stream.write失败并转到“try failed”。我拥有当前数据库的经理权限,因此我认为这不是权利问题。根据我能够找到的示例,这应该工作。有人看到我的代码有问题吗?

2 个答案:

答案 0 :(得分:2)

尝试将“var”添加到第一个导出语句:

var exporter:NotesDxlExporter = session.createDxlExporter();

更好:使用Java做到这一点。它可以更容易地捕获这样的错误。

答案 1 :(得分:0)

将整个数据库导出为DXL可能有点棘手。一个有问题的设计元素,整个导出失败。所以这不是你可以100%依赖的。

当我编写DXLMagic(源代码在OpenNTF上)时,我学到了很多教训。对于后来的Notes版本,Dxl处理已经变得更好,但不是“最终用户就绪”

我希望初学者遵循Per的建议,并在Java中这样做。其次,重用DXLMagic的代码。在那里我一个接一个地导出一个元素(并将其拼接成一个结果),以避免一个元素不干净时失败。

Dxl对XPage的用处不是很好,你可能最好使用OnDisk项目(仅限代码,另一端需要设计师)