首页 文章

Lotus Notes - 编写设计元素的脚本

提问于
浏览
1

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

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

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

目前,部署过程如下:

  • 从我们的模板中创建"master"应用程序数据库 .

  • 使用该数据库中的表单和视图填充一些数据(以配置应用程序的工作方式)

  • 将自定义表单和视图复制到邮件模板 .

  • 在邮件模板上创建我们的按钮(以启动我们的视图和/或表单) .

  • 每夜数据库刷新后,所有用户都会在其邮件数据库中收到自定义表单和视图,他们可以使用该按钮查看我们的文档(如果有) .

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

知道如何从NotesScript,JavaScript,Java中做到这一点?

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="" . 在开发过程中牢记这一点 .

  • 1

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

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

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

    **更新

    仔细观察一下你的情况之后,我认为最简单的方法就是使用模板继承 . 因此,您可以将自定义模板中的元素复制到Mail模板中,并确保将元素设置为从自定义模板继承 .

相关问题