1

我有一个 Lotus Notes 应用程序,它实际上包含一个包含所有必需表单、视图和代理的模板。它还需要将此模板中的一些设计元素(自定义表单和我们自己类型的文档的视图)复制到邮件模板中,因此在定期刷新后,所有用户都拥有它。

应用程序的工作方式如下:在 Domino 服务器上创建应用程序数据库(源自我提供的模板)。在这个数据库中运行的代理,根据 http 请求,在用户的邮件数据库中创建一个“自定义”文档。

然后,在客户端,用户可以使用我们的视图来显示这个文档。

目前,部署过程如下:

  1. 从我们的模板中创建一个“主”应用程序数据库。
  2. 使用该数据库中的表单和视图填充一些数据(以配置应用程序的工作方式)
  3. 将自定义表单和视图复制到邮件模板。
  4. 在邮件模板上创建我们的按钮(以启动我们的视图和/或表单)。
  5. 每晚刷新数据库后,所有用户都会收到自定义表单和邮件数据库中的视图,他们可以使用按钮查看我们的文档(如果有)。

现在,我想简化管理员的工作,自动复制自定义表单和视图,以及创建邮件模板的按钮。

知道如何通过 NotesScript、JavaScript、Java 做到这一点吗?

4

2 回答 2

1

这听起来对 DXL 是可行的,我认为您可以同时使用 LotusScript 和 Java 来完成它。

类似这样的事情应该在 Java 中完成:

public class RenderDesign extends AgentBase {
public void NotesMain() {

    try { 
        Session session = getSession();
        AgentContext agentContext = session.getAgentContext();

        DxlImporter myimporter = session.createDxlImporter();
        try {
            myimporter.setDesignImportOption(myimporter.DXLIMPORTOPTION_REPLACE_ELSE_CREATE);
            myimporter.importDxl(this.getDxl(), agentContext.getCurrentDatabase());
            } 
        catch (Exception e) {
            System.out.println(this.getDxl());
            System.out.println(myimporter.getLog());            
        }

    } catch(Exception e) {
        e.printStackTrace();
    }
}

然后只需用 DXL 构造一个字符串。使用Tools -> DXL Utilities -> Exporter(或Viewer)检查您要添加或编辑的设计元素:

public String getDxl(String agentname, String replicaid) {
    return "<?xml version='1.0' encoding='utf-8'?>"+
            "<view name='(auto-view)'> "+/* ... */"</view>";
}

请注意,DXL 导入器绝不是健壮和容错的:您可以使 Developer 客户端在输入有效 XML 且符合 DTD 时崩溃。例如,试图fieldhint=""在一个字段上设置。开发时请记住这一点。

于 2009-06-08T19:53:52.173 回答
1

试着看看这些想法---> http://www.openntf.org/projects/pmt.nsf/3f2929edba6ef2808625724c00585215/9fe3084cab2f38ad8625754600078af6!OpenDocument

http://www.benpoole.com/80256B44004A7C14/articles/simpledxl

为避免某些 DXL 已知问题,您可以尝试以编码的二进制格式导出和导入。

**更新

在仔细查看您的情况后,我认为最简单的方法是使用模板继承。因此,您可以将自定义模板中的元素复制到邮件模板中,并确保将元素设置为从自定义模板继承。

于 2009-06-08T20:07:52.350 回答