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

时间:2009-06-08 18:42:08

标签: scripting templates lotus-notes lotus-domino

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

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

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

目前,部署过程如下:

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

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

2 个答案:

答案 0 :(得分: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导入程序不是强大且容错的:可以使Developer客户端在有效XML的输入上崩溃,并且与DTD一致。例如,尝试在字段上设置fieldhint=""。在开发过程中牢记这一点。

答案 1 :(得分:1)

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

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

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

**更新

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