1

目标:我们希望我们的工作流引擎完全用 LotusScript 编写,以将事件发送到 IBM Connections 服务器的 Activity 流。

问题:如何从 LotusScript 调用 IBM SBT API?

约束:

  • LS 后台代理代码作为专用用户(模板签名的 ID)运行,无法提示用户输入用户名/密码,并且无法进行 SSO。因此,我希望将基于表单的身份验证与 IC 的专用系统帐户一起使用;
  • SBT 安装在 OSGi 级别,因此 Java 代理需要将 JAR 放入代理主体(知道内存泄漏问题)或部署到服务器的 jvm/lib/ext 目录(重复部署)。所以首选不涉及Java代理的方案;
  • LotusScript 中对 Web 服务的调用应该是安全的(SSL,url 中没有密码)并且不依赖于操作系统(例如,这种方法不可用)。
4

3 回答 3

1

查看您的问题,我建议您将 LS2J 用于无法通过 LotusScript 完成的事情。自 6.5 版以来,我一直使用 LS2J 将 web 服务引入 Notes/Domino - 它一直非常稳定且性能良好......

您应该创建一个 LotusScript“包装器”类来处理 LS2J 特定的调用和错误处理——将来自 Java 层的任何错误转换为正常的 LS 错误。这将使它易于在您的 LS 库中使用。

您应该能够使用 LotusScript 的内置 Webservice-support... - 如果没有,请考虑使用 LS2J。在这种情况下,您可能需要在类路径中添加一些 JAR 文件以供 Java 使用。您应该将这些 JAR 文件放在 jvm/lib/ext 库中 - 不要将它们附加到脚本库或代理,因为在使用它们之前在内部分离 jar 文件的代码中存在内存泄漏。它会在将来某个时候杀死你的服务器。

说了上面的话,我也同意其他人的观点——Java 是前进的道路,而 OSGi 从这个角度来看非常有趣......

/约翰

于 2013-02-15T09:06:30.033 回答
1

LotusScript 没有发出网络请求的本机能力,因此您必须使用 LS2J(因此您无论如何都在编写 Java,没有 Java IDE 的好处)或调用特定于平台的 API(即 Windows DLL)。

此外,LotusScript 是一种遗留语言。它支持与现有应用程序的向后兼容性,但今后不太可能收到重大更新。如果您从头开始编写此代码,最好使用一种可以长期维护的语言,而不是在您的环境中引入额外的 LotusScript 代码。为此,我建议创建一个DOTS tasklet,它与代理基本相同,没有代理的性能问题。由于 DOTS 中的 O 代表 OSGi,因此 tasklet 是 SBT 的部署兄弟,并且很可能是 Domino 平台的计划/触发任务的未来。

于 2013-02-14T15:16:16.883 回答
0

LS2J 在我们的 Legacy 代码中运行良好。这是相当稳定和精彩的表现。我们甚至使用 db2 jars(在服务器上)和用于 Web 服务的 Java EE 代码进行了 500k 次调用并且没有内存问题。

Java 类可以在 Eclipse 中编写为 Lotus 之外的一个真正的 IDE。一个简单的 LotusScript 类,用于带有错误处理的包装器代码,然后您就可以离开了。

于 2013-02-15T12:46:37.743 回答