如何从Lotus Notes启动应用程序,然后保存到Lotus数据库?

时间:2011-01-05 14:21:50

标签: java lotus-notes lotus-domino lotus

我在一个开发Java Swing应用程序的团队工作,现在我正在尝试帮助另一个团队将此应用程序集成到Lotus Notes中。不幸的是,我对Notes知之甚少,似乎无法找到任何与我们正在尝试做的相关的文档。

我们要做的是让用户使用从Notes传入的一些数据启动我们的应用程序,让用户使用传入的数据,然后当他们准备保存时,修改后的数据将保存回Notes数据库中。

我们使用Notes代理实现的第一部分 - 它能够启动我们的应用程序并传递原始数据 - 问题在于节省。在启动我们的应用程序的调用之后,代理似乎完成并“死”,因此当用户准备好保存时,无法在以后获得对会话/数据库的引用。其中一个Lotus开发人员通过在代理中创建一个繁忙的等待循环来使其工作,以便在启动应用程序后保持活动状态 - 但这会产生副作用,即在应用程序打开时阻止任何其他Lotus Notes使用,所以这不是一个真正可以接受的解决方案。

任何人都知道我们想做什么是可能的吗?怎么做?关于此的任何示例/文档的链接?

3 个答案:

答案 0 :(得分:3)

一个选项是让Notes代理启动Java应用程序并允许Java应用程序异步运行;然后它可以直接写入Notes数据库(使用Notes Java API)。您可以将客户端配置为与Notes客户端共享凭据,因此进行身份验证不是问题(或者您可以让Java应用程序对Notes进行身份验证)。 Java API非常简单 - 它基本上模仿了LotusScript中可用的后端类。如果需要将结果写回特定文档,可以将NotesUniqueID(docid)从Notes代理传递到Java应用程序,然后在Java应用程序中使用它来回写。 (请参阅Database类中的GetdocumentByUnid方法)。

这篇文章有点陈旧,但我认为仍然相关: http://www.ibm.com/developerworks/lotus/library/ls-Java_access_pt1/index.html

答案 1 :(得分:3)

您可以选择将数据重新导入Lotus Notes。我认为最好的办法是使用Java API调用Lotus Notes并重新添加数据。有一个Java API的开源接口可以让生活更轻松,称为domingo。否则,请参阅domino设计员有关如何使用Java API的帮助。

以下是将数据重新导入Notes的所有方法列表,我可以在五分钟内思考:

  • 使用COM或Java API调用Notes对象和方法(see Domino Designer Help)
  • 使用NotesSQL使用SQL命令将数据插入Notes。
  • 将Notes数据库设置为mail-in数据库,并通过电子邮件传递数据
  • 设置预定代理程序以从指定目录读取(让它每分钟或每两分钟运行一次),然后从文件中导入数据。
  • 如果您使用的是Domino,则可以通过URL的查询字符串传递数据并在代理中处理它。

答案 2 :(得分:1)

Lotus Notes数据库有一个完整的Java API。唯一需要注意的是:API是C核心周围的一个瘦包装器,需要在Notes对象上进行垃圾收集的发布。所以在使用例如一个NotesDocument,你需要调用它的.recycle()方法,否则你会释放内存。