Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scripting Lotus Notes-编写设计元素的创建脚本_Scripting_Templates_Lotus Notes_Lotus Domino - Fatal编程技术网

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

Scripting Lotus Notes-编写设计元素的创建脚本,scripting,templates,lotus-notes,lotus-domino,Scripting,Templates,Lotus Notes,Lotus Domino,我有一个lotusnotes应用程序,它实际上由一个模板组成,其中包含所需的所有表单、视图和代理。它还需要将此模板中的一些设计元素(自定义表单和我们自己类型文档的视图)复制到邮件模板中,因此在定期刷新之后,所有用户都可以使用它 应用程序的工作原理如下:应用程序数据库(源自我提供的模板)是在Domino服务器上创建的。在该数据库中运行的代理根据http请求在用户的邮件数据库中创建“自定义”文档 然后,在客户端,用户可以使用我们的视图显示此文档 目前,部署过程如下所示: 用我们的模板创建一个“主”应

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

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

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

目前,部署过程如下所示:

  • 用我们的模板创建一个“主”应用程序数据库
  • 使用数据库中的表单和视图填充一些数据(以配置应用程序的工作方式)
  • 将自定义表单和视图复制到邮件模板
  • 在邮件模板上创建按钮(启动视图和/或表单)
  • 在夜间数据库刷新之后,所有用户都会收到他们邮件数据库中的自定义表单和视图,并且他们可以使用按钮查看我们的文档(如果有)
  • 现在,我想简化管理员的工作,并自动复制自定义表单和视图,以及创建邮件模板的按钮


    你知道我如何通过NotesScript、JavaScript、Java实现这一点吗?

    这听起来可以通过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>";
    }
    
    publicstringgetdxl(stringagentname,stringreplicaid){
    返回“”+
    " "+/* ... */"";
    }
    

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

    试着看看这些想法-->

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

    **更新


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

    谢谢您提供的信息,但我在该代码中没有看到我如何设置“目标”数据库,我想将设计元素放在其中。啊,我在编辑代码时意外删除了对目标数据库的引用。目标数据库是dxlimportder.importDxl.Yes的一个参数,现在就是这样。我只是想自动复制一些方法。如果模板继承设置正确,那么为什么需要再次复制表单?您在自定义模板中对表单所做的任何更改都应复制到邮件模板中,而邮件模板又应复制到用户邮件数据库中。这是真的-我只是想准备一个外观良好的向导或其他东西,这样管理员就不必手动将表单和按钮复制到应用程序数据库中(基于模板)。这只是对整个“安装”过程的一个润色-即,如果安装说明是:1,那就太好了。用该模板创建一个db;2.打开该数据库,单击“安装”,而不是:1。创建数据库;2.复制邮件模板中的这些元素;3.改变这个和这个,等等。好的,那么肯定是DXL。看看上面的链接。谢谢你的链接卡洛斯,我会接受其他答案,因为示例代码,但我仍然支持你的答案。干杯