2010-06-16 128 views
2

这是我的第一个堆栈溢出,它是一个复杂的溢出。抱歉。从基本形式和XML生成自定义表单文档?

我的任务是从基本模板生成自定义文档,再加上一些不带的XML ,每个案例都有一个自定义表单设计元素。

这里的全貌

  • 我们正在建设一个Lotus Notes(客户端,不是web)申请世界广泛应用的访问控制;范围就像400.000个用户能够请求访问1000多个应用程序中的任何一个。每个应用程序都需要自己的请求表单 - 不同数量的审批者,各种所需的信息,等等。
  • 我们根本不能在数据库中有一千个表单(每个应用程序一个表单),无论如何他们的维护确实需要从开发人员推到应用程序所有者。
  • 因此,我们希望创建一个通用的“模板”表单,该表单存储一个基本字段块,但允许应用程序所有者定义另一个字段块动态 - “我想要一个强制在这里名为'Name'的纯文本字段,然后是一个名为'Due'的日期字段,这个字段必须晚于今天的日期,然后......“。我希望这是有道理的(如果没有的话,可以将其视为一般问卷应用)。
  • 我几乎都有适合于设计动态字段的结构(表单生成器GUI - > XML编码数据 - >用于注入表单的预渲染DXL),包括字段类型的标记,值选项,和基本的现场验证指示。

我的问题是生成与在适当的位置注入该动态内容的文档(不必为每一种情况下的自定义表单设计元素)。

  • 通过HTML做动态内容已经结束。 Notes客户端Web渲染简直太穷了,实现诸如字段验证指令,日期选择器和名称查找之类的东西是相当大的挑战。
  • 另一方面,DXL允许我们使用本机Notes字段和代码。
    • 作为一个技术演示,我设法实现了一个自定义表单生成器,它将动态内容的预渲染DXL注入到基础表单中;但正如我所说的,我们不需要大量的自定义表单设计元素。
    • 我试图实现一种方法来创建“存储在文档中的窗体”标志集的文档,但是一旦我从基本窗体创建文档,我无法获得DXL访问存储的窗体设计,所以我不能注入我的动态内容。

我知道这是不是说明是有史以来打算这样做。 有没有人试过类似的东西(并得到它)?

感谢您阅读这篇文章。

随着一大堆感谢提前

月Gundtofte - 布鲁恩

回答

0

我最后做不同的有点。

我仍然会使用选项“在文档存储格式”,以确保每个提交的请求可以独自站立;但“请求”文档将基于数百/数千个单独的表单(是的,数以千计;研究和测试表明它不应该是性能问题)。然后,这些许多表单将以编程方式生成。

我设置它,以便“模板作者”可以创建“请求模板”,这是在他们的XML块正常文档。后台代理会将所有这些文档并将每个xml块和一个基本窗体处理为新的自定义窗体。这些自定义表单将呈现给用户以从中创建其“请求”文档。

1

我真的没有给你一个答案,但一些想法:

我知道你提到应用程序必须适用于Notes客户端而不是Web - 是绝对的吗? Domino Web应用程序可以灵活地执行您所需的操作,而不必将其强制转换为Notes客户机。 (也许是一个混合应用程序 - 通过浏览器填写请求表单,但报告/工作流程是通过Notes客户端完成的?)

假设这是绝对的,那么我会重新访问DXL选项 - 是的,您可能最终会在数据库中包含1,000多个表单(或更好的子表单),但这真的是个问题吗?我不知道任何形式的数量上限(定义或实际)。而且,您不会手动“维护”这些(子)表单 - 您的代码只会检测对配置文档的更改,然后重新生成适当的表单备注。

要限制的设计元素的实际数目,也许你可以实现一个“模板”的概念 - 在你的系统,使多个“应用”可以使用相同的访问请求的“模板”。

+0

感谢您的提示答案!我们有我们的(复杂)原因,为什么我们更愿意在本地而不是在浏览器中执行此操作,尽管如果必须的话我们可能会这样做。 我似乎无法找到为什么有1.000子窗体将是一个坏主意的任何文件 - 我只是把建筑师的话。多么尴尬。我会调查! 我已经深入DXL。 :-)应用程序需要自我修改才能以编程方式维护子窗体,所以_something_必须具有开发人员访问权限。卖给业务控制人员可能会很棘手。 – KlaymenDK 2010-06-17 15:32:24