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

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

修改為My Template

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

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

如果出現成功提示,就表示已經保存在本地數據庫中了。
讀取
進入Template 頁,點擊“Load From LocalDB”

選取剛才建立的模板

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

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

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


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

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

選取剛才建立的模板

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

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

模板數據表,這里存放表單模板的定義,Template

表單數據庫表,這里存放表單數據,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+數據庫接口。

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

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

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

如果出現成功提示,就表示已經保存在本地數據庫中了。
讀取
進入Template 頁,點擊“Load From LoaclDB”

選取剛才建立的模板

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

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