2010-06-16 81 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