FreeForm模板及數(shù)據(jù)外部存取接口及方式
引言
因為FreeForm的設計方向是支援企業(yè)業(yè)務的表單引擎,所以必須要有開放式的模板及數(shù)據(jù)外部存取接口,雖然也是基于XML,但我們和一些商業(yè)產(chǎn)品的做法不一樣,比如InfoPath,使用InfoPath來做表單,那么客戶端必須用Office InfoPath,服務器端必須要用SharePoint,InfoPath的XML數(shù)據(jù)也很難被外部程序應用,更加不用說模板XML文件了,這實在是很封閉的環(huán)境。
而FreeForm的模板及數(shù)據(jù)外部存取接口非常開放,目前提供三種方式:
1、 WCF+數(shù)據(jù)庫,您可以選擇自建存放模板和表單數(shù)據(jù)的數(shù)據(jù)庫,SQL Server、Oracle、My SQL甚至ACCESS都可以;
2、 客戶端本地數(shù)據(jù)庫存儲,我們建立了一個Silverlight客戶端數(shù)據(jù)庫,用于沒有數(shù)據(jù)庫環(huán)境的用戶;
3、 XML存儲,這個是沒有Namespace的XML,外部第三方程序存取相當?shù)谋憷?/span>
模板客戶端本地數(shù)據(jù)庫存儲
我們?yōu)?/span>FreeForm編寫了一個本地的對象數(shù)據(jù)庫,寄存于客戶端Silverlight,無需用戶安裝任何數(shù)據(jù)庫系統(tǒng),這樣在沒有服務器數(shù)據(jù)庫環(huán)境的情況下,也可以存取表單模板和表單數(shù)據(jù)。
保存
首先我們先建立一個表單,點擊“New Template”如下圖:

修改模板的名稱,點擊“Template Options”

修改為My Template

在模板布局拖放一些控件:

進入Template 頁,點擊“Save To LoaclDB”

如果出現(xiàn)成功提示,就表示已經(jīng)保存在本地數(shù)據(jù)庫中了。
讀取
進入Template 頁,點擊“Load From LocalDB”

選取剛才建立的模板

然后,我們可以看到,模板被讀取進來了。

模板XML存儲
保存
首先先建立一個表單,點擊“New Template”如下圖:

在模板布局拖放一些控件:


進入Template 頁,點擊“Save To Loacl”,然后在本地進行保存。

讀取
進入Template 頁,點擊“Load From Local”

選取剛才建立的模板

然后,我們可以看到,模板被讀取進來了。

模板WCF+數(shù)據(jù)庫方式
首先建立數(shù)據(jù)庫,以SQL Server為例:

模板數(shù)據(jù)表,這里存放表單模板的定義,Template

表單數(shù)據(jù)庫表,這里存放表單數(shù)據(jù),FormData

我們可以看到TempateXml 和 DataXml都是XML類型的。
建表腳本如下:
USE [FreeFormDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Template](
[Guid] [nvarchar](36) NULL,
[TemplateName] [nvarchar](50) NOT NULL,
[TemplateXml] [xml] NULL,
[Type] [nvarchar](10) NULL,
[Version] [nvarchar](10) NULL,
[UpdatedDateTime] [datetime] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FormData](
[InstanceID] [nvarchar](36) NULL,
[TemplateID] [nvarchar](36) NULL,
[TemplateName] [nvarchar](50) NULL,
[DataXml] [xml] NULL,
[UpdatedDateTime] [datetime] NULL
) ON [PRIMARY]
GO
然后,在客戶端的配置文件中,必須首先配置與服務端匹配的certificate代碼,這樣只用通過認證的用戶才能訪問FreeForm的WCF+數(shù)據(jù)庫接口。

保存
首先我們先建立一個表單,點擊“New Template”如下圖:

在模板布局拖放一些控件:

進入Template 頁,點擊“Save To Server”

如果出現(xiàn)成功提示,就表示已經(jīng)保存在本地數(shù)據(jù)庫中了。
讀取
進入Template 頁,點擊“Load From LoaclDB”

選取剛才建立的模板

然后,我們可以看到,模板被讀取進來了。

表單數(shù)據(jù)讀取
進入表單設計器的Runtime Design,可以模擬運行時的讀取和保存,在表單展現(xiàn)器中的讀取和保存將有更多方式。
