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,可以模拟运行时的读取和保存,在表单展现器中的读取和保存将有更多方式。