开源工作流框架对比

2024-07-18

开源工作流框架对比(共4篇)

开源工作流框架对比 篇1

总结Java部分的框架和开源项目

文章分类:Java编程

下面我将为大家总结一下Java部分的框架和开源项目,让您从总的方面对Java部分框架有一定的了解。

Spring Framework【Java开源JEE框架】

Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不 是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的InversionofControl容器。然而,这仅仅是完整图景中的 一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。

Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构 还集成了Hibernate和其他O/Rmapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或 者JDBC事务提供一个一致的编程模型。

Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现 你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和 IoC容器集成的强大而灵活的MVCWeb框架。【SpringIDE:Eclipse平台下一个辅助开发插件】

WebWork【Java开源Web开发框架】

WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EEWeb框架。WebWork目前最 新版本是2.1,现在的WebWork2.x前身是RickardOberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和 WebWork2两个项目。Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。

Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL– theObjectGraphNotationLanguage),IoC(InversionofControl倒置控制)容器等。WebWork2建 立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层 Action类),session(会话)application(应用程序)范围的映射,request请求参数映射。

WebWork2支持多视图表示,视图部分可以使用JSP,Velocity,FreeMarker,JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.【EclipseWork:用于WebWork 辅助开发的一个Eclipse插件】

Struts【Java开源Web开发框架】

Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发 的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签 和信息资源(messageresources)整合到一个统一的框架中,开发人员利用其进 行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅 助开发的一个Eclipse插件】

Hibernate【Java开源持久层框架 】

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象 编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的 Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的 Hibernate辅助开发工具:【HibernateSynchronizer】【MiddlegenIDE】

Quartz【Java开源调度框架】

Quartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合 也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz1.5.0。

Velocity【Java开源模板引擎】

Velocity是一个基于java的模板引擎(templateengine)。它允许任何人仅仅简单的使用模板语言(templatelanguage)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员 同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方 案。Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以 被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbineweb开发架构提供模板服务(templateservice)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。【VeloEclipse:Velocity在Eclipse平台下的一个辅助开发插件】

iBATIS【Java开源持久层框架】

使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate实现ORM而言基本 一致,而对于具体的数据操作,Hibernate会自动生成SQL语句,而ibatis则要求开发者编写具体的SQL语句。相对Hibernate等―全 自动‖ORM机制而言,ibatis以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为―全自动‖ORM实现的一种有益 补充,ibatis的出现显得别具意义。

CompiereERP&CRM【Java开源ERP与CRM系统】

CompiereERP&CRM为全球范围内的中小型企业提供综合型解决方案,覆盖从客户管理、供应链到财务管理的全部领域,支持多组 织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。易于安装、易于实施、易于使用。只需要短短几个小时,您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。

RollerWeblogger【Java开源Blog博客】

这个weblogging设计得比较精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编 辑,TrackBack,提供页面模板,RSSsyndication,blogroll管理和提供一个XML-RPC接口。

Eclipse【Java开源IDE】

Eclipse平台是IBM向开发源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数—4千万美元,而是因为如此巨 大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构。

XPlanner【Java开源项目管理】

XPlanner一个基于Web的XP团队计划和跟踪工具。XP独特的开发概念如iteration、userstories 等,XPlanner都提供了相对应的的管理工具,XPlanner支持XP开发流程,并解决利用XP思想来开发项目所碰到的问题。XPlanner特点 包括:简单的模型规划,虚拟笔记卡(Virtualnotecards),iterations、userstories与工作记录的追踪,未完成 stories将自动迭代,工作时间追踪,生成团队效率,个人工时报表,SOAP界面支持。

HSQLDB【Java开源开源数据库】

HSQLDB(HypersonicSQL)是纯Java开发的关系型数据库,并提供JDBC驱动存取数据。支持ANSI-92标准SQL语 法。而且他占的空间很小。大约只有160K,拥有快速的数据库引擎。

Liferay【Java开源门户系统】

代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts框架技术,基于XML的 portlet配置文件可以自由地动态扩展,使用了WebServices来支持一些远程信息的获取,使用ApahceLucene实现全文检索功能。

主要特点:

◆提供单一登陆接口,多认证模式(LDAP或SQL)

◆管理员能通过用户界面轻松管理用户,组,角色

◆用户能可以根据需要定制个性化的portallayout

◆能够在主流的J2EE应用服务器 上运行,如 JBoss+Jetty/Tomcat,JOnAS

◆支持主流的数据库,如PostgreSQL,MySQL

