2009-06-08 56 views
1

我有一个Lotus Notes应用程序,它实际上由一个模板组成,并带有所需的所有表单,视图和代理。它还需要将此模板的一些设计元素(自定义表单和我们自己类型的文档的视图)复制到邮件模板,以便在所有用户进行常规刷新之后进行复制。Lotus Notes - 脚本创建设计元素

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

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

目前,部署过程是这样的:

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

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

任何想法如何我可以从NotesScript,JavaScript,Java做到这一点?

回答

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的字符串。使用工具 - > 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=""。在开发过程中记住这一点。

+0

感谢您的信息,但我没有看到在该代码中如何设置“目标”数据库,其中我想放置设计元素。 – 2009-06-08 20:10:13

+0

啊,我在编辑代码时不小心删除了对目标数据库的引用。目标数据库是DxlImporter.importDxl的参数。 – 2009-06-09 06:30:46

1

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

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

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

**更新

看你的情况后,有点更加紧密,我认为最简单的途径是使用模板继承。因此,您需要将自定义模板中的元素复制到Mail模板中,并确保将元素设置为从您的自定义模板继承。