一种应用于多技术平台的生成表单的方法及装置 【技术领域】
本发明涉及计算机数据处理技术领域,特别涉及一种应用于多技术平台的生成表单的方法及装置。
背景技术
C/S和B/S是当今世界开发模式技术架构的两大主流技术。这两种技术都有自己一定的市场份额和客户群,各家企业都说自己的管理软件架构技术功能强大、先进、方便,都能举出各自的客户群体,都有一大群文人墨客为自己摇旗呐喊,广告满天飞,可谓仁者见仁,智者见智。
所谓C/S(Client/Server)结构,即客户端和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到客户端(Client)端和服务器(Server)端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构。
所谓B/S(Browser/Server)结构,即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
目前,表单开发者在开发表单时,需要在不同技术平台上对同一种表单分别开发多套,以适应不同的客户环境;此外,在技术迁移或系统集成时,需要重新设计和开发表单界面。
可见,现有的开发并生成表单的方式至少存在以下问题:
(1)需要多次设计开发表单界面,实现成本较高;
(2)当表单界面修改后,需要多处修改,且该修改无法动态完成;
(3)表单业务逻辑在不同技术平台和应用场景下的一致性很难保证;
(4)需要掌握多种平台下开发技术能力的开发者,需要较多资源才能完成。
【发明内容】
本发明实施例的目的在于提供一种应用于多技术平台的生成表单的方法及装置,使得只需开发一次即可在不同环境下应用,且可以动态完成表单界面的修改。
本发明实施例提供了一种应用于多技术平台的生成表单的方法,包括:
获取并保存元数据描述信息;
根据所述元数据描述信息定义表单及表单所包含的表单元数据,将所述表单及其所包含的表单元数据以第一数据结构的形式进行存储;
产生表单所包含的表单元数据,根据表单元数据中的元素属性建立与业务对应的业务数据表并保存;
根据所述第一数据结构中的元素对象以及业务数据表中的表单数据,产生目标平台对应的表单界面和业务处理数据。
其中,所述元数据描述信息包括:元素名称标识、元素名称、元素的属性标识以及属性名称;
每个元素名称标识对应一个元素名称,每个元素的属性标识对应一个属性名称,每个元素名称标识对应一个或多个属性标识。
其中,所述表单所包含的表单元数据由一个或多个元素对象构成,每个元素对象包含一个或多个属性,每个属性由属性名称和属性值构成。
其中,所述根据表单元数据中的元素对象建立与业务对应的业务数据表的步骤包括:
i)从数据库中读取元数据描述信息,之后,判断接收到操作指令,如果是新建操作则执行步骤ii),如果是修改操作则执行步骤iii);
ii)根据新建操作所指示的元素标识所对应元素属性的缺省值构造以第一数据结构表示的表单元数据,之后执行步骤iv);
iii)从数据库中读取表单元数据到第一数据结构中;
iv)遍历第一数据结构中的元素属性,根据元素属性所对应的控件类型创建该元素属性所对应的控件;
v)根据用户的操作判断接收到的操作指令,如果是创建元素操作,则执行步骤vi),如果是更改元素控件外观的操作,则执行步骤vii),如果是设计元素控件的操作则执行步骤viii);
步骤vi)创建元素结构,并将该元素所对应的缺省属性填入所创建的元素结构,将该元素结构添加到第一数据结构中;然后执行步骤ix);
步骤vii)根据元素控件所对应的标识,在第一数据结构中定位到所述元素控件所对应的元素属性数据,更新所述元素属性数据;然后执行步骤ix);所述元素属性数据包括:上、下、高度和/或宽度属性值;
viii)根据元素控件所对应的标识,在第一数据结构中定位到所述元素控件所对应的元素属性数据,对所述元素属性数据进行编辑,将编辑后的元素属性数据同步到所述第一数据结构中;
ix)保存第一数据结构中的表单元数据到数据库中,根据数据库中表单元数据中元素的属性生成建表程序语句,通过所述程序语句建立与业务对应的业务数据表,并保存。
其中,根据所述第一数据结构中的元素对象以及业务数据表中的表单数据,产生目标平台对应的表单界面和业务处理数据地步骤包括:
从数据库中读取表单元数据到内存中的第一数据结构中;
建立字典对象,从所述第一数据结构中读取元素对象,在字典中建立与每个元素对象对应的一个值对象;
根据表单元数据中元素的属性生成查询程序语句,应用所述查询程序语句从业务数据表中读取表单数据,将所读取出的表单数据填充到字典的值对象中;
从内存中的第一数据结构中,逐个读取表单的元素对象,根据该表单元素的类型,动态创建该表单元素类型所对应目标技术平台控件,设置所动态创建的控件的名称为元素标识,根据该元素对象中用于控制外观的属性值,对所述控件的外观属性进行设置,生成表单界面;
将所述动态创建控件的名称与字典中对应的值对象进行绑定,根据所述控件所对应的目标技术平台,对该控件所对应值对象中的数据进行修改,并根据元素的业务逻辑属性进行值合法性校验和业务逻辑控制,保存修改后数据;
根据表单元数据中元素的属性生成更新程序语句,应用所述更新程序语句将字典中值对象中的数据更新到业务数据表中,产生目标平台对应的业务处理数据。
本发明实施例还提供了一种应用于多技术平台的生成表单的装置,包括:
元数据描述信息获取模块,用于从数据库获取元数据描述信息,传送给表单定义装置;
表单元数据处理模块,用于根据所述元数据描述信息定义表单及表单所包含的表单元数据,将所述表单及其所包含的表单元数据以第一数据结构的形式进行存储;
表单定义装置,用于产生表单所包含的表单元数据,根据表单元数据中的元素属性建立与业务对应的业务数据表,将所述业务数据表传送给数据库;
表单运行装置,用于根据所述第一数据结构中的元素对象以及业务数据表中的表单数据,产生目标平台对应的表单界面和业务处理数据;
数据库,用于对接收到的数据进行保存。
其中,所述元数据描述信息包括:元素名称标识、元素名称、元素的属性标识以及属性名称;
每个元素名称标识对应一个元数据名称,每个元素的属性标识对应一个属性名称,每个元素名称标识对应一个或多个属性标识。
其中,所述表单所包含的表单元数据由一个或多个元素对象构成,每个元素对象包含一个或多个属性,每个属性由属性名称和属性值构成。
其中,所述表单定义装置具体包括:
第一判断模块,用于从数据库中读取元数据描述信息,之后,判断接收到操作指令,如果是新建操作则通知新建模块,如果是修改操作则通知修改模块;
新建模块,用于根据新建操作所指示的元素标识所对应元素属性的缺省值构造以第一数据结构表示的表单元数据,之后通知控件创建模块;
修改模块,用于从数据库中读取表单元数据到第一数据结构中,之后通知控件创建模块;
控件创建模块,用于遍历第一数据结构中的元素属性,根据元素属性所对应的控件类型创建该元素属性所对应的控件;
第二判断模块,根据用户的操作判断接收到的操作指令,如果是创建元素操作,则通知元素创建模块,如果是更改元素控件外观的操作,则通知元素控件外观更改模块,如果是设计元素控件的操作则通知元素控件设计模块;
元素创建模块,创建元素结构,并将该元素所对应的缺省属性填入所创建的元素结构,将该元素结构添加到第一数据结构中;然后通知生成模块;
元素控件外观更改模块,用于根据元素控件所对应的标识,在第一数据结构中定位到所述元素控件所对应的元素属性数据,更新所述元素属性数据;然后通知生成模块;所述元素属性数据包括:上、下、高度和/或宽度属性值;
元素控件设计模块,用于根据元素控件所对应的标识,在第一数据结构中定位到所述元素控件所对应的元素属性数据,对所述元素属性数据进行编辑,将编辑后的元素属性数据同步到所述第一数据结构中;
生成模块,用于保存第一数据结构中的表单元数据到数据库中,根据数据库中表单元数据中元素的属性生成建表程序语句,通过所述程序语句建立与业务对应的业务数据表;
传送模块,用于将所业务数据表传送给数据库。
其中,所述表单运行装置包括:
表单元数据访问引擎,用于从数据库中读取表单元数据到内存中的第一数据结构中;
表单业务对象构造引擎,用于建立字典对象,从所述第一数据结构中读取元素对象,在字典中建立与每个元素对象对应的一个值对象;根据表单元数据中元素的属性生成查询程序语句,应用所述查询程序语句从业务数据表中读取表单数据,将所读取出的表单数据填充到字典的值对象中;
表单生成引擎,用于从内存中的第一数据结构中,逐个读取表单的元素对象,根据该表单元素的类型,动态创建该表单元素类型所对应目标技术平台控件,设置所动态创建的控件的名称为元素标识,根据该元素对象中用于控制外观的属性值,对所述控件的外观属性进行设置,生成表单界面;将所述动态创建控件的名称与字典中对应的值对象进行绑定,根据所述控件所对应的目标技术平台,对该控件所对应值对象中的数据进行修改,并根据元素的业务逻辑属性进行值合法性校验和业务逻辑控制,保存修改后数据;根据表单元数据中元素的属性生成更新程序语句,应用所述更新程序语句将字典中值对象中的数据更新到业务数据表中,产生目标平台对应的业务处理数据。
应用本发明实施例提供的应用于多技术平台的生成表单的方法及装置,在表单应用中,由于客户信息技术(IT,Information Technology)环境的不同,同一个表单能够同时支持在不同开发技术下C/S和B/S应用,即既可以运行在浏览器,也可运行在windows程序界面(Windows GUI)中,避免了多次设计表单界面,降低了实现成本,并且,当表单界面修改后,可以动态完成修改,无需人工修改多次。由于可以做到动态完成修改,也就避免了业务逻辑在不同技术平台和应用场景下的不一致,使得无论如何修改都可以保证业务逻辑在不同技术平台和应用场景下的完全一致。并且,由于不需要多次开发,因而不需要掌握多种技术能力的开发者,降低的资源需求,只需较少的资源即可实现本发明,进一步降低了成本。
再有,应用本发明所述方法做到了对表单的一次定义,实现基于多技术平台的运行。此外,在不同技术平台如Java、.NET开发的系统中,当系统集成过程中需要进行表单的相互调用时,也能够做到通过一次定义表单,在多个技术平台中运行。在开发技术迁移过程中,如从.NET迁移到Java或从Java迁移到.NET时,无需重新设计开发。
【附图说明】
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种应用于多技术平台的生成表单的方法流程图;
图2是根据本发明实施例的元素及其属性的对应关系示意图;
图3是根据本发明实施例的表单及其所包含的表单元数据的结构示意图;
图4是根据本发明实施例的一个表单定义装置的实例;
图5是根据本发明实施例的根据表单元数据中的元素对象建立与业务对应的业务数据表的流程图;
图6,其是多技术平台表单运行引擎的逻辑结构示意图;
图7,其是根据本发明实施例的根据所述第一数据结构中的元素对象以及业务数据表中的表单数据,产生目标平台对应的表单界面和业务处理数据的流程图;
图8是根据本发明实施例的一种应用于多技术平台的生成表单的装置结构示意图。
【具体实施方式】
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,其是根据本发明实施例的一种应用于多技术平台的生成表单的方法流程图,具体包括:
步骤101,获取并保存元数据描述信息;
本实施例中,将将组成表单的元素,如字段、控件、窗口等,及其属性抽象出来,形成与技术无关的元数据描述信息。
上述元数据描述信息是与技术无关的,可以具体包括:元素、元素属性
元素包括元素标识和元素名称,元素属性包括属性标识和属性名称。
其中,元素标识和元素名称的对应关系如表1所示,元素的属性标识以及属性名称的对应关系如表2所示。
表1
元素标识 元素名称 1 文本 2 小数
3 整数 4 日期 5 长日期 6 备注 7 大文本 8 复选框 9 下拉列表 10 单据编号 11 基础资料 12 基础资料属性 13 核算项目类别 14 核算项目 15 制单人 16 用户 17 批次 18 单价 19 金额 20 数量 21 组合 22 自定义查找 23 GUID 24 源单类型(选单) 25 源单编号(选单) 26 基本单位数量 27 基本单位单价 28 标签 29 按钮 30 Shape 31 线条 32 单据头 33 单据体 34 附件数 35 页签 36 框架 37 凭证字号 38 源单内码 39 源单分录 40 源单编号 41 源单类型 42 打印次数 43 图片
表2
元素的属性标识ID 元素的属性名称 1 简体中文标题 2 繁体中文标题 3 英文标题 4 上 5 左 6 高度 7 宽度 8 标题宽度 9 锁定 10 可见性 11 字体 12 边框颜色 13 文本颜色 14 标题颜色 15 表 16 所在层 17 字段名 18 值来源类型 19 携带字段 20 长度 21 边框 22 必录 23 缺省值 24 连续新增携带 25 加载更新事件 26 值更新事件 27 保存规则
每个元素标识对应一个元素名称,每个元素的属性标识对应一个属性名称,每个元素名称标识可以对应一个或多个属性标识,且每个属性标识下还可以包括属性缺省值信息,具体如图2所示。
步骤102,根据所述元数据描述信息定义表单及表单所包含的表单元数据,将所述表单及其所包含的表单元数据以第一数据结构的形式进行存储;
这里,本步骤中的表单元数据是由步骤101中的元数据描述信息组成,本步骤是用来记录构成具体表单的各个元素及其属性值,以便在表单产生时,通过不同技术平台的表单运行装置能够动态解析加载所产生的表单。也就是说,所述表单所包含的表单元数据由一个或多个元素对象构成,每个元素对象包含一个或多个属性,每个属性由属性名称和属性值构成。
参见图3,其是根据本发明实施例的表单及其所包含的表单元数据的结构示意图,由图3可知,一个表单可以对应一个或多个元素,每个元素可以包含一个或多个属性值,例如,元素标识即是元素的属性值之一。
也就是说,表单由一个以上的元素对象构成,其以第一数据结构的形式存储于内存中。内存中的第一数据结构的表现形式如表3和表4所示,其中,表3为表单的第一数据结构,其描述表单名称等信息;表4为表单元素的第一数据结构,其描述构成表单的坐标、外观、业务逻辑等属性的值信息。
表3
字段代码字段名称说明FFunctionID子系统ID表单所在的子系统IDFClassTypeID表单类型ID表单类型IDFName_CHS表单的中文名称表单的中文名称FName_CHT表单的繁体中文名称表单的繁体中文名称FName_EN表单的英文名称表单的英文名称
表4
字段代码字段名称说明FIDFID主键,Identity(1,1),自增长关键字FClassTypeID单据类型ID表单类型ID(关联上表中表单类型ID)FKey元素的Key值元素的key值,唯一标识单据上的一个元素FTop上元素在单据上的上边距(坐标)FLeft左元素在单据上的左边距(坐标)FWidth宽度元素控件的宽度(外观属性)FHeight高度元素控件的高度(外观属性)FCaption_CHS元素简体中文标题在简体中文环境下,元素输入控件的标签
名称(外观属性)FCaption_CHT元素繁体中文标题在繁体中文环境下,元素输入控件的标签的名称(外观属性)FCaption_EN元素英文标题在英文环境下,元素输入控件的标签的名称(外观属性)FLabelWidth标题宽度元素的标题宽度(外观属性)Flock锁定元素是否是可用的(外观属性)FVisible可见性元素是在哪种状态下可见(外观属性)FFont字体元素输入控件的字体(外观属性)FFrameBorderColor边框颜色元素边框的元素(外观属性)FTextColor文本颜色元素输入控件的文本颜色(外观属性)FLableColor标题颜色元素输入控件的标签的颜色(外观属性)FTableName表元素输入的值保存的物理表的名称(逻辑属性)FField字段名元素输入的值保存到物理表的字段名称(逻辑属性)FDataSource值来源类型元素的可选择哪些值(逻辑属性)FFieldNameExt携带字段携带字段(逻辑属性)FLength长度元素数据输入最大长度(逻辑属性)FFrameBorder边框元素输入控件是否有边框(外观属性)FMustInput必录元素输入的值是否必须(逻辑属性)FDefault缺省值(逻辑属性)FNewValue连续新增携带(逻辑属性)FNewEvents加载更新事件(逻辑属性)FSaveEvents值更新事件(逻辑属性)
FSaveRule 保存规则 表单上值保存规则
步骤103,产生表单所包含的表单元数据,根据表单元数据中的元素对象建立与业务对应的业务数据表并保存;
本步骤的具体流程在图4、5中说明。
步骤104,根据所述第一数据结构中的元素对象以及业务数据表中的表单数据,产生目标平台对应的表单界面和业务处理数据。
本步骤中,通过多技术平台表单运行引擎即可实现产生目标平台对应的表单界面和业务处理数据,本步骤的具体流程在图6、7中说明。
至此,实现了基于多技术平台的生成表单。
参见图4,其是根据本发明实施例的一个表单定义装置的实例。该表单定义装置也可以被称为可视化的表单设计器。
参见图5,其是根据本发明实施例的根据表单元数据中的元素对象建立与业务对应的业务数据表的流程图,即步骤103的具体实现流程。参见图4和图5,具体包括:
步骤501,从数据库中读取元数据描述信息;
具体的,可以从数据库中读取元素标识到工具箱中;
步骤502,判断接收到操作指令,如果是新建操作则执行步骤503,如果是修改操作则执行步骤504;
具体的,根据用户所选择的表单设计操作类型,来决定是新建操作还是修改操作,如果是新建操作则执行步骤503,如果是修改操作则执行步骤504;
步骤503,根据新建操作所指示的元素标识所对应元素属性的缺省值构造以第一数据结构表示的表单元数据,之后执行步骤505;
具体的,可以根据元素缺省属性构造第一数据结构;
步骤504,从数据库中读取表单元数据到第一数据结构中;
步骤505,遍历第一数据结构中的元素属性,根据元素属性所对应的控件类型创建该元素属性所对应的控件;
具体的,逐个读取第一数据结构中的元素属性,根据元素属性所对应的控件类型在设计版面上创建控件。
步骤506,根据用户的操作判断接收到的操作指令,如果是创建元素操作,则执行步骤507,如果是更改元素控件外观的操作,则执行步骤508,如果是设计元素控件的操作则执行步骤509;
具体的,判断鼠标的动作,如果是从工具箱中拖动元素到面板,则确定其需要创建元素,执行步骤507,如果鼠标移动改变面板上元素控件的大小和坐标,则确定是需要执行更改元素控件外观的操作,执行步骤508,如果鼠标选择了设计面板上的元素控件,则确定其是需要执行设计元素控件的操作,执行步骤509;
步骤507,创建元素结构,并将该元素所对应的缺省属性填入所创建的元素结构,将该元素结构添加到第一数据结构中;然后执行步骤511;
步骤508,根据元素控件所对应的标识,在第一数据结构中定位到所述元素控件所对应的元素属性数据,更新所述元素属性数据;然后执行步骤511;所述元素属性数据包括:上、下、高度和/或宽度属性值;
步骤509,根据元素控件所对应的标识,在第一数据结构中定位到所述元素控件所对应的元素属性数据;
具体的,根据元素控件所对应的标识,在第一数据结构中定位到所述元素控件所对应的元素属性值的数据,将该数据读取到属性编辑表格中;
步骤510,对所述元素属性数据进行编辑,将编辑后的元素属性数据同步到所述第一数据结构中;
具体的,在属性编辑表格中对所述元素属性数据进行编辑;
步骤511,保存第一数据结构中的表单元数据到数据库中,
步骤512,根据数据库中表单元数据中元素的属性生成建表程序语句,通过所述程序语句建立与业务对应的业务数据表,并保存。
上述元素的属性可以是表的属性和字段名属性;
上述建表程序语句可以是建表SQL语句。
至此,完成了业务数据表的建立,但是,此时建立的业务数据表实际是一个空表,即没有实际数据的表。
参见图6,其是多技术平台表单运行引擎的逻辑结构示意图,本实施例中,在数据访问层可以包括JAVA表单元数据访问引擎和/或.NET表单元数据访问引擎,在逻辑层可以包括JAVA动态业务对象构造引擎和/或.NET动态业务对象构造引擎,在展现层可以包括JAVA Swing表单生成引擎和/或JAVA JSP表单生成引擎和/或.NET WinForm表单生成引擎和/或.ASP.NET表单生成引擎,从而使得同一个表单可以同时支持在C/S和B/S应用,在技术迁移时无需重新开发。
参见图7,其是根据本发明实施例的根据所述第一数据结构中的元素对象以及业务数据表中的表单数据,产生目标平台对应的表单界面和业务处理数据的流程图。参见图6和图7,具体包括:
步骤701,表单数据访问引擎从数据库中读取表单元数据到内存中的第一数据结构中;
上述表单数据访问引擎可以是基于JAVA的,也可以是基于.NET的。
步骤702,表单业务对象构造引擎建立字典对象,从所述第一数据结构中读取元素对象,在字典中建立与每个元素对象对应的一个值对象;
上述表单业务对象构造引擎可以是基于JAVA的,也可以是基于.NET的。
步骤703,表单业务对象构造引擎根据表单元数据中元素的属性生成查询程序语句,应用所述查询程序语句从业务数据表中读取表单数据,将所读取出的表单数据填充到字典的值对象中;
上述元素的属性可以是表的属性和字段名属性;
上述建表程序语句可以是查询SQL语句;
上述表单业务对象构造引擎可以是基于JAVA的,也可以是基于.NET的。
步骤704,表单生成引擎从内存中的第一数据结构中,逐个读取表单的元素对象,根据该表单元素的类型,动态创建该表单元素类型所对应目标技术平台控件,设置所动态创建的控件的名称为元素标识,根据该元素对象中用于控制外观的属性值,对所述控件的外观属性进行设置,生成表单界面;
上述表单生成引擎可以是基于JAVA Swing的、JAVA JSP的、.NETWinForm的以及.ASP.NET的;
上述根据该表单元素的类型,动态创建该表单元素类型所对应技术控件可以是这样的:例如,文本元素类型,在Java Swing技术下创建JText控件,在JSP技术下创建HTML Text控件,在.NET WinForm技术下创建WindowsText控件,在ASP.NET下创建ASP.NET的Text控件;
上述用于控制外观的属性值包括:坐标、颜色、大小和/或字体等等。
步骤705,表单生成引擎将所述动态创建控件的名称与字典中对应的值对象进行绑定,根据所述控件所对应的目标技术平台,对该控件所对应值对象中的数据进行修改,并根据元素的业务逻辑属性进行值合法性校验和业务逻辑控制,保存修改后数据;
上述表单生成引擎可以是基于JAVA Swing的、JAVA JSP的、.NETWinForm的以及.ASP.NET的;
步骤706,表单生成引擎根据表单元数据中元素的属性生成更新程序语句,应用所述更新程序语句将字典中值对象中的数据更新到业务数据表中,产生目标平台对应的业务处理数据。
上述表单生成引擎可以是基于JAVA Swing的、JAVA JSP的、.NETWinForm的以及.ASP.NET的;
上述元素的属性可以是表的属性和字段名属性;
上述建表程序语句可以是更新SQL语句;
至此,更新了业务数据表,产生了与目标平台对应的业务处理数据。
可见,应用本发明实施例提供的应用于多技术平台的生成表单的方法,在表单应用中,由于客户信息技术(IT,Information Technology)环境的不同,同一个表单能够同时支持在不同开发技术下C/S和B/S应用,即既可以运行在浏览器,也可运行在windows程序界面(Windows GUI)中,避免了多次设计表单界面,降低了实现成本,并且,当表单界面修改后,可以动态完成修改,无需人工修改多次。由于可以做到动态完成修改,也就避免了业务逻辑在不同技术平台和应用场景下的不一致,使得无论如何修改都可以保证业务逻辑在不同技术平台和应用场景下的完全一致。并且,由于不需要多次开发,因而不需要掌握多种技术能力的开发者,降低的资源需求,只需较少的资源即可实现本发明,进一步降低了成本。
再有,应用本发明所述方法做到了对表单的一次定义,实现基于多技术平台的运行。此外,在不同技术平台如Java、.NET开发的系统中,当系统集成过程中需要进行表单的相互调用时,也能够做到通过一次定义表单,在多个技术平台中运行。在开发技术迁移过程中,如从.NET迁移到Java或从Java迁移到.NET时,无需重新设计开发。
本发明还提供了一种应用于多技术平台的生成表单的装置,参见图8,包括:
元数据描述信息获取模块801,用于从数据库获取元数据描述信息,传送给表单定义装置;
表单元数据处理模块802,用于根据所述元数据描述信息定义表单及表单所包含的表单元数据,将所述表单及其所包含的表单元数以第一数据结构的形式进行存储;
表单定义装置803,用于产生表单所包含的表单元数据,根据表单元数据中的元素对象建立与业务对应的业务数据表,将所述业务数据表传送给数据库;
表单运行装置804,用于根据所述第一数据结构中的元素对象以及业务数据表中的表单数据,产生目标平台对应的表单界面和业务处理数据;
数据库805,用于对接收到的数据进行保存。
上述元数据描述信息包括:元素名称标识、元素名称、元素的属性标识以及属性名称;每个元素名称标识对应一个元数据名称,每个元素的属性标识对应一个属性名称,每个元数据名称标识对应一个或多个属性标识。
上述表单所包含的表单元数据由元数据描述信息中的一个或多个元素对象构成,每个元素对象包含一个或多个属性,每个属性由属性名称和属性值构成。
上述表单定义装置803具体包括:
第一判断模块,用于从数据库中读取元数据描述信息,之后,判断接收到操作指令,如果是新建操作则通知新建模块,如果是修改操作则通知修改模块;
新建模块,用于根据新建操作所指示的元素标识所对应的元素属性构造以第一数据结构表示的表单元数据,之后通知控件创建模块;
修改模块,用于从数据库中读取表单元数据到第一数据结构中,之后通知控件创建模块;
控件创建模块,用于遍历第一数据结构中的元素属性,根据元素属性所对应的控件类型创建该元素属性所对应的控件;
第二判断模块,根据用户的操作判断接收到的操作指令,如果是创建元素操作,则通知元素创建模块,如果是更改元素控件外观的操作,则通知元素控件外观更改模块,如果是设计元素控件的操作则通知元素控件设计模块;
元素创建模块,创建元素结构,并将该元素所对应的缺省属性填入所创建的元素结构,将该元素结构添加到第一数据结构中;然后通知生成模块;
元素控件外观更改模块,用于根据元素控件所对应的标识,在第一数据结构中定位到所述元素控件所对应的元素属性数据,更新所述元素属性数据;然后通知生成模块;所述元素属性数据包括:上、下、高度和/或宽度属性值;
元素控件设计模块,用于根据元素控件所对应的标识,在第一数据结构中定位到所述元素控件所对应的元素属性数据,对所述元素属性数据进行编辑,将编辑后的元素属性数据同步到所述第一数据结构中;
生成模块,用于保存第一数据结构中的表单元数据到数据库中,根据数据库中表单元数据中元素的属性生成建表程序语句,通过所述程序语句建立与业务对应的业务数据表;
传送模块,用于将所业务数据表传送给数据库。
上述表单运行装置804包括:
表单元数据访问引擎,用于从数据库中读取表单元数据到内存中的第一数据结构中;
表单业务对象构造引擎,用于建立字典对象,所述第一数据结构中读取元素对象,在字典中建立与每个元素对象对应的一个值对象;根据表单元数据中元素的属性生成查询程序语句,应用所述查询程序语句从业务数据表中读取表单数据,将所读取出的表单数据填充到字典的值对象中;
表单生成引擎,用于从内存中的第一数据结构中,逐个读取表单的元素对象,根据该表单元素的类型,动态创建该表单元素类型所对应目标技术平台控件,设置所动态创建的控件的名称为元素标识,根据该元素对象中用于控制外观的属性值,对所述控件的外观属性进行设置,生成表单界面;将所述动态创建控件的名称与字典中对应的值对象进行绑定,根据所述控件所对应的目标技术平台,对该控件所对应值对象中的数据进行修改,并根据元素的业务逻辑属性进行值合法性校验和业务逻辑控制,保存修改后数据;根据数据库中表单元数据中元素的属性生成更新程序语句,应用所述更新程序语句将字典中值对象中的数据更新到业务数据表中,产生目标平台对应的业务处理数据。
应用本发明实施例提供的应用于多技术平台的生成表单的装置,在表单应用中,由于客户信息技术(IT,Information Technology)环境的不同,同一个表单能够同时支持在不同开发技术下C/S和B/S应用,即既可以运行在浏览器,也可运行在windows程序界面(Windows GUI)中,避免了多次设计表单界面,降低了实现成本,并且,当表单界面修改后,可以动态完成修改,无需人工修改多次。由于可以做到动态完成修改,也就避免了业务逻辑在不同技术平台和应用场景下的不一致,使得无论如何修改都可以保证业务逻辑在不同技术平台和应用场景下的完全一致。并且,由于不需要多次开发,因而不需要掌握多种技术能力的开发者,降低的资源需求,只需较少的资源即可实现本发明,进一步降低了成本。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。