基于普元平台的大对象数据应用研究

2015-04-29 00:44:03李峰
智能计算机与应用 2015年1期

李峰

摘 要:针对审批流程中大对象数据的应用需求,以普元EOS Studio为设计开发平台,以BLOB类型数据为例,采用上传文件类型提供的属性进行大对象数据的赋值和文件大小判断,并通过运算逻辑“expandLobProperty”获取数据库中的大对象数据,同时,运用自定义函数实现图片格式选择和图片预览等功能。该研究详细阐述了其技术实现过程,对其他类型大对象数据在普元平台上的应用提供了借鉴。

关键词:大对象;普元;EOS;LOB;BLOB

中图法分类号:TP311 文献标识号:A 文章编号:2095-2163(2015)01-

Abstract: According to the demand of large object data application in the approval process,this paper uses the property of the upload file type to provide the assignment and judge the size of large object data,taking Primeton EOS Studio as a design and development platform with BLOB data as examples,through the operation logic "expandLobProperty" access to large object data in the database. At the same time,it uses user-defining function to realize the function such as selection and preview of image. The study explains the technical implementation process in details,and provides reference to other types of large object data in Primeton platform application.

Key words: Large Object; Primeton; EOS; LOB; BLOB

0 引 言

随着各部门业务需求和应用的不断深入,企业办公自动化OA(Office Automation)系统[1-3]正在用于处理日益复杂的管理流程和业务数据。其中,不仅要处理如文本、数值、日期等简单类型的数据,而且更要处理Office、WPS Office和PDF等多种文件格式以及图片等复杂类型的数据[4],因而如何在审批流程中实现对大对象数据的快速高效处理,并进一步提升用户体验,则是系统设计与开发的关键问题之一。本文即基于普元EOS Studio 6.2集成开发平台,实现了图片类二进制大对象数据在Oracle 11g数据库系统上的应用与管理。

1 普元平台简介

普元Primeton EOS平台是一款建立在J2EE之上的基于面向服务的体系架构SOA(Service Oriented Architecture)[5-6]的应用软件平台,通过采用多层体系结构,提供了面向构件的应用机制,并且在功能上主要包括:EOS构件运行和管理环境、EOS工作流、EOS构件库和EOS构件集成开发环境四大模块。普元EOS集成开发环境(EOS Studio)是将设计、开发、组装、调试、维护、部署、监管和发布融于一体,且据此而实现了对SOA应用和服务全生命周期的开发、维护和管理功能[7]。

2 大对象数据简介

Oracle数据库支持的LOB(Large Object,大对象)数据类型分内部LOB(包括Blob、Clob、Nclob和Long Raw,这些数据存储在Oracle数据库内部)和外部LOB(Bfile)。其中,Bfile是在数据库外部保存的二进制对象,数据完整性由操作系统来实现维护[8]。而Blob存储的通用二进制数据则在客户端和服务器之间具有较高的传输效率[9],最大容量为4GB,适用于存储非文本的字节流数据,如图片、视频、音频及程序等[10-11]。Clob却用来存储可变长度的字符型数据,最大容量为4GB,且多用于存储长文本数据[8-9]。另外,还有Nclob可用于存储民族字符型数据,最大容量为4GB[11-12]。Long Raw同样存储无结构的二进制数据,最大容量为2GB,但一个表最多只能有一列Long Raw类型数据 [8]。

3 大对象数据应用与实现

本文选择Blob数据类型,以某审批流程中照片的处理为例,具体描述基于普元平台的大对象数据应用过程。在该流程中,当申请者填写申请单并启动运作流程时,需要上传合适大小的照片并能实时预览,当相关部门领导审核该单据时,即需从数据库中检索出该申请者的照片并显示在页面上;同时,若申请单被驳回至申请环节,则需允许申请者重新上传照片或删除原有照片。

3.1 数据库设计

在Oracle数据库中创建表TBL_DOCMANAGEMENT,该表描述流程运转时需要传递的相关内容,对应字段主要包括主键、流程发起人、单位、流程实例ID、照片等,其中照片的字段名称为photo,数据类型定义则为Blob。

3.2 导入数据实体

普元EOS Studio平台提供数据建模工具,本例中为该流程新建构件包com.hf.docManagement,在该构件包的数据构件下创建数据集,通过新建数据集即可导入数据实体,导入时选择数据库表格TBL_DOCMANAGEMENT即可。

3.3 页面流设计

由于审批流程主要包括申请和审核两大环节,其页面处理过程完全不同,因而需要在普元EOS Studio平台分别设计申请环节的页面流和审核环节的页面流。

3.3.1 申请页面流设计

创建页面流时,只需在构件包com.hf.docManagement中依次展开构件和页面流部件的模型表示,并单击鼠标右键即可创建页面流。在本例中创建的申请环节页面流可如图1所示。

在上图中页面图元“input”为后文将要设计的申请页面,逻辑流“getProcessDefID”用来根据流程定义名称获取流程ID,逻辑流“insert”用来保存申请时填写的业务表数据并创建和启动流程实例,保存业务数据时用到运算逻辑 “insertEntity”(位于普元平台基础构件包com.eos.foundation.database.DatabaseUtil中),处理过程不涉及大对象数据,不再详述。

流程发起人在填写申请单时可以选择上传照片,也可以不上传,若上传照片则照片大小将限制为不可超过15KB,判断过程如图1所示。其中,页面图元需要在Action连线“submit”上设置输出参数,用来输出上传照片的相关信息,设输出参数名称为“uploadfile”,并定义其参数类型为“上传文件类型”。用作分支条件判断的普通连线还需要进行相关设置,具体设置如表1所示。

