3

我正在尝试从 Web 应用程序(Java EE)以编程方式生成 lotusscript(以可编写脚本按钮的形式)并将其发送给最终用户,最终用户将在他/她的 Lotus Notes 客户端中运行它。

我怎样才能做到这一点?我是否可以使用 API 将 lotusscript 嵌入到电子邮件中?

4

3 回答 3

3

这是一个想法。我还没有尝试过,也不确定它是否会起作用:

  1. 在 Domino Designer 中使用 LotusScript 按钮创建表单并设置为存储在文档中
  2. 使用该表单创建文档
  3. 将文档导出为 DXL (Domino XML)
  4. 在您的 Java EE 应用程序中使用ncso.jar导入 DXL(您可以根据需要先修改 XML 中的 LotusScript)
  5. 使用电子邮件发送文档Document.send()。当使用 CORBA/IIOP 连接到 Domino 服务器时,我认为这应该可以工作。

更新

您也许可以跳过 DXL 部分,只修改文档项中的 LotusScript。我知道您必须为每个收件人修改 LotusScript。如果不是,那么一切都会容易得多(见理查兹的回答)。

于 2013-01-28T22:48:55.677 回答
3

我不会尝试嵌入按钮,而是考虑利用 Notes 的“在文档中存储表单”功能。

即,使用 Domino Designer 我将手动创建一个数据库(为方便起见,我将其称为“MyDb.nsf”)。在此数据库中创建一个表单(为方便起见,“MyForm”)并使用电子邮件消息的必填字段(SendTo、主题、正文等)对其进行设置。然后在表单上创建一个按钮并输入 LotusScript 代码。

提前完成此操作后,您的代码可以利用attachFormDocument.send() 方法中的可选参数。

您要做的是以通常的方式打开 MyDb.nsf,然后使用Database.createDocument()在该数据库中创建您的文档,然后使用Document.ReplaceItemValue("Form","MyForm")将此文档绑定到您的表单。还可以根据需要设置其他项目(例如,Subject、SendTo、Body),并在完成后调用Document.send(true)。这会将您的表单嵌入到文档中并发送,因此 LotusScript 代码将在与消息一起发送的嵌入表单中传播。

我认为这对您来说可能是最好的方法,因为我认为这将在嵌入表单时保留表单上的签名。我不确定,但另一方面我更确定使用 CORBA/IIOP 发送的任何其他方式都会给你一个未签名的脚本(因为 CORBA/IIOP 无法访问签名所需的私钥文件)。未签名的脚本意味着您的用户在执行它时会收到 ECL 警告——这可能导致他们在 ECL 中添加一个条目以允许未签名的脚本,这是一种糟糕的安全做法。

于 2013-01-29T00:28:39.080 回答
1

Another option is to embed a URL to open a Page design element with your code (or a call to the agent) in the QueryOpen, so it runs when the page opens.

Notes://myserver.mycompany.com/utilities.nsf/MyTaskLauncher?OpenPage

I'm not sure if it could pass parameter values or if you have to rely on the user's credentials to determine the proper information.

Advantages:

  1. Code resides in one location, so I can update it if I find out there was a bug in the original version.
  2. Minimal manipulation of the user's mail file with stored forms.
  3. Smaller email message, since I don't have to send along form information.
  4. Easier to build a simple string in Java EE than the higher-powered solutions.
  5. The agent can either use the signing ID or run with the user's credentials.
  6. Can be sent to any email address, so long as the recipient has a Notes client.
于 2013-01-31T15:50:17.943 回答