我们需要使用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库吗?
答案 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是否公开了脚本库?