代码之家  ›  专栏  ›  技术社区  ›  Sunny Milenov

Lotus Notes-编写设计元素创建脚本

  •  1
  • Sunny Milenov  · 技术社区  · 15 年前

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

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

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

    目前,部署过程如下:

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

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

    我能从No.Script、JavaScript、Java中做到这一点吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Anders Lindahl    15 年前

    这对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构造一个字符串。使用 工具->DXL实用程序->导出器 (或) 观众 )要检查要添加或编辑的设计元素,请执行以下操作:

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

    请注意,DXL导入程序除了健壮和容错之外,其他任何东西都是:您可以使开发人员客户端在有效的XML输入上崩溃,并且与DTD一致。例如,尝试设置 fieldhint="" 在田野上。在开发过程中要记住这一点。

        2
  •  1
  •   Carlos    15 年前

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

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

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

    **更新

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