赋值图元用来将照片传递给数据实体,需要编辑参数,左值为“businessData/photo”(businessData为页面input中定义的数据源名称),右值为“uploadfile/bytes”,右值类别为“变量”,其赋值方式为“传引用”。

上述关于照片大小的判断及赋值,用到了“上传文件类型”提供的属性“size”和“bytes”,前者获取上传文件大小,后者则获得上传文件具体内容,并将该文件读入到一个byte数组中。

3.3.2 审核页面流设计

审核页面流需要完成两大功能:一是正常审核时的逻辑处理,二是申请单被驳回至申请人重填后审核时的逻辑处理。在构件包com.hf.docManagement中按上述方式及位置创建审核环节页面流,具体如图2所示。

在审核环节,首先需要在审核页面“audit”(将在页面设计部分论述)中显示上传的照片,具体可通过逻辑流“获取业务数据”(将在逻辑流设计部分论述)来设计实现。为判断是否重新上传照片或是否取消原有照片,需要在Action连线“auditSubmit”上设置审核页面“audit”的两个输出参数,一是名称为“uploadfile”的参数,定义参数类型为“上传文件类型”,用来输出上传照片的相关信息,二是名称为“photoFlag”的参数,定义参数类型为“String”,作为保持或取消原有照片的判断标志。该页面流中用作分支条件判断的普通连线则需要进行相关设置,具体设置如表2所示。

若保持原有照片,则需要获取前次上传照片的内容,此时就要用到运算逻辑“expandLobProperty”(位于普元平台基础构件包com.eos.foundation.database.DatabaseUtil中),据此将可获取数据实体的LOB属性对应的值,即需要将第三个参数设置为本例中LOB属性的名称“photo”。

审核环节页面流包含两个赋值图元,一个用来取消原有照片,另一个用来将重新上传且小于15KB的照片赋值给数据实体,编辑参数时,左值均为“businessData/photo”,右值均为“uploadfile/bytes”,右值类别为“变量”,赋值方式仍为“传引用”。需要注意的是,在取消原有照片时也存在赋值操作,但由于此时审核页面上没有选择或者选择了无效文件,将会导致“uploadfile/bytes”中没有二进制数据传递给数据实体,即相当于取消了原有照片。

3.4 页面设计

进行页面开发时,只需在构件包com.hf.docManagement中依次展开、并呈现构件和页面资源部件,单击鼠标右键即可创建JSP文件。对应申请环节页面流和审核环节页面流,由此需要分别设计申请页面和审核页面。

3.4.1 申请页面设计

4 结束语

本文研究了基于普元平台和Oracle数据库系统的BLOB类型数据在审批流程中的应用步骤和方法,结合开发实践,对页面流、页面和逻辑流等涉及到大对象数据处理部分的设计和开发进行了详细说明,取得了较好的应用效果,相较于文献[13]、文献[14]及文献[15]等完全利用代码来完成在Oracle数据库中的大对象数据存取操作,其优势主要体现如下:

(1)解决了简单类型数据和大对象数据的集中统一管理,对insert、update等数据库常用操作无需区别对待,降低了实现难度。

(2)可视化的页面流和逻辑流设计界面,在一定程度上实现了图形化编程,提高了开发效率。

(3)提供了常用功能的逻辑构件,具有一定的粒度,提高了软件的复用度和可靠性。

(4)将页面展现和业务逻辑等分开实现,便于程序的扩展和维护,同时建立了不同层次功能复用的基础。

(5)对本文介绍的方法稍加修改或扩展即可应用于长文本等其他类型的大对象数据。

参考文献:

[1] 缪永,周健,陶亮. 基于工作流的企业协同OA系统关键技术实现[J].计算机技术与发展,2011,21(3):90-93.

[2] 杜龙. 办公自动化的国内外发展状况及未来的发展方向[J].电脑知识与技术,2009,5(9):2457-2458.

[3] 栾阳. 基于WEB的办公自动化系统应用研究[J].电脑知识与技术,2008,4(5):1272-1273.

[4] 孙俊峰. 一种基于VBA平台的OA文档处理方案及其模拟实现[J]. 西南民族大学学报·自然科学版:2014,40(5):739-744.

[5] 张磊.基于SOA的办公自动化系统的设计与实现[J].电脑知识与技术,2010,6(36):10314-10315.

[6] 田广,唐宁,张岩. 基于SOA体系的企业系统协同平台的研究和应用[J].计算机工程与设计,2010,31(21):4615-4620.

[7] 周江.基于XMLC的EOS页面构件设计与实现[J].电脑知识与技术,2009,5(15):3945-3947.

[8] 张静,王永敏.数据库应用系统中LOB应用技术研究[J].计算机技术与发展,2011,21(2):166-169.

[9] 高翔云,王建军.用PB存取社会保险管理信息系统中图片资料的方式[J].计算机光盘软件与应用,2012(15):8-9.

[10] 单春燕.应用BLOB技术实现图像资料的存储[J].中国管理信息化,2013,16(7):88-89.

[11] 全杰.基于OCCI技术存取数据库大对象的方法及实现[J].计算机系统应用,2010,19(7):162-165.

[12] 刘华,李峻林,熊俊,等.大对象数据在数据库上的存取管理[J].舰船电子工程,2008,28(8):124-127.

[13] 孙熙文,王友钊. LabVIEW中实现Oracle大对象数据存储的一种方法[J].工业控制计算机,2005,18(2):38-40.

[14] 李劲. 对PB访问数据库中大对象数据方法的研究[J].微计算机信息,2006,22(21):236-238.

[15] 袁勇. Oracle数据库大对象数据存取的两种实现方法及时间性能比较[J].佳木斯大学学报(自然科学版),2014,32(1):116-118.