Osgi 如何在后台LotusScript代码中使用IBMSBT

Osgi 如何在后台LotusScript代码中使用IBMSBT,osgi,xpages,lotusscript,ibm-sbt,Osgi,Xpages,Lotusscript,Ibm Sbt,目标:我们希望完全用LotusScript编写的工作流引擎将事件发送到IBM Connections server的活动流 问题:如何从LotusScript调用IBM SBT API 约束条件: LS后台代理代码以专用用户身份运行(用于模板签名的ID),无法提示用户输入用户名/密码,并且无法实现SSO。因此,我希望使用基于表单的身份验证,并为IC提供专用的系统帐户 SBT安装在OSGi级别,所以Java代理需要将JAR放入代理体(知道内存泄漏的问题)或部署到服务器的jvm/lib/ext目录

目标:我们希望完全用LotusScript编写的工作流引擎将事件发送到IBM Connections server的活动流

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

约束条件:

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

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


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

看看您的问题,我建议您使用LS2J来完成LotusScript无法完成的任务。从6.5版开始,我就使用LS2J将Web服务引入Notes/Domino,它非常稳定,性能也很好

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

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

如上所述,我也同意其他人的看法——Java是前进的方向,而OSGi在这方面非常有趣


/John

LS2J在我们的遗留代码中工作得相当好。这是相当稳定和精彩的表现。我们甚至使用DB2JAR(在服务器上)和用于web服务的JavaEE代码进行500k调用,并且没有内存问题


java类可以在Eclipse中编写,在Lotus之外是一个真正的IDE。一个简单的LotusScript类,用于包装器代码和错误处理,现在您可以退出了。

我喜欢这个想法。我是否可以在一个特定的数据库(工作流引擎)中使用save event(保存事件),该数据库触发代码,并根据它可以发布到活动流的某些状态(字段值)?使用DOTS的SBT将是一个挑战,因为DOTS在XPages的单独OSGi层中运行,因此有一组不同的库可用。您可以使用所需的包对其进行配置,但这将是一项非常重要的工作。另一种选择是消除SBT,直接调用连接REST API。REST调用很简单,构建JSON活动对象更困难,但并非不可能。如果我理解正确,linked DOTS实现需要一个由某个人创建的.exe,该人将它放在internet上,然后安装到Domino服务器上。这是很多人甚至在dev服务器上都不想做的事情。facepalm DOTS是一个开源项目,最初由IBM的David Taieb编写,目前由IBM的Paul Fiore完善。.exe和核心OSGi实现将包含在Domino9的Social Edition附加组件中。您在这里真正谈论的Lotusscript有多少?@NathanT.Freeman很多。没有机会将其重写为Java,所以我正在寻找简单的LS“插件”来添加它,它将连接到SBT。我预计最多100行LS就可以了。不算Java部分,这将相当简单。“很多”不是一个有用的答案。你是说1000行吗?10000? 100000? 更多BASIC对于现代应用程序来说不是一种好语言。粗略估计是15k+行。相当复杂的代理可以处理很多事情:WF状态、访问(RN/AN)、响应文档的批处理、发送通知(类似于IC中活动流的邮件和数据库)、调用自定义应用程序代码等等。这是我们的第一个达到64k脚本库限制的应用程序:-)@NathanT.Freeman“BASIC对于现代应用程序来说不是一种好语言。”是的,不幸的是,它是R4以来Notes的核心(最强大)语言,所以希望人们用LotusScript开发“很多”应用程序。您是否告诉合作伙伴将其所有应用程序迁移到Java?那会杀了他们。