jBPM(二): 一点简单介绍
??? ??? 1, jBPM是个什么东东及其它?
??? ??? ??? 自己鼓捣jBPM也有段时间了, 但要想自己满意地回答这个问题,仍然感到无从下手.简单地说, jBPM是JBoss的一个开源项目, 用来实现工作流的. 那工作流又是什么? 除jBPM外又有哪些实现? 为什么要用jBPM?再往下说为什么要用工作流?工作流这个概念是什么时候提出的? 它的历只发展脉络又是什么? ....
这一大串问题,现在不可能在这么一个名为"一点简单介绍"的博客中做出完整的回答, (以后倒是有可能搜些资料,争取做个回答).我觉得这些问题,最终都归纳到"为什么要用工作流"这个问题上, 不过对于这个本质问题,我当然也没什么能说服自己的想法,搜了下,发现有不少类似的疑问.比较后,发现这篇博客(http://qzone.qq.com/blog/9899217-1234028060)总结的不错, 对自己的帮助也挺大的. 有兴趣的看官可前去看下.
jBPM作为一种工作流的实现, 那广义地来看, 工作流又都有哪些基本的构成呢? 一般来说, 一个工作流有如下的三个大构件:
??? ??? 2, 体验下jBMP及文件目录介绍.
??? ??? ??? 前面对jBPM有了个概念上的把握, 下面我们运行起来, 对这个jBMP来个近距离观察. 按上篇中提供的链接下载到本地, 解压下,为了介绍的方便, 我们称这个解压后的目录为jBPM_HOME,运行%jBPM_HOME%\jbpm-server目录下的start.bat文件, 在浏览器里输入"http://localhost:8080/jbpm/"就能看到jBMP自带的一个例子. 如何来操作体验那个例子, 网上有不少例子, 我这里就不再赘述.
??? ??? 这里先介绍下jBPM解压的目录结构, 注意我这里用的是3.1.4的版本, 现在最新的版本目录结构上有很大的不同, 为了研究的方便, 我们这里采用大多项目中用到的这个旧版本, 即3.1.4.
??? ??? 解压后, jBPM_HOME目录下有五个文件夹, 依次是jbpm, jbpm-bpel, jbpm-db,jbpm-designer,jbpm-server. 以后我主要打交道的是jbpm文件夹, 这个文件夹下有可能要常看的文档,jBPM自身的源码和自带例子的源码(这是最最常用的,以后对jBPM的研究还是以debug的方式来跟踪jBPM运行源码的),jBPM运行所依赖的jar包.第二个文件夹jbpm-bpel没什么可说的, 看名字觉得它跟bpel整合相关, 现在先关心这个,跳过. 每三个文件夹jbpm-db,这个也是我们开始这段时间常看的一个文件夹, 它下面放的是jbpm部署时往各种常见数据库里建表的SQL语句, (当时我不知道有这个文件夹,硬是自己改了hibernate的配置它在把相应的sql语句输出到文件中,想想自己走了不少弯路呀).第四个文件夹jbpm-designer,它下面放着是jBPM对eclipse做的流程定义插件, 后面我们搭建Eclipse里会用到这里,到时再说.最后一个jbpm-server,它下面放的是jBPM自带一个服务器,我们刚才就是启动这里的服务器对jBPM有了个初步的体验,当然它还有其它一些功能,如对流程运行的监视, 还有JMS等, 不过这些我还没有接触过, 以后再补上.
??? ??? 3, 使用jBPM要做些什么及结合构件图的一点说明说明.
??? ??? 简单地说,在项目中使用jBPM一般有这么些要做的: 按业务逻辑画出流程图, 打包部署定义好的流程图, 在项目中配置jBPM,调用jBPM的API完成整个业务逻辑.
这里结合jBPM的构件图, 我们看下这些步骤都是jBPM中的"谁"来具体负责的.
??? ??? 先看最右边的ProcessArchive. 我们用Process language(也就是这里的jDPL)定义业务逻辑,打包为这里所说的Process Archive, 也就是说这个archive里包含的是业务的流程信息,这里不仅仅指通过eclipse生成的解压文件, 还指部署到数据库后的信息. 再顺着箭头往左走, 看到Definition Loader,jBPM通过它把前面部署到数据库里的流程信息加载到jBPM的执行引擎中, 这样就有了下面的"process definition",通过这个路径我们知道这个process definition是流程信息在内存中的表示. 我们再看最右边的Process client,我是把它理解成jBPM让我们调用的API, 也就是我们项目中写的代码让流程一步步地执行. 再往右是Request Handler, 顾名思义,jBPM通过它来接收process client发来的请求,再往下的Execution Service,jBPM通过它结合前面加载到内存的流程定义来真正执行定义好的业务流程. 其余的两块Process Monitor和Log Manager,就是负责前面说的"流程执行监测"任务了. 另外一下State Manager,应该是负责引擎执行过程中状态的变更事宜相关.
??? ??? 至此, 我们对jBPM的轮廓做了个相当简单的介绍,后续的文章中将结合实例来做详细的分析.