◆使用了第三放的开源项目,如Hibernate,Lucene,Struts

◆支持包括中文在内的多种语言

◆采用最先进的技术Java,EJB,JMS,SOAP,XML

JetSpeed【Java开源门户系统】

Jetspeed是一个开放源代码的企业信息门户(EIP)的实现,使用的技术是Java和XML.用户可以使用浏览器,支持WAP协议的手机 或者其它的设备访问Jetspeed架设的信息门户获取信息.Jetspeed扮演着信息 集中器的角色,它能够把信息集中起来并且很容易地提供给用户。

Jetspeed具有如下的特征:

◆即将成为标准化的JavaPortletAPI

◆基于模板的布局,包括JSP和Velocity

◆通过开放的内容同步技术支持远程XML内容交换

◆定制默认的主页

◆使用数据库进行用户认证

◆内存 缓存技术,加快页面的响应

◆通过RichSiteSummary技术,支持同步内容

◆和Cocoon,WebMacro,Velocity集成 ◆WirelessMarkupLanguage(WML)支持

◆使用XML格式的配置文件注册portlet

◆完整的WebApplicationArchive(WAR)支持

◆Web应用程序开发的基础设施

◆可以在本地缓存远程内容

◆与Avantgo同步

◆可移植到所有支持JDK1.2和Servlet2.2的平台

◆与Turbine模块和服务集成

◆可以根据用户,安装媒体类型和语言的不同设定,产生不同的个性化服务

◆持续化服务使得所由的portlet能够容易的存储每个用户的状态,页面和portlet

◆使用皮肤技术使得用户可以选择portlet的颜色和显示属性

◆自定义功能是的管理员可以选择portlet以及定义个人页面的布局

◆在数据库中存储PSML

◆通过Jetspeed的安全portlets管理用户,组,角色和权限

◆基于角色对访问portlet进行控制

JOnAS【Java开源应用服务器 】

JOnAS是一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合 Servlet2.3和JSP1.2规范。JOnAS服务器 依赖或实现以下的 JavaAPI:JCA、JDBC、JTA、JMS、JMX、JNDI、JAAS、JavaMail。

JFox3.0【Java开源应用服务器 】

JFox是OpenSourceJavaEEApplicationServer,致力于提供轻量级的JavaEE应用服务器,从3.0开始,JFox提供了一个支持模块化的MVC框架,以简化EJB以及Web应用 的开发!如果您正在寻找一个简单、轻量、高效、完善的JavaEE开发平台,那么JFox正是您需要的。

JFox3.0拥有以下特性:

◆重新设计的IoC微内核,融入OSGi模块化思想

◆设计成嵌入式架构,能够和任何JavaWebServer集成部署

◆支持EJB3,JPA规范,支持容器内和容器外两种方式运行EJB和JPA组件

◆支持EJB发布成WebService

