1JBossjBPM3.0下一页JBossjBPM3.0WorkflowandBPM实践目录1.介绍1.1.综述1.2.TheJBossjBPM新手工具箱1.3.TheJBossjBPM流程图形设计器1.4.TheJBossjBPM核心组件1.5.TheJBossjBPM控制台web应用1.6.TheJBossjBPM身份组件1.7.TheJBossjBPM日程安排程序1.8.TheJBossjBPM兼容数据库包1.9.TheJBossjBPMBPEL扩展2.开始2.1.下载一览2.1.1.jBPM32.1.1.1.新手工具箱2.1.1.2.核心引擎和身份组件2.1.1.3.数据库扩展2.1.2.jBPM流程设计器2.1.2.1.Eclipse更新站点2.1.2.2.Eclipse特点2.1.3.jBPMBPEL扩展2.2.TheJBossjBPM项目目录2.3.公开CVS访问3.指南3.1.HelloWorld例子3.2.数据库例子3.3.上下问(context)例子:流程变量3.4.任务分派例子3.5.定制动作Action例子4.面向图的程序设计4.1.缺少的一环4.2.图解表示和开发过程4.3.习惯方法4.4.什么是面向图的程序设计4.5.组建块5.发布25.1.运行时的相关部分5.1.1.Java运行环境5.1.2.jBPM库5.1.3.运行时需要的库5.2.配置文件5.2.1.jbpm.properties5.2.2.Hibernatecfgxmlfile5.2.3.业务日历配置文件5.2.4.变量映射配置稳健5.2.5.转换器配置文件5.2.6.缺省模块配置文件5.2.7.流程文档解析器配置文件5.3.在Web应用程序中使用jBPM5.4.在EJB包容器中使用jBPM6.永久化6.1.永久化API6.2.数据库配置6.3.管理事务6.4.jBPM数据库6.4.1.Hibernate集成6.4.2.开发数据库是hsqldb6.4.3.其他数据库的支持6.4.4.高速缓冲存储器6.5.Hibernate定制7.流程模型7.1.综述7.2.流程图(processGraph)7.3.节点(Nodes)7.3.1.节点(Node)职责7.3.2.节点类型(Nodetype)任务(task-node)7.3.3.节点类型(Nodetype)状态(state)7.3.4.节点类型(Nodetype)判定(decision)7.3.5.节点类型(Nodetype)分叉(fork)7.3.6.节点类型(Nodetype)联合(join)7.3.7.节点类型(Nodetype)节点(node)7.4.动作(Actions)7.4.1.动作配置7.4.2.动作引用7.4.3.事件7.4.4.事件传播7.4.5.Script7.4.6.定制事件7.5.超状态(superstate)7.5.1.超状态变迁37.5.2.超状态事件7.5.3.分级名字7.6.异常处理7.7.流程组成7.8.定制节点行为7.9.图(Graph)执行8.上下文(Context)8.1.存取变量8.2.变量的使用期限8.3.变量永久化8.4.变量范围8.4.1.变量重载(overloading)8.4.2.变量重写(overriding)8.5.瞬间变量8.6.定制变量永久化9.任务管理9.1.任务9.2.任务实例9.2.1.任务实例生命周期9.2.2.任务实例及图执行9.3.委派(Assignment)9.3.1.委派接口9.3.2.委派数据模型9.3.3.推模型9.3.4.拉模型9.4.泳道(Swimlanes)9.5.任务事件9.6.任务定时器9.7.任务控制器9.8.定制任务实例9.9.身份组件9.9.1.身份模型9.9.2.赋值表达式9.9.2.1.第一个术语9.9.2.2.下一个术语9.9.3.删除身份组件10.调度程序10.1.定时器10.2.调度程序发布11.业务日历11.1.持久时间11.2.配置12.记录12.1.建立日志412.2.日志检索12.3.数据仓库13.jBPM流程定义语言(JPDL)13.1.流程档案13.1.1.发布流程档案13.1.2.流程版本(versioning)13.1.3.流程转换(conversion)13.2.代理13.2.1.jBPM类载入器13.2.2.流程类载入器(classloader)13.2.3.代理配置13.2.3.1.配置类型field13.2.3.2.配置类型bean13.2.3.3.配置类型constructor13.2.3.4.配置类型configuration-property13.3.JPDLxmlschema13.3.1.process-definition(流程定义)13.3.2.node(节点)13.3.3.commonnodeelements(常见节点元素)13.3.4.start-state(开始状态)13.3.5.end-state(结束状态)13.3.6.state(状态)13.3.7.task-node(任务节点)13.3.8.process-state(流程状态)13.3.9.super-state(超状态)13.3.10.fork(交叉)13.3.11.join(联合)13.3.12.decision(判定)13.3.13.event(事件)13.3.14.transition(转换)13.3.15.action(动作)13.3.16.script(脚本)13.3.17.expression(表达式)13.3.18.variable(变量)13.3.19.handler(处理器)13.3.20.timer(定时器)13.3.21.create-timer(建立定时器)13.3.22.cancel-timer(放弃定时器)13.3.23.task(任务)13.3.24.swimlane(泳道)13.3.25.assignment(委派)13.3.26.controller(控制器)13.3.27.sub-process(子流程)13.3.28.condition(条件)513.3.29.exception-handler(异常处理)14.安全14.1.要做的14.2.验证14.3.授权15.TDDforworkflow15.1.IntroducingTDDforworkflow15.2.XMLsources15.2.1.Parsingaprocessarchive15.2.2.Parsinganxmlfile15.2.3.ParsinganxmlString15.3.Testingsubprocesses16.可插入架构下一步Chapter1.介绍6第一章:介绍前一页后一页第一章:介绍JBossjBPM是一个复杂的可扩展的工作流管理系统.JBossjBPM有直观的流程语言来表示商业流程图的术语比如,任务,异步通讯的等待状态,定时器,自动操作等等.把这些操作绑在一起,,JBossjBPM就有了最强大和易扩展性的控制流机制.JBossjBPM只有最小的倚赖性可以很容易的作为java库来使用.当然它也可以用在吞吐量极为关键的J2EE群应用服务器环境中.JBossjBPM可以同任何数据库配置可以部署在任何应用服务器上.1.1.综述核心工作流和BPM功能被封状作为一个简单的Java库.这个库包括在jBPM数据库中存储,更新和检索流程信息的服务7Figure1.1.JBossjBPM组件一览1.2.JBossjBPM新手工具箱新手工具箱是包含了jBPM所有组件包在一个可下载的包里.这个包包括:jbpm-server,预先配置的jboss应用服务器.jbpm-designer,jBPM流程图形化设计器的eclipse插件.jbpm-db,jBPM数据库兼容包(参看下面).jbpm,核心jbpm组件包括库和本手册.jbpm-bpel,JBossjBPMBPEL扩展参考.预配置的JBoss应用服务器有下列安装组件:核心jBPM组件,打包作为JBoss服务档案一个包括所有jBPM表格的完整数据库:默认的hypersonic数据库包含所有的jBPM表格和已经定义的流程.8jBPM控制台web应用程序这个可以用来为jBPM管理员.jBPM调度程序所有定时器的执行.调度程序在新手工具箱里配置成了一个servlet.这个Servlet会为产生一个线程来监视每个定时器的执行.一个流程例子已经发布进了jBPM数据库.1.3.JBossjBPM图形化流程设计器JBossjBPM也包括一个图形化的流程设计工具.这个设计器是用来创作商业流程的JBossjBPM图形设计器是一个Eclipse插件.独立安装版本的设计器工具已经在开发路线图里了.图形化设计工具最重要的特性是它同时支持业务分析员和技术开发人员.这样就可以在业务流程建模和实际执行之间平滑转换.插件可用做为本地的updatesite(Eclipse纯粹的zip文件),用做符合Eclipse软件更新机制的安装包.当然你也可以把它展开到你的Eclipse的安装目录.1.4.JBossjBPM核心组件JBossjBPM核心组件是纯粹的Java(J2SE)软件,来处理流程定义和运行时的流程实例执行.JBossjBPM是一个Java库.因此,它可以用在任何java环境比如web应用程序,Swing应用程序,EJB,WebService等等.jBPM库可以被打包作为satelesssessionEJB(无状态会话EJB).这可以用做集群的发布具有极高的吞吐量可伸缩性.无状态会话EJB根据J2EE1.3规范重新写过所以可以发布到任何应用服务器上.JBossjBPM核心组件被打包成一个简单的Java库文件.依赖你所使用的功能性,库jbpm-3.0.jar及一些相关的第三方的库比如.hibernate,dom4j等等.这些相关性在第五章发布有清晰的描述永久性方面,jBPM内部使用hibernate.除了传统的O/R映射外,hibernate也分析不同数据库系统的SQL方言,这使jBPM在当前所有的数据库上都可以移植.JBossjBPMAPI可以从项目中任意编写的Java软件访问,比如Web应用程序,EJB,或webService组件,消息bean或其他java组件.1.5.JBossjBPM控制台web应用程序jBPM控制台web应用程序是为两个目的服务的.首先,它作为流程执行运行时间任务生成的中央用户接口.其次,它也是一个管理和监视控制台允许检查和操作运行中的流程实例.1.6.JBossjBPM身份组件9JBossjBPM可以集成进任何包含公司用户和组织信息的目录.对项目来说从那里得到组织信息组件不是容易得到的,JBossjBPM就包含这个组件.身份组件使用的模型比通常的servlet,ejb和门户模型跟富有.更多信息可参考章节9.9,“身份组件”1.7.JBossjBPM调度程序JBossjBPM调度程序是用来监视和运行已经计划到时执行流程的定时器的组件.定时器组件被打包在核心jbpm库中,但是它需要被发布到下面的任一环境中:要不你把调度程序Servlet来产生监视线程或者就必须用独立的JVM来调用调度程序的main方法.1.8.JBossjBPM数据库兼容包JBossjBPM数据库兼容包包括所有支持数据库的相关信息,JDBC驱动程序和数据库初始化脚本.1.9.JBossjBPMBPEL扩展JBossjBPMBPEL扩展是独立的扩展包用来支持BPEL(BusinessProcessExecutionLanguage商业流程执行语言).BPEL的基本要素是xmlScripting语言用来写其他webserver的webservices.前一页Up后一页JBossjBPM3.0首页第二章:开始10第二章开始前一页后一页第二章开始本章将带你如何获得JBossjBPM的第一步并且提供立即运行的初始提示.2.1.下载包一览下面是当前可用的不同j