從用戶(hù)的視角出發(fā),Orbeon Forms 架構(gòu)很簡(jiǎn)單。 它由 Form Builder(表單編輯器)和 Form Runner(表單運(yùn)行時(shí))組成,與數(shù)據(jù)庫(kù)(持久層)對(duì)話(huà)。 此外,與用戶(hù)管理系統(tǒng)的集成也是一種常見(jiàn)的場(chǎng)景。 您已經(jīng)使用 Form Builder 創(chuàng)建了表單,發(fā)布了這些表單,并設(shè)置了 Orbeon Forms,以便它將表單捕獲的數(shù)據(jù)存儲(chǔ)在您的關(guān)系數(shù)據(jù)庫(kù)中。 現(xiàn)在,您的另一個(gè)應(yīng)用程序如何訪(fǎng)問(wèn)這些數(shù)據(jù)? 有三種設(shè)計(jì)方式。
下面逐一介紹。 方法1. Send data on submit在大多數(shù)情況下,這是最好的選擇,也是我們推薦的選擇。 本質(zhì)上,您設(shè)置 Orbeon Forms,以便當(dāng)用戶(hù)填寫(xiě)表單并提交時(shí),Orbeon Forms 會(huì)將用戶(hù)輸入的數(shù)據(jù)發(fā)送到您的應(yīng)用程序。 您的應(yīng)用程序可以使用這些數(shù)據(jù)做任何它想做的事情,如果需要,在對(duì) Orbeon Forms 的響應(yīng)中,您的應(yīng)用程序可以告訴 Orbeon Forms 用戶(hù)接下來(lái)應(yīng)該轉(zhuǎn)到哪個(gè)頁(yè)面。 當(dāng)用戶(hù)單擊在 Form Builder 中創(chuàng)建的表單上的提交按鈕(或就此而言表單底部的任何其他按鈕)時(shí),將運(yùn)行一個(gè)流程。 本質(zhì)上,一個(gè)流程定義了一系列要執(zhí)行的操作,其中之一可以是將數(shù)據(jù)發(fā)送到您的應(yīng)用程序。 目前,流程定義在您的 properties-local.xml 中。 在您的流程中,您將使用 send() 操作來(lái)指示 Orbeon Forms 將用戶(hù)輸入的數(shù)據(jù)發(fā)布到您選擇的 URL。 你的應(yīng)用程序可以用它接收的數(shù)據(jù)做它想做的事情:在數(shù)據(jù)庫(kù)中執(zhí)行一些操作,調(diào)用服務(wù)等。 如果您將 replace = "all" 參數(shù)傳遞給 send(),那么您的應(yīng)用程序在 HTTP 響應(yīng)中發(fā)送回 Orbeon Forms 的內(nèi)容將被 Orbeon Forms 發(fā)送/代理回瀏覽器。 這允許您發(fā)送自定義確認(rèn)頁(yè)面,或重定向到用戶(hù)接下來(lái)應(yīng)該轉(zhuǎn)到的另一個(gè)頁(yè)面或表單。 方法2. Call the REST API您的第二個(gè)選擇是讓您的應(yīng)用程序調(diào)用 Orbeon Forms 持久性 API 來(lái)檢索 Orbeon Forms 保存在數(shù)據(jù)庫(kù)中的數(shù)據(jù)。 這是一個(gè)簡(jiǎn)單的 REST API,您需要首先調(diào)用搜索 API 以列出使用特定表單提交或保存的數(shù)據(jù),然后調(diào)用 CRUD API 以檢索您感興趣的任何數(shù)據(jù)。 如前所述,Orbeon Forms 提供的 API 非常簡(jiǎn)單,但在調(diào)用此類(lèi) API 時(shí)需要記住一些復(fù)雜情況,這通常會(huì)使上述選項(xiàng) 1 更可?。?/p>
方法3. Accessing the database根據(jù)上述選項(xiàng) 2,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)而不是通過(guò) API 會(huì)增加升級(jí) Orbeon Forms 時(shí)需要更改代碼的可能性,因?yàn)?Orbeon 表的格式比 API 更可能更改。 盡管有此警告,但我們發(fā)現(xiàn)客戶(hù)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常比通過(guò) API 訪(fǎng)問(wèn)更實(shí)用。 |
|