基于jboss的信贷审批流程在jbpm上的实现大学论文Word格式文档下载.docx
《基于jboss的信贷审批流程在jbpm上的实现大学论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于jboss的信贷审批流程在jbpm上的实现大学论文Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
1.3.4Struts的实现原理10
第二章系统总体设计11
2.1系统的逻辑架构11
2.2用例描述(信贷审批流程)12
2.3jBPM工作流管理系统工作机制15
2.3.1jBPM工作流管理系统概述15
2.3.2工作流引擎与应用的接口原理15
第三章系统详细设计16
3.1表现层详细设计16
3.1.1系统输入16
3.1.2系统输出16
3.2Web应用框架struts在信贷审批流程上的实现17
3.3信贷审批流程在jBPM工作流管理系统上的实现18
3.3.1jBPM工作流定义语言18
3.3.2Form表单与流程定义文件19
3.3.3与Form表单相关类的建模19
3.4数据持久层O/RMapping框架hibernate22
3.5移植jBPM数据库22
第四章系统的演示运行23
4.1系统演示的场景描述23
第五章结束语33
致谢语34
参考文献35
第一章引言
1.1工作流的出现与发展
在工作流管理系统出现之前的很长一段时间里,我们的工作依赖于人类的手工劳动和脑力管理,管理者根据参与者的技能或经验分配工作。
随着社会的发展,越来越多的工作脱离了人的手工劳动,特别是那些单调的重复性劳动和危险性的工作,可以由机器来完成。
在近15年来,我们依赖计算机来逐步实现任务处理和工作流程调度的自动化,通过工作流管理系统来实现任务的自动分配、执行、传递和监控。
工作流技术发展到现在己经比较成熟,任务处理本身和任务之间的调度都实现了自动化。
现在很多工作流引擎能够处理很复杂的流程,任何能用数学方法表示的逻辑都可以由工作流管理系统来处理。
工作流建模技术作为工作流领域中的一个重要分支,处理工作流逻辑日益增长的复杂性。
工作流技术和Internet的结合使工作流的发展和应用进入了崭新的阶段。
Internet前所未有的信息交换能力和工作流引擎的业务处理自动化和集成能力相得益彰,不仅推动了生产力的巨大发展,也为一些新兴行业和工作方式的出现铺平了道路,家庭办公、移动办公和虚拟企业的发展都得益于工作流及相关技术的发展。
工作流技术综合了计算机科学和管理科学中诸多研究领域的原理、方法和技术,如数据库管理、面向对象技术、客户/服务器计算、编程语言、应用和子系统集成、图形化用户界面、系统集成、消息传递,文档管理、商业业务重建等等。
众多领域的方法和技术的集成使得工作流技术在一些行业中的应用已获得了较好的应用,取得了较好的经济效益。
本文将基于工作流管理系统jBPM,实现在银行领域的信贷审批这个流程来说明工作流技术的优越性。
1.2工作流管理系统的分类
根据不同工作流系统所采用的任务项传递机制的不同,市场上的工作流产品又可以划分为三类:
■基于文件的工作流系统:
以共享文件的方式来完成任务项传递。
这种类型产品开发得最早、发展最成熟、其产品品种较多。
代表产品有FileNet的VisualWorkFlo,IBM的FIowMark,InConcert的InConcert.
■基于消息的工作流系统:
通过用户的电子邮件系统来传递文档信息。
这种类型的产品一般都提供与一种或多种电子邮件系统的集成接口。
代表产品有Novell与FileNet合作开发的Ensemble,JetForm公司的InTempo,Keyfile公司的Keyflow.
■基于Web的工作流系统:
通过WWW来实现任务的协作。
这一类产品起步较晚(在95年以后),但是发展迅速,其市场前景十分看好。
许多供应商纷纷改进原有产品或开发新产品以增加对Web的支持。
代表产品有ActionTechnologies公司的ActionWorksMetro,Ultimus公司的Ultimus[Sim01]
1.3J2EE体系结构简介和web应用框架
1.3.1J2EE体系结构简介
1997年4月12日,Sun宣布了一项一组标准的Java扩展平台的创新成果。
使用开放式的JavaCommunityProcess,Sun促进了一组标准的Java扩展的开发,称为EnterpriseJavaAPI。
这些应用程序编程接口(API)为各种各样的中间件
的实现提供了不依赖供应商的编程接口。
EnterpriseJavaAPI的要点是EnterpriseJavaBeanAPI,后者为Java应用程序服务器定义了一个服务器端组件模型,以及一个不依赖提供商的编程接口。
J2EE体系包括以下技术:
EnterpriseJavaBeans(EJB)
JavaInterfaceDefinitionLanguage(IDL)
JavaMessageService(JMS)
JavaNamingandDirectoryInterface(JNDI)
JavaRemoteMethodInvocation(RMI)和ObjectSerialization
JavaServletAPI
JavaTransactionAPI(JTA)
JavaTransactionService(JTS)
JavaServerPages(JSP)
JDBC数据库访问API
J2EE是一种利用Java2平台简化企业解决方案的开发、部署和管理相关复杂问题的体系结构。
J2EE技术的基础就是核心Java2平台。
J2EE不仅巩固了标准版中的许多优点,例如“编写一次,随处运行”的特性,方便存取数据库的JDBCAPI,CORBA技术,以及能够在Internet应用中保护数据的安全模式等,同时还提供了对EJB(EnterpriseJavaBean)、JavaServletsAPI.JSP(JavaServerPages)及XML技术的全面支持。
J2EE目前得到了广泛的应用,其优势主要是为搭建具有可伸缩性、灵活性、易维护性的业务系统提供了良好的机制。
其主要优势有:
●保留现存的IT资产;
●高效的开发;
●可伸缩性;
●稳定的可用性;
1.3.2Web应用框架
J2EE的各种技术的出现给电子商务时代的Web应用开发提供了一个非常有竞争力的选择。
怎样把这些技术组合起来,形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。
J2EE应用程序架构在发展的路程中经历了两个大的阶段:
模型1和模型2.模型1其实不是一个什么稳定架构,甚至谈不上形成了架构。
模型1的基础是JSP文件。
它从HTTP的请求中提取参数,调用相应的业务逻辑,处理HTTP会话,最后生成HTP文档。
在经过一番实践,并广泛借鉴和总结经验教训之后,J2EE应用程序终于迎来了MVC(模型一视图一控制)模式。
MVC模式并不是J2EE行业人士标新立异的,所以前面我谈到广发借鉴。
MVC的核心就是做到三层甚至多层的松散祸合。
它在浏览器(本文对客户代理都称浏览器)和JSP或Servlet之间插入一个控制组件。
这个控制组件集中了处理浏览器发过来的HTTP请求的分发逻辑,也就是说,它会根据HTTP请求的URL,输入参数,和目前应用的内部状态,把请求分发给相应的Web层的JSP或Servlet。
另外它也负责选择下一个视图(在J2EE中,JSP,Servlet会生成回给浏览器的html从而形成视图)。
集中的控制组件也有利于安全验证,日志纪录,有时也封装请求数据给下面的Web应用层。
这一套逻辑的实现形成了一个像MFC的应用框架。
●Clienttier(客户层)
一般为浏览器或其他应用。
客户层普遍地支持HTTP协议,也称客户代理。
●Webtier(Web应用层)
在J2EE中,这一层由Web容器运行,它包括JSP,Servlet等Web部件。
●EJBtier(企业组件层)
企业组件层由EJB容器运行,支持EJB,JMS,JTA等服务和技术。
●EIStier(企业信息系统层)
企业信息系统包含企业内传统信息系统如财务,CRM等,特点是有数据库系统的支持。
应用框架目前主要集中在Web层,旨在规范这一层软件的开发。
其实企业组件层也可以实现这个模型,但目前主要以设计模式的形式存在。
而且有些框架可以扩充,有了企业组件层组件的参与,框架会显得更紧凑,更自然,效率会更高。
图1J2EE体系中典型的多层应用模型
1.3.3Web应用框架Struts简介
Struts是一个免费的开源的Web层的应用框架,apache软件基金致力于struts的开发。
Struts具有高可配置性,和有一个不断增长的特性列表。
一个前端控制组件,一系列动作类,动作映射,处理XML的实用工具类,服务器端Javabean的自动填充,支持验证的Web表单,国际化支持,生成HTML,实现表现逻辑和模版组成了struts的灵魂;
图2.1体现了Struts的运作机制
图2struts框架的组件结构图
1.3.4Struts的实现原理
用户发出一个的HTTP请求,控制组件接收到这个请求后,查找针对这个请求的动作映射,再检查是否曾创建过相应的动作对象(action实例),如果没有则调用actionmapping生成一个动作对象,控制组件会保存这个动作对象供以后使用。
接着调用actionMapping的方法得到ActionForm对象。
之后把ActionForm作为参数传给动作对象的perfonn方法,这个方法结束之后会返回给控制组件一个actionforward对象。
控制组件接着从这个对象中获取下一个视图的路径和重定向属性。
如果为重定向,则调用HTTPServletResponse的方法来显示下一个视图,否则相继调用:
equestdispatcher,Servletcontext的方法续传HTTP请求到下一个视图。
当动作对象运行perform方法时,可能出现错误信息。
动作对象可以保存这些错误信息到一个erro:
对象中,接着调用自身的saveerrors方法把这个错误保存到request对象的属性中。
接着动作对象调用actionmapping对象的getInput方法从动作映射中获取input参数,也就是产生输入的视图,并以这个input为参数生成一个actionforward对象返回。
这个input参数的JSP中一般有HTTP:
errors定制标签读取这些错误信息并显示在页面上。
第二章系统总体设计
2.1系统的逻辑架构
我们的信贷审批系统可以从多个维度进行观察:
●功能维度
○授信审批
●非功能维度
○日志
○任务调度
○安全
○校验
○状态管理
●设计的垂直维度
○公用基础层(FoundationLayer)
公用基础层是与应用无关的基础类,一般提供诸如对于String,Date,Collection等JDK底层API的封装操作
○框架层(FrameworkLayer)
框架层是针对应用的需求而抽象出的层次,主要用于满足应用的非功能性需求,在这里我们引入struts为webframework,hibernate为O/RMappingpersistenceframework,一般不需要自己开发
○应用基础层(CommonLayer)
应用基础层是针对应用的公共需求而独立出来以便于公用的类,一般包括一些基类,常量定义等
○应用层(ApplicationLayer)
我们编写的绝大多数应用代码处于应用层,它负责实现我们的用例(信贷审批流程)
●设计的水平维度
○客户端(ClientTier)
▲对应于用户的浏览器(IE)
▲一般使用HTML及JSP技术
○服务器端(ServerTier)
▲表现层(PresentationTier))
□系统的表示逻辑
□主要处理httprequest,从中抽取业务数据,进行合法性校验,调用对应的业务逻辑层的业务逻辑,根据返回结果,决定画面迁移,产生httpresponse。
□对应于MVC的V(View)。
主要响应前台用户的操作和提供适当的数据的表现形式
▲业务逻辑层(BusinessTier)
□体现系统的业务逻辑
▲集成层(IntegrationTier)
□系统的集成逻辑
□与persistencestore进行具体的操作
▲数据/资源层(ResourceTier)
□系统的数据储存,主要指数据库
2.2用例描述(信贷审批流程)
信贷审批流程的具体过程为:
客户登陆中国建设银行网上信贷申请平台,填完申请信息后递交信贷申请;
主办客户经理登陆审批客户信贷申请书,填入授信金额后递交给
客户经理主管;
客户经理主管查看客户经理主管递交的申请书和授信金额,进一步确定授信金额后递交给分行行长;
最后由分行行长来决定是否同意客户的信贷申请,这个用例建模如下:
图3信贷流程建模用例图
具体的流程图如下:
图4信贷审批流程图
2.3jBPM工作流管理系统工作机制
2.3.1jBPM工作流管理系统概述
jbpm是轻量级,可扩展的工作流管理系统。
Jbpm的业务流程的定义是用jPdl(Processdefinitionlanguage)来描述的。
系统的原理是:
由流程管理员装入流程,用户或者系统执行流程中的步骤,jbpm引擎负责维护流程的状态,日志以及执行流程中定义的自动动作。
2.3.2工作流引擎与应用的接口原理
应用调用ExecutionService.StartProcessInstance()启动流程,引擎产生任务。
等待任务的所有者调用ExecutionService.endOfState()指令来完成任务。
当endOfState指令被调用后,引擎就进行运算产生的新的任务,然后继续等待endOfState指令的调用直到流程结束。
引擎只对State产生任务,对其他的节点比如:
process-state,fork,decision,join都不产生任务。
只对他们进行运算,执行每个节点的Delegation和Action.
第三章系统详细设计
3.1表现层详细设计
3.1.1系统输入
表一系统输入参数
角色
用户名
密码
申请理由
申请金额
授权金额
申请客户
字符串类型
浮点类型
主办客户经理
客户经理主管
分行行长
3.1.2系统输出
表二系统输出参数
页面反馈信息
3.2Web应用框架struts在信贷审批流程上的实现
Web应用框架Struts关于信贷审批流程的配置文件struts-config.xml关键代码:
<
global-forwards>
<
forwardname="
login"
path="
/login.jsp"
/>
homeaction"
/home.do"
home"
/home.jsp"
taskform"
/taskform.jsp"
taskformprepareaction"
/taskformprepare.do"
<
/global-forwards>
指定了系统根据URL跳转到相应的页面来显示结果;
action-mappings>
!
--ACTIONS-->
actionpath="
/login"
name="
loginform"
scope="
request"
type="
org.jbpm.web.struts.action.LoginAction"
/home"
homeform"
org.jbpm.web.struts.action.HomeAction"
/taskformprepare"
org.jbpm.web.struts.action.TaskFormPrepareAction"
/taskformsubmit"
org.jbpm.web.struts.action.TaskFormSubmitAction"
/action-mappings>
接下来,struts根据path使流程跳转到与之相对应的action类去处理具体的业务逻辑;
这样struts就很好地把业务逻辑和显示页面分离开来,为我们的编写代码提供了很大的方便,下图是和struts有关类的建模:
图5struts相关建模
3.3信贷审批流程在jBPM工作流管理系统上的实现
3.3.1jBPM工作流定义语言
jBPM有自己专门地用于定义流程的语言:
jPdl。
jPdl描述的是流程的过程,是通过状态表示,流程由
ELEMENTstart-state(description?
transition+)>
ELEMENTstate(description?
assignment?
action*,transition+)>
ELEMENTprocess-state(description?
delegation,action*,transition+)>
ELEMENTdecision(description?
ELEMENTfork(description?
delegation?