第1章简介1.1.目标读者这个开发指南是为了给有经验的开发者看的,这样就可以获得jBPM的完全的灵活性。在这个开发文档中提及的特性可能当前不会被支持到。请自行使用。1.2.概述第2章孵化器解释了最终会放到用户手册中的功能,它们会成为支持的一部分。要注意孵化器中的功能还没有确保稳定。(比如这里可能主要的语法或实现在下一个版本中被改变)。第3章BPMN2.0介绍如何在jBPM中使用BPMN2.0流程语言。第5章流程虚拟机到第9章高级图形执行解释了jBPM的核心,流程虚拟机(PVM),活动和事件监听器是如何建立在它上面的。第10章配置到第18章Signavioweb建模器解释了jBPM框架的高级用法。1.3.源代码和WIKIjBPM的源代码可以在我们的SVN获得:::。发布包中的jbpm.jar包含了许多jBPM模块中的泪:jbpm-api,jbpm-log,jbpm-test-base,jbpm-pvm,jbpm-jpdl和jbpm-enterprise。所以单独使用发布包中的jbpm.jar不会在编译时区分API类和实现类。如果你想只依赖jBPM的API,来构建一个自己的工程,可以直接使用我们的仓库。它的地址在:,现在也比以前方便了很多:只需要把正确的jar放到系统的classpath下。我们还没有清理mavenpom文件中的依赖描述。所以我们还不能给出lib目录下,你需要包含到应用中的,jar的最小集合。(参考JiraissueJBPM-2556然后进行投票,如果你希望让我们知道这些问题对你优先级很高)。依赖库的版本放在lib,是我们测试过的。所以我们推荐你使用lib目录下的依赖版本。为了在这方面帮助你,这里有一个jPDL当前所用的maven依赖的列表:[INFO]------------------------------------------------------------------------[INFO]BuildingjBPM4-jPDL[INFO]task-segment:[dependency:tree][INFO]------------------------------------------------------------------------[INFO][dependency:tree][INFO]org.jbpm.jbpm4:jbpm-jpdl:jar:4.0[INFO]+-org.jbpm.jbpm4:jbpm-pvm:jar:4.0:compile[INFO]|+-org.jbpm.jbpm4:jbpm-api:jar:4.0:compile[INFO]||\-jboss:jboss-j2ee:jar:4.2.2.GA:compile[INFO]|+-org.jbpm.jbpm4:jbpm-log:jar:4.0:compile[INFO]|+-org.jbpm.jbpm4:jbpm-test-base:jar:4.0:compile[INFO]||\-org.hibernate:hibernate-core:jar:3.3.1.GA:compile[INFO]||+-antlr:antlr:jar:2.7.6:compile[INFO]||\-commons-collections:commons-collections:jar:3.1:compile[INFO]|+-org.apache.ant:ant:jar:1.7.0:compile[INFO]||\-org.apache.ant:ant-launcher:jar:1.7.0:compile[INFO]|+-log4j:log4j:jar:1.2.14:compile[INFO]|+-juel:juel:jar:2.1.0:compile[INFO]|+-juel:juel-impl:jar:2.1.0:compile[INFO]|+-juel:juel-engine:jar:2.1.0:compile[INFO]|+-org.slf4j:slf4j-api:jar:1.5.2:compile[INFO]|+-org.slf4j:slf4j-jdk14:jar:1.5.2:compile[INFO]|+-org.jboss.identity.idm:idm-core:jar:1.0.0.Beta1:compile[INFO]||+-org.jboss.identity.idm:idm-common:jar:1.0.0.Beta1:compile[INFO]||+-org.jboss.identity.idm:idm-api:jar:1.0.0.Beta1:compile[INFO]||+-org.jboss.identity.idm:idm-spi:jar:1.0.0.Beta1:compile[INFO]||\-com.sun.xml.bind:jaxb-impl:jar:2.1.8:compile[INFO]||\-javax.xml.bind:jaxb-api:jar:2.1:compile[INFO]||\-javax.xml.stream:stax-api:jar:1.0-2:compile[INFO]|+-org.jboss.identity.idm:idm-hibernate:jar:1.0.0.Beta1:compile[INFO]||+-javassist:javassist:jar:3.4.GA:compile[INFO]||+-org.hibernate:hibernate-cglib-repack:jar:2.1_3:compile[INFO]||\-org.slf4j:slf4j-log4j12:jar:1.5.2:compile[INFO]|+-org.hibernate:hibernate-entitymanager:jar:3.4.0.GA:compile[INFO]||+-org.hibernate:ejb3-persistence:jar:1.0.2.GA:compile[INFO]||+-org.hibernate:hibernate-commons-annotations:jar:3.1.0.GA:compile[INFO]||+-org.hibernate:hibernate-annotations:jar:3.4.0.GA:compile[INFO]||+-dom4j:dom4j:jar:1.6.1:compile[INFO]|||\-xml-apis:xml-apis:jar:1.0.b2:compile[INFO]||\-javax.transaction:jta:jar:1.1:compile[INFO]|+-org.livetribe:livetribe-jsr223:jar:2.0.5:compile[INFO]|\-javax.mail:mail:jar:1.4.1:compile[INFO]|\-javax.activation:activation:jar:1.1:compile[INFO]+-junit:junit:jar:3.8.1:compile[INFO]\-hsqldb:hsqldb:jar:1.8.0.7:test[INFO]------------------------------------------------------------------------jboss的idm依赖在org.jboss.identity.idm:*部分,可以忽略,包含org.hibernate:hibernate-entitymanager这个列表应该已经让你开始选择一个子集,而不是从${jbpm.home}/lib目录下包含所有依赖库。第2章孵化器这一章介绍了一些更高级的jPDL的活动和功能,这些功能还在开发中。意味着这些jPDL的功能和活动现在还没有被支持。但是它们可以让你尝试使用一下。我们不会为这些活动和功能提供已经稳定的保证。所以要自己承担风险。2.1.timer定时器重要提示:定时器会被修改,在它们放到用户手册之前。参考,task,sub-process和group中。当这个定时器被触发,那个流向就会被执行。一个定时器可以被指定在自定义事件中,在等待或东西比如state,task,sub-process和group中。timer元素应该是on元素表示的事件的第一个元素。在这里,事件根据定时器的持续时间被触发。当进入这个活动时定时器被创建。定时器可以触发当流程一直处于这个活动,直到duedate。当流程离开活动,定时器就会被取消。表2.1.timer属性:属性类型默认值是否必填描述duedate持续时间表达式必填指定什么时候定时器需要触发。比如:20分钟或3个工作日。repeat持续时间表达式optional当定时器触发,这个属性指定什么时候定时器需要再次触发。比如:20分钟或3个工作日。2.1.1.持续时间表达式持续时间表达式包含下列语法:quantity[business]{second|seconds|minute|minutes|hour|hours|day|days|week|weeks|month|months|year|years}这里的quantity是一个正整数。添加额外的business意味着只有工作时间应该被计算在持续时间内。如果没有指定business,持续时间会使用绝对时间间隔。关于如何配置工作时间的解释在第2.1.2节“工作日历”。2.1.2.工作日历默认的配置会包含对jbpm.business.calendar.xml文件的引用。那包含了一个工作时间的配置,向下面的配置格式:?xmlversion=1.0encoding=UTF-8?jbpm-configurationxmlns=:00-12:00and12:30-17:00/tuesdayhours=9:00-12:00and12:30-17:00/wednesdayhours=9:00-12:00and12:30-17:00/thursdayhours=9:00-12:00and12:30-17:00/fridayhours=9:00-12:00and12:30-17:00/holidayperiod=01/07/2008-31/08/2008//business-calendar/process-engine-context/jbpm-configuration如果默认的工作日历实现能够满足你,你可以直接在xml配置里像上面那样调整时间。如果默认实现没有覆盖你的用例,你可以简单重写自己的实现通过实现org.jbpm.pvm.internal.cal.BusinessCalendar接口。比如:publicclassCustomBusinessCalendari