您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > JBPM工作流应用开发文档
一.工作流概念工作流的经典定义为:全部或者部分由计算机支持或自动处理的业务过程。工作流管理系统(WFMS)是这样的一个软件包:它通过执行经过计算的流程定义去支持一批专门设定的业务流程。它被用来支持定义、管理和执行工作流程。工作流管理系统的目标是:管理工作的流程以确保工作在正确的时间被期望的人员所执行——在自动化进行的业务过程中“插入”人工的执行和干预,可以说正是工作流管理系统的价值所在,也是工作流系统开发者的主要工作内容。二.应用工作流能给我们带来1.降低开发风险——通过使用诸如活动、流转、状态、行为这样的术语,使得业务分析师和开发人员不必将用户需求转化成详细设计文档。2.流程实现的集中统一——应对业务流程经常变化的情况,使用工作流技术的最大好处是使业务流程的实现代码,不在散落在各式各样的业务系统中。3.加速开发——开发者不用再关注流程的参与者、活动节点的衔接、流转控制……因为这些工作很多被工作流框架接管了。因而开发者开发起来更快、代码出错更少、系统更加容易维护。4.提神对迭代开发的支持——如果系统中业务流程部分被硬编码,就不容易更改,需求分析师就会花费很大的精力在开发前的业务分析中,并且希望一次成功。但可悲的是,在任何软件项目开发中,这都很少能实现。工作流管理系统使得业务流程很容易部署和重新编排,业务流程相关的应用开发可以以一种“迭代/渐进”的方式推进,也就是说工作流技术在某种程度上支持“需求分析不必一次完成成功”。三.关于jBPMjBPM,全称是javaBusinessProcessManagement,是一种基于javaEE的轻量级工作流管理软件包,由于jBPM架构的开放性,它更像是一个支持面向流程编程的框架(Framework)。JBossjBPM是一个可扩展、灵活的能够实现工作流/业务流程管理的企业级开发框架,提供了流程定义、流程部署、流程执行、流程管理等功能。jBPM是JBoss旗下的子项目,JBoss下还包括有Seam(JavaEE开发框架)、Drools(规则引擎)、Hibernate(ORM持久化框架)等众多领域的优秀开源项目。由于同属一个产品家族,它们能与jBPM完美地结合,互相都留有支持的接口,方便开发者业务的扩展,为jBPM提供延伸的价值。同时jBPM作为JBossSOA平台的一个重要组件,与JBossDrools规则引擎和JBossESB企业服务总线配合在一起为用户提供全面、完整的SOA解决方案。JBossjBPM是一个支持“嵌入式”的业务流程管理产品,理论上可以运行在任何JavaEE应用服务器之上,也可以运行在桌面应用中。JBossjBPM4在流程虚拟机(PVM)技术的基础上,能够同时支持多种流程定义语言,目前已经支持的流程语言有:jPDLBPELSeamPageFlow根据PVM的设计理念,未来的JBossjBPM还会支持更多的流程定义语言。同时,用户也能够根据需求定制自己个性化的流程模型和建模语言。jBPM4的结构特点如下。1.嵌入式的工作流引擎jBPM4是完全支持嵌入式应用的业务流程开发框架,可以在事务处理、数据持久化等各个方面与业务应用程序进行灵活的集成。区别于传统的工作流平台,它不需要依赖特定的中间件或服务器,减少了硬件和软件的绑定,同时降低了应用部署的网络复杂度,使应用更加容易实现集群。软件开发者可以把jBPM4框架作为业务流程管理的基础,在此基础上开发自己独特的业务流程管理模块和功能。在部署时,只需要把jBPM4作为Java依赖库发布就可以了。2.可插拔的体系架构jBPM4采用了模块化的架构设计,采用了IOC(依赖注入)的设计理念,各模块之间可以比较方便地解除耦合或替换不同的实现,例如持久化、事务处理、身份认证、日志服务等,都由可选模块实现。jBPM的可插拔体系架构,为软件开发者灵活选择jBPM的功能、自定义已有功能和拓展新功能提供了“无限可能”。3.易扩展的流程语言jBPM框架内置的流程定义活动,包括start,task,fork,join和decision等,是构建完整业务流程所必需的组成部分,它们提供了可以将业务逻辑Java代码和业务流程编排无缝衔接的绑定机制。而除了这些内置的流程定义活动和流程结构之外,软件开发者还可以通过定制新的活动类型或者完全重新设计一种新的流程定义语言来描述特定领域的业务流程,满足独特环境下的需求。四.安装和配置jbpm44.1需要安装的软件1)jbpm-4.4.zip2)jdk6或者更高版本3)支持的数据库有hsqldb、mysql、oracle、postgresql、sybase,本说明以oracle作为数据库。4)GPD插件(jbpm在IDE中的流程设计器),eclipse(建议3.6版本以上)或者myeclipse(建议8.1版本以上)安装插件所需的zip在解压后jbpm-4.4\install\src\gpd中的jbpm-gpd-site.zip,本说明以eclipse3.6为例。4.2配置jBPM运行时1)打开window--preferences2)选择JBossjBPM--RuntimeLocations3)点击Add...4)在AddLocation对话框中,输入一个名字,比如jbpm-4.0然后点击Search...5)在BrowseForFolder对话框中,选择你的jbpm根目录,然后点击OK6)点击OK在AddLocation对话框中4.3定义jbpm用户库1)点击窗口--属性(Windows--Preferences)2)选择Java--创建路径--用户类库(Java--BuildPath--UserLibraries)3)点击新建(New)4)类型名字(在这里我们输入的是:jBPMLibraries)5)点击添加JARs(AddJARs...)6)找到jBPM安装程序下的lib目录7)选择lib下的所有jar文件并点击打开(Open)8)选择jBPMLibraries作为入口9)重新点击添加JARs(AddJARs)10)在jBPM的安装程序的根目录下选择jbpm.jar文件11)点击打开(Open)12)在jbpm.jar下选择源码附件(Sourceattachment)作为入口13)点击编辑(Edit)14)在源码附件的配置(SourceAttachmentConfiguration)对话框中,点击目录(ExternalFolder...)15)找到jBPM安装程序下的src目录16)点击选择(Choose)17)点击两次'确定'(Ok)会关闭所有对话框4.4在目录中添加jPDL4模式如果你想直接编辑XML源码,最好是在你的XML目录中指定一下模式(schema),这样当你在编辑流程源码的时候,可以更好的帮助你编写代码。1)点击窗口--属性(Windows--Preferences)2)选择XML--目录(XML--CataLog)3)点击添加(Add)4)添加XML目录(AddXMLCatalogEntry)的窗口打开5)点击map-icon的图标下面的按钮并选择文件系统(FileSystem)6)在打开的对话框中,选择jBPM安装目录下src文件夹中jpdl.xsd文件7)点击打开(Open)并且关闭所有的对话框4.5jBPM需要配置的文件可以从jbpm-4.4解压后的文件下,在路径\examples\src中找到以下文件,加入到项目工程的src中。五.jbpmHelloWorld下面,设计一个简单的流程——“HelloWorld”。1)首先,打开eclipse,先新建一个工程,在这里我们建一个普通的JavaProject就可以。这里给工程名取名:start2)选择Libraries选项卡,”AddLibrary”添加Jbpm库3)工程建立好以后,接下来我们在src目录下建立一个包,包名为:)在包下面,我们新建一个新的流程,选择jBPM4ProcessDefinition(File---new---Other---jBPM4ProcessDefinition)5)点击next,输入Fileneme,这里输入“process”6)点击Finish,使用流程设计器GPD,分别拖入start、state、end节点,用transition连接线做连接转向。单击“Source”可以查看该流程的xml代码4.在Diagram图形界面保存流程,就会生成一个同流程名的png文件,这里为:process.png5.测试代码:stateTest.javapackage{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubstateTestss=newstateTest();//ss.deployProc();//部署流程//ss.startProc();//启动流程ss.doState(helloTest.160001);//触发state节点往下走}voiddeployProc(){//获得流程引擎ProcessEngineprocessEngine=Configuration.getProcessEngine();//得到流程资源服务RepositoryServicerepositoryService=processEngine.getRepositoryService();repositoryService.createDeployment().addResourceFromClasspath().deploy();//部署流程资源}StringstartProc(){ProcessEngineprocessEngine=Configuration.getProcessEngine();//得到流程执行服务ExecutionServiceexecutionService=processEngine.getExecutionService();ProcessInstanceprocessInstance=executionService.startProcessInstanceByKey(helloTest);//启动流程实例Stringpid=processInstance.getId();//获取流程实例IDSystem.out.println(pid=+pid);return(pid);}voiddoState(Stringpid){ProcessEngineprocessEngine=Configuration.getProcessEngine();ExecutionServiceexecutionService=processEngine.getExecutionService();//根据流程ID获取出流程实例列表ListProcessInstancelistP=executionService.createProcessInstanceQuery().processInstanceId(pid).list();ProcessInstanceprocessInstance=listP.get(0);//找名为state的节点Executionexecution
本文标题:JBPM工作流应用开发文档
链接地址:https://www.777doc.com/doc-6108045 .html