◆采用JOTM(http://jotm.objectweb.org/)提供事务处理,支持两阶段提交(2PC)

◆采用XAPool(http://forge.objectweb.org/projects/xapool/)提供XADataSource,支持智能连接池管理

◆内置MVC框架,实现自动FormMapping,Validator,Uploading等功能,支持JSP/Velocity /Freemarker页面引擎,并支持直接在Action中注入EJB

◆支持多应用模块部署,让中大型应用充分享受模块化开发带来的优势

◆提供Manager管理模块,可以查看和管理各种运行时参数

◆提供根据JFox特色重写的Petstore应用模块

EasyJWeb【Java开源Web开发框架】

EasyJWeb是基于java技术,应用于WEB应用程序快速开发的MVC框架,框架设计构思来源于国内众多项目实践,框架充分借签了当前主 要流行的开源Web框架(Struts、JSF、Tapestry、Webwork),吸取了其优点及精华,利用Velocity作为模板页面引擎,是一 个实现了页面及代码完全分离的MVC开发框架。是一个能实现中小型Web应用系统快速开发的简易Web框架。

通过EasyJWebTools提供的配套开发工具,可以实现基于EasyJWeb框架的Web应用快速开发,包括常用应用软件的代码自生成、数据库添删改查(CRUD)代码生成、自动页面模版生成、配置文件管理等。

框架特点:

◆零配文件置支持。以前我们每接触一个框架,开始总都要被他的配置文件折腾一番。EasyJWeb实现零配置支持,可以不写一句配置文件就在框 架基础上构建你的运用。(适合小型网站系统)。

◆简易的模板页面设计支持:放弃使用jsp,使用简单Velocity脚本语言作为页面模板。

◆页面程序完全分离:实现显示页面与程序逻辑的完全分离,克服了传统jsp页面难于维护的问题。

◆基于页面组件的框架。灵活的页面组件配置,可以直接通过配置文件设置字段级的事件组件。

◆快速开发支持:通过EasyJWebTools,可以自动生成应用软件模板代码,定制并管理自己的J2EE代码模板,代码生成模板支持最流行 的实用Java开发框架(如hibernate、Spring等)实现快速开发。

Tapestry【Java开源Web开发框架】

Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带 有jwcid属性的html标记。其中jwc的意思是JavaWebComponent。Tapestry使得java代码与html完全分离,利用这个 框架开发大型应用变得轻而易举。并且开发的应用很容易维护和升级。Tapestry支持本地化,其错误报告也很详细。Tapestry主要利用 javabean和xml技术进行开发。【Spindle:Tapestry辅助开发Eclipse插件】

FreeMarker【Java开源模板引擎】

FreeMarker允许Javaservlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用 servlet提供的数据动态地生成HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。【FreeMarkerEclipsePlugin与FreeMarkerIDE:Eclipse平台下的辅助开发工具】

Lucene【Java开源搜索引擎】

ApacheLucene是一个基于Java全文搜索引擎,利用它可以轻易地为Java软件加入全文搜寻功能。Lucene的最主要工作是替文 件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高,Lucen提供一组解读,过滤,分析文件,编排和使用索引的API,它的强大之处除了高 效和简单外,是最重要的是使使用者可以随时应自已需要自订其功能。

iText【Java开源PDF类库】

iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它 的类库尤其与javaServlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。

Groovy【Java开源动态语言】

Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性。Groovy已在 WebWork2中的应用。它可以被编译为标准的JavaBytecode。

OpenCms【Java开源CMS系统】

OpenCms是一个J2EE的产品,它是用Java写成的。它和Tomcat捆绑在一起。但是也能够使用ATGDynamo、WebLogic和WebSphere。OpenCms支持多种RDBMS来保存内容,包括Oracle、SQLServer、Sybase和 mySQL。新版本提供了一个新的模板引擎,JSP支持,一种新的连接管理系统,提高了稳定性。

JUnit【Java开源测试工具】

JUnit是由ErichGamma和KentBeck编写的一个回归测试框架(regressiontestingframework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框 架,继承TestCase类,就可以用Junit进行自动测试了。

BlueJ【Java开源IDE】

BlueJ是一个专门为入门级教学设计的JavaTM开发环境。它是由澳大利亚墨尔本Monash大学BlueJ小组设计并开发的。

XWiki【Java开源Wiki系统】

XWiki是一个强大的Java开源的Wiki引擎。它支持一些受欢迎的特性如:

◆内容管理(浏览/编辑/预览/保存)

◆支持附件

◆版本控制

◆全文本搜索

◆权限管理

◆使用Hibernate进行数据存储

◆RSS输出与显示外部的RSSfeeds

◆多语言支持

◆提供XML/RPC的API

◆WYSIWYGHTML编辑器

◆导出为PDF

◆Groovy脚本支持等等....EJBCA【Java开源网络服务器 端组件】

EJBCA是一个全功能的CA系统软件,它基于J2EE技术,并提供了一个强大的、高性能并基于组件的CA。EJBCA兼具灵活性和平台独立 性,能够独立使用,也能和任何J2EE应用程序集成。

JXTA【Java开源其它项目】

Sun微系统公司公开了旨在建立P2P(PeertoPeer)通用技术基础的JXTA计划。JXTA技术是网络编程和计算的平台,用以解决现 代分布计算尤其是点对点(P2P)计算中出现的问题。

JXTA将建立核心的网络计算技术,提供支持在任何平台、任何地方以及任何时间实现P2P计算的一整套简单、小巧和灵活的机制。JXTA首先将 归纳目前P2P的功能特别,而后建立核心的技术来表达目前的P2P计算的局限性。其重点是创建基本的机制,而具体的策略选择权则交给应用的开发者。JXTA将充分利用XML、Java等开放技术,使得UNIX操作系统 更强大和灵 活,比如利用管道(Pipes)传输Shell命令实现复杂的计算任务。JXTA支持P2P应用的基本功能来建立一个P2P系统,还将努力证实这些可以成 为建立更高层功能的基础构造模块。JXTA架构可以分为三个层面:JXTA核心层、JXTA业务层和JXTA应用层。

DWR【Java开源AJAX框架】

DWR(DirectWebRemoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端 利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成 JavaScrip代码).它的最新版本DWR0.6添加许多特性如:支持DomTrees的自动配置,支持Spring(JavaScript远程调用 springbean),更好浏览器支持,还支持一个可选的commons-logging日记操作。

ZK【Java开源AJAX框架】

ZK是一个AjaxJavaWeb框架,利用少量代码就能够开发出拥有RichUI的Web应用。ZK提供基于XUL的标记语言和事件驱动的组 件,可以让你像开发桌面应用程序一样简单。支持EL表达式和脚本语言包括:JavaScript、Ruby和Groovy等。支持Annotation及 数据绑定。集成GoogleMaps、FCKeditor、DOJO以及Timeline。

开源工作流框架对比 篇2

一、主流工作流引擎简介

(1)Shark。Shark是一个完全基于WFMC和OMG规范的工作流引擎,使用XPDL作为工作流定义语言。流程和活动的存储使用Enhydra DODS (一个开源OR映射工具)。ToolA- gents可以用JavaScript、JDBC、EJB访问、纯Java类、Email调用等等。Shark的建模工具是jawe。Jawe是一种基于形式化的过程定义的建模工具,是Enhydra的一个开源产品,符合WMFC规则,提供了图形化的界面来进行流程绘制、属性添加等,能自动将流程定义转化为相应的能够被工作流引擎解释的过程定义文件。第一就是过程定义的图形化表示,第二就是将过程定义输出到xpdl,最后就是可以将有效的xpdl文件进行导入和图形化表示。Shark的内部调度机制比较简单, 基本上是基于WfprocessImpl类的run算法,采用的是遍历循环的方式,效率较高、直观易懂,但是很难支持比较复杂的运行模型。

(2)Osworkflow。Osworkflow是纯java语言编写,开放源代码。它主要面向的用户群是具有一定技术背景的软件开发人员,用户可以根据自己的实际需求,用XML配置出完全符合自身业务逻辑的流程。OSWorkflow适用于任何Java平台, 在企业ERP开发中得到了广泛的应用。Osworkflow最大的特点,就是其显著的灵活性和完全面向软件开发人员。

(3)jbpm。Jbpm采用jpdl来定义工作流。jPDL(JBossjBPM Process Definition Language)是基于jBPM框架的流程定义语言之一。Jpdl采用图形化的流程定义,将每个任务定义为一个uml状态图,每个状态图均有起始状态、结束状态以及状态的转换。Jbpm还有一个特点,就是它采用Hibernate来进行数据库的管理。Hibernate是一个开源的映射框架,既可以在java客户端使用,也可以在web应用中使用,支持目前大部分的数据库。

二、三种工作流引擎对比

Shark的体系和功能最为复杂,遵循WfMC的XPDL标准。它有两个特点,一个就是XPDL中的Activity基于UML活动图。活动图最大的优势就是容易进行分叉控制,即可以控制并发线程同时执行或顺序执行。另一个特点就是采用了泳道来控制工作流引擎中任务的产生,采用“模块化”思路, 容易扩展。OSWorkflow也是一款非常灵活、定位低级别的工作流引擎框架。OSWorkflow在国内项目用的较多,很多简易审批流程项目都是基于此。OSWorkflow在可视化流程定义工具大行其道的今天,逆流而行,反对可视化定义工具的使用, 它希望用户靠XML去手动写流程,这点我很难理解。同时, 持久化配置方式不唯一,差别比较大。有内存方式、JDBC方式、SpringHibernate联合方式、JDBCTemplate方式、Hibernate方式。

开源工作流框架对比 篇3

关键词:林业信息系统,软件定制平台,开源框架

1 引言

加快推进林业信息化, 有利于逐步建立起覆盖各级林业部门的林业信息化体系, 对提高林业信息管理和服务水平, 促进林业可持续发展具有重要的理论和实际意义。软件定制开发作为一种软件开发形式, 在我国还是一种新生事物, 尚未被广大用户所认同。林业信息系统定制平台是行业内的软件定制开发, 是以林业业务为导向和驱动, 无需编写代码或只需编写少量功能扩展代码即可快速构建林业信息系统的软件平台。林业信息系统定制平台的研建将改变以往林业信息系统的研发方式, 通过使用林业软件定制平台, 开发人员能够集中精力关注林业信息系统研发的业务需求与管理问题, 摆脱技术细节的困扰, 以提高林业信息系统研发的效率。

2 通用软件与软件定制平台

由于自身的历史和业务状况, 软件用户对于软件系统会有特殊的要求, 尤其是在行业个性化需求和行业自身独有的个性化需求方面显得格外迫切。通用软件通常都是利用套装软件的管理思路及模式, 让客户按照软件的业务流程实现管理的流程化套用, 根本不考虑行业及内部个性化需求, 这样就造成了软件在上线和使用过程中存在着相当严重的“水土不服”的现象。如不采用类似通用软件, 将带来昂贵的软件开发费用及后期软件维护与升级投入。

任何一个应用系统, 都具备一个最基本的功能, 就是对数据进行“增删改查”的操作。软件定制平台就是抽象出这些共性, 采用“标准化+行业化+个性化”的应用模式, 实现数据、模板资源共享以便节约开发成本, 提高开发效率, 缩短开发周期。传统的C/S架构模式已经不适合应用于定制平台, B/S架构模式以互联网为基础, 程序、数据、可供利用的所有资源均实现了网络化。软件开发的参与者通过网络形成协作, 极大地提高了以往的软件开发效率。对于基于web的软件定制开发平台, 应具有如下几个特点: (1) 以web2.0为基础, 基于互联网的B/S架构的软件。Web2.0本身也是一个软件, 只不过不是最终的软件产品, 而是用于二次开发的软件; (2) 用于实现各类业务系统, web开发平台不同于传统的开发工具, 需要编写代码来完成各个业务模块, 基于web的二次开发平台只需要设计好自己的数据结构, 进行一些简单的配置、拖拉等操作就可以完成业务系统的开发; (3) 能够快速的实现各种报表包括复杂的图表报表的设计制作, 传统的编码式开发需要自己去编写想要的各种报表, 而运用开发平台通过配置就应能产生相应的报表。

3 林业信息系统数据共享现状

目前, 我国各级林业部门研发的各类信息系统均基于不同的技术架构, 由不同的技术单位研制。它们的开发语言平台、数据结构、运行环境均存在不同程度的差别, 提供的业务功能与信息服务也都不尽相同, 形成诸多信息孤岛, 导致不同的业务部门之间无法共享数据, 各个林业信息系统之间基本没有对外开发扩展接口, 使得系统无法进行功能扩展。目前, 为解决以上问题, 业界常用的技术架构有基于WCF与Web Service框架及基于面向服务的体系结构 (SOA) 。

Web Service使用X m L扩展标记语言来表示数据, 它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。WSDL来实现服务接口相关的描述。此外Web services可以注册到UDDI中心.供其客户查找使用。

基于面向服务的体系结构 (SOA) 是近年来软件项目开发和信息系统构建方法的一个国际性技术趋势, 代表一个开放的、可扩展的、安全的和可组合的软件架构, SOA是一种松散耦合的应用程序体系结构, 在这种应用体系结构中, 所有的业务功能被定义为独立的服务 (Service) , 即在业务层和表现层之间增加了一个服务层, 可以独立完成特定的服务功能, 使业务层和表现层相互独立, 从而适应应用程序需求的变化。

自2014年1月1日起, 《林业数据库设计总体规范》已经公布, 该规范为实现林业数据大范围共享提供了坚实基础。使用Web Service框架及基于面向服务的体系结构 (SOA) 在一定程度上可以解决数据共享问题, 但是依然无法解决业务的快速开发与应用快速步署问题。

4 基于开源框架的软件定制平台设计

4.1 技术框架

ZKOSS是异步的AJAX技术, 提供整套的界面的业务逻辑通讯解决方案, 是三大主流RIA (Rich Internet Applications) 技术之一, 多人同时在线时数据通讯比较集中的情况下, 可以有效的控制对资源占用, 减少服务器的压力。

Hibernate是一个开源的对象关系映射框架, 对JD-BC进行了非常轻量级的对象封装, 它为面向对象的领域模型到传统的关系型数据库的映射, 提供了一个使用方便的框架, 既可以在Java的客户端程序使用, 也可以在Servlet/JSP的Web应用中使用。同时, 该框架是目前公认的JAVA数据持久层技术, 对减少程序员开发量, 规范化代码编写, 便于后期维护。尤其是对事务控制方面比其他持久化技术表现更为突出, 对数据要求严谨性的系统尤显其重要性。

Spring框架提供了构建Web应用程序的全功能MVC模块。MVC作为WEB项目开发的核心环节, 严格按照分层概念驱动项目开发, 控制器将用户客户端与业务分开构成了MVC, Spring框架是高度可配置的, 而且包含JSP技术, i Text和POI等多种视图技术。框架分离了控制器、模型对象、分派器以及处理程序对象的角色, 这种分离让它们更容易进行定制。

Jquery一个优秀的Java script框架。它是轻量级的js库, 把部分业务放在客户端处理, 减少服务器部分压力, 降低服务器资源占用, 能兼容各种浏览器, 能更方便地处理HT m L documents、events、实现动画效果, 并且方便地为网站提供AJAX交互。

上述技术框架开发语言基于JAVA, 所有技术框架、控件都是J2EE领域常用控件。框架中每一项技术至少都有5年以上的历史, 经历了多个版本更新, 是在多个项目实践中验证过的成熟技术, 同时也是典型的MVC结构。上述框架主要体现了以下几个特点:逻辑严谨, 结构清晰, 规范化编写, 方便维护;充分发挥客户端、应用服务器和数据库服务器的作用, 又同时兼顾压力和负载的均衡;与其他应用系统的接口采用业务标准的技术和通用的做法, 使系统具有良好的扩展性;清晰的层次结构, 模块化的设计, 方便功能性的扩展;严格的层次结构, 对整个体系的安全性具有层层的保护作用 (图1) 。

4.2 功能设计

基于以上开源框架, 软件定制平台具备以下功能及特性:支持主流数据库, 实现代码自动生成, 支持多种数据模型, 同时代码生成器的依赖性低, 具有方便的扩展能力, 可完全实现二次开发;框架的组件耦合度底, 便于功能的扩展和修改, 通用的SQL查询无须编写代码, 通过页面动态查询字段、实现查询自动化定制;工具类实现了共同封装, 文件的导入导出, 短信接口等基本能满足项目需求;集成了简易报表工具, 实现图像报表和数据方便导出或生成pdf、excel、word等格式报表。该框架的功能框图及主页面如图2所示。

4.3 代码自动生成

通过读取表结构和字段属性, 可以生成统一的前台页面、页面表单校验和规范的后台代码 (Action、Service、Dao、Entity、Page等) 。同时, 抽离出框架, 实现解耦设计使得Struts2、Spring MVC、Hibernate、Mybatis、Easy UI、DWZ、Ext JS等技术可以灵活组合使用, 导入模板文件即可生成对应的代码。

4.3.1 数据获取及系统配置

在数据库里建立数据库表, 每个字段加上注释, 代码生成器会根据注释去生成页面字段对应的显示文本。

代码生成器有两个配置文件:一个用于数据源的配置, 一个用于代码生成器的参数配置。这两个配置文件分别是database.properties和config.properties。该配置文件主要完成WEB应用文件的根目录、生成器使用的模板文件目录、项目编码、自定义主键命名等主要内容。

4.3.2 代码生成

传统程序设计过程中, 通常是根据表字段建立实体类, 再编写程序DAO, 然后根据业务完成Service层, action及前台页面。也就是说, 只要知道了表的结构, 增删改查的前后台页面的代码格式就是固定的, 剩下的就是复杂的业务。而代码生成工具的目标就是自动生成那部分固定格式的增删改查的代码。可以把代码生成分为2个步骤: (1) 读取数据库表信息, 主要包括表名、字段名称、字段类型、主键、外键等。技术:java.sql.Database Meta Data; (2) 编写模板文件, 根据模板文件和读出的数据库表数据生成相应的代码。技术:freemarker。打开代码生成器并输入相应的参数, 如图3所示。

执行“生成”之后, 可以在源代码目录src中可查看到新生成的java代码文件, 同样地, 可以在WebRoot/webpage中看到新的自动生成的jsp页面。

5 结语

以软件定制平台为基础, 通过集成各类林业基础数据, 可以快速高效地开发出各类林业信息系统。目前, 只实现了框架平台的主要功能, 林业基础数据的获取与转换是需进一步完善和改进。软件定制开发平台的功能还需进一步完善。

参考文献

[1]庞丽峰, 唐小明, 刘鹏举.基于Web GIS省级林业信息共享平台的研发西北林学院学报[J].2011, 26 (2) :180~184.

[2]曹丹.森林资源数据共享框架设计初步研究[J].林业调查规划, 2009, 34 (4) :58~60.

[3]张习科.林业应用系统定制平台研究[D].长沙:中南林业科技大学, 2013.

[4]彭环珂, 刘旭东.面向领域的软件定制化开发方法研究与应用[J].计算机工程与应用, 2005 (6) .

开源工作流框架对比 篇4

随着信息技术的发展和B/S应用程序的广泛使用,为能简单高效地开发Web项目,迫切需要一个通用、稳定的集成架构,来提高工作效率、增强程序的可维护性和可扩展性。本文选择开源框架WebWork、Spring和Hibernate相结合的应用,实现了一套方便灵活、低耦合、易维护的开发方式。

2 J2EE开源框架

2.1 MVC模式

传统的Web项目开发,存在诸多不足,MVC模式(Model View Controller,MVC)的出现使其得到了改进和完善。在MVC模式中Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Model的数据或者属性,所有依赖的View都会自动更新。只要Controller改变了View的部分,View会潜在的从Model中获取数据来刷新自己。基于MVC应用程序的开发总是由这三个部分共同协作来完成。MVC组件的关系和功能如图1所示。

MVC设计模式是利用控制器来分离模型和视图,从而达到一种层间松散耦合的效果,减弱业务逻辑接口和数据接口之间的耦合性,提高了系统的灵活性、可复用性和可维护性。现在网络开发框架多数都遵循MVC设计模式,效果较好。

2.2 WebWork框架

WebWork是基于Command设计模式的,致力于组件化和代码重用的强大的开源框架[2]。在利用WebWork框架开发的过程中,根据业务逻辑创建的实现方法xAtion担任控制器的角色,它实现了WebWork类库中XWork中的Action接口。其主要功能是从请求中获取前台页面需要传送的参数值,把这些值传递给执行业务逻辑操作的模型对象,由业务对象执行业务逻辑操作,并返回给转向页面用来显示执行的结果。

MVC中的表现层负责页面的显示和业务逻辑的处理,利用WebWork的标签库与JavaScript脚本语言相结合的方式实现。WebWork框架从Web中脱离出来,与框架Struts相比,在Action类的抽象和Web环境的耦合方面具有优势,在开发过程中更加方便和实用。

2.3 Spring框架

Spring框架是一个分层的J2EE应用程序框架,它是一个从实际项目开发经验中抽取出来的,可高度重用的开发框架[1]。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式。Spring通过接口松藕合的JavaBean模型提供了基于IoC容器的BeanFactory和基于AOP(面向方面编程)框架的JavaBean组件,不需要在程序中维护组件之间的依赖关系,只要在配置文件applicationContext.xml中设置属性,Spring容器将自动依赖注入到相关的组件,完成业务方法层组件的配置与加载。使Web应用开发过程中,能实现逻辑层和数据访问层的完全分离。Spring框架与持久层框架Hibernate集成到一起,从而实现支持DAO以及事务策略,提高代码的可重用性。

2.4 Hibernate框架

Hibernate是一种实现对象和关系映射的框架,它对JDBC进行了轻量级的对象封装,使程序员能使用面向对象的思想来操作关系数据库,Hibernate的目标是减轻开发者与大量普通数据持续性相联系的一些编程任务,在开发进程中,能自动生成SQL,使开发者摆脱了手工处理结果集和进行对象转化的繁琐任务,并能使应用程序移植到所有的SQL数据库,提供透明的持续性。在使用Hibernate框架时,通过编写O/R映射描述文件,完成对象、关系数据库之间的映射,持久对象则根据映射文件生成,最后,编写业务逻辑类[7]。在实际开发中,以上工作不需要程序员编写,利用MyEclipse自带的Hibernate框架,通过配置和数据库之间的连接,即可导出所需要的JavaBean类。JavaBean类实现具体的业务逻辑,也封装了对Hibernate的访问,为应用程序提供数据持久服务。

3 集成框架原理

整个J2EE轻量级Web集成开发架构选用WebWork、Spring和Hibernate 3种框架技术,实现集成架构。客户端层采用JSP表示,用WebWork自带的标签库和JavaScript实现客户端的显示和控制,并做相应的请求和响应;表示层用WebWork统一管理视图和控制器部分,利用WebWork的ServletDispatcher作为控制器,接受客户端的HTTP请求,创建并调用对应的Action实现类,完成与业务逻辑层的交互,并返回执行结果到客户端层;业务逻辑层是利用接口与实现相分离的方式编写对应的Service对象,在Spring的IoC容器中登记为业务模型,由Spring负责管理和配置DAO组件,提供给对应的Action完成业务逻辑,同时提供事务处理、缓冲池等容器组件来提升系统的性能,保证数据完整性;数据持久层采用Hibernate框架,使用导入DAO的方式完成最终的Java类和数据库之间的转换和访问;数据层采用关系数据管理系统,如Oracle,MySQL等。整个集成开发架构如图2所示。

采用上述方式,利用WebWork、Spring和Hibernate框架各自的优势,能有效实现视图、控制器与模型的分离,将业务逻辑层和数据持久层独立出来。其中,框架WebWork在Web程序开发中起到重要作用。

4 集成框架的应用

开发中,有很多Web项目使用J2EE的开源框架,本文重点介绍一下利用开源框架WebWork、Spring和Hibernate相结合的方式来开发Web项目。选择MyEclipse作为Java的开发平台,其可以直接加载项目所需要的开源框架WebWork、Spring和Hibernate的相关的类以及配置文件。

4.1 加载开源框架类

在Web项目中,首先导入Spring开源框架,建立SessionFactory对应的类,MyEclipse开发平台将加载Spring运行的相关类和applicationContext.xml配置文件,然后在Spring的基础之上加载Hibernate,根据关系型数据库所建立的表,在MyEclipse中的配置打开数据库连接,导入数据表的对象类和一些基本的数据操作的实现方法。另外还需要把WebWork相关的类复制到项目中,添加XWork.xml文件,并且在web.xml文件中配置我们所用的WebWork框架,使其加载类在项目中能够正常的使用。

4.2 登陆模块的应用

在实际Web项目中,这三种框架相结合使用的事例较多,用法基本相同,只是功能有所差别。以用户登陆模块为例做一介绍,如:前台JSP页面功能,其主要实现代码如下:

用户名:

密码:

4.3 XWork.xml的配置

从JSP页面上将用户输入的用户名和密码提交后,将转入配置文件XWork.xml中,通过这个配置文件寻找Java后台处理登陆过程逻辑的类,同时将提交的内容转移到Java逻辑类中进行判断处理。登陆模块配置的主要代码如下:

4.4 逻辑处理

如上XWrok.xml中的配置相对应,在LoginAction这个类中,使用UserLogin的逻辑处理方法,用于判断用户名和密码是否和数据库中的数据相符,以此做出不同的处理,并返回给页面显。UserLogin方法实现主要代码如下:

另外,在数据库的导入过程中,根据数据库中表的名称,采用Hibernate框架可以将对象类User.java和操作类UserDAO.java这两个类导入到项目中,在处理逻辑的过程中可以直接调用,方便快捷,加速了项目开发的周期。

4.5 前台页面响应

在后台根据用户名和密码做出判断,在前台显示结果,主要表现为两方面,一个是页面的转向,通过XWork.xml的配置得出要跳转到哪个页面。如上面程序所示,如果返回Action.ERROR,则转向error.jsp;如果返回Action.SUCCESS,则转向index.jsp。另一个是信息的反馈,通过Session或Request将需要传送到前台页面的值放到缓冲区里,然后显示在JSP页面相应的位置。

从上面这个登陆流程的简单的例子可以看出,在整个集成框架中不存在与业务逻辑无关的垃圾代码,也没有SQL查询语句,整个开发过程完全是面向对象的操作方式和可动态配置、可移植的Xml文件,大大提高了开发效率。

5 总结

综上所述,将WebWork、Spring和Hibernate三种开源框架集成在一起,形成一种轻量级Web开发架构。该架构充分发挥了三者的优点,层次清晰,具有较高的伸缩性、可扩展性和可复用性,开发简洁、维护方便,在Web项目的设计和开发中有一定的优势和广泛的应用前景。

摘要:在设计模式MVC思想的基础之上,该文提出了基于WebWork、Spring和Hibernate的J2EE轻量级集成框架的应用。首先简要的介绍了这三种开源软件的基础技术,然后给出了整个集成框架的原理,最后分析了在Web项目中集成框架的应用,并说明了集成框架在代码复用和开发效率上的优势。

关键词:MVC,框架,WebWork,Spring,Hibernate,代码复用

参考文献

[1]Raible M.Spring Live[M].2004,Source Beat Publishing.

[2]LightBody P,WebWork in Action[M].Manning Publications Co.2005.

[3]阎宏.Java与模式[M].北京:电子工业出版社,2005.

[4]Johnson R.J2EE设计开发编程指南[M].北京:电子工业出版社,2003.

[5]孙卫琴.精通对象持久化技术详解[M].北京:电子工业出版社,2005.

[6]Eckel B.Java编程思想[M].侯捷,译.北京:机械工业出版社,2002.

上一篇:原煤生产任务工作报告下一篇:创建标化工地汇报资料