这段时间由于工作需要,一直学习、研究jbpm。起初一窍不通,走了不少弯路,重jbpm3看到了jbpm4,。虽说公司项目要求用jbpm4,刚开始先从jbpm3 看起,jbpm4 对jbpm3基本上是一种重构性升级,但通过对比着学习还是掌握了不少东西。
近两天看了看jbpm的源码,虽看得不是很明白,理解也不是很深刻,但还是从整体上了解了这个框架的内部结构,运行机制,下面这个分包详解对我帮助不小,在此帖出来供大家参看。
org.jbpm.pvm.internal.ant提供使用ant发布流程,辅助启动jboss的任务。
org.jbpm.pvm.internal.builder用来构造各种模型,包括活动,活动行为,事件,事件处理器, 流程定义,变量,任务,等等。
org.jbpm.pvm.internal.cal提供日历,包括日期,时间段,持续时间,节假日。
org.jbpm.pvm.internal.cfg中的JbpmConfiguration和 SpringConfiguration实现了org.jbpm.api.Configuration,用来从配置文件构造ProcessEngine。
org.jbpm.api.client这部分包含ClientExecution, ClientProcessDefinition, ClientProcessInstance。ClientExecution继承了OpenExecution,声明了end(), signal(), suspend(), resume()之类的方法。ClientProcessDefintion继承了OpenProcessDefintion,其中的功能主要是 createProcessInstance和startProcessInstance。
org.jbpm.pvm.internal.cmd包含Command和CommandService,这是命令设计模 式的基础。其中放着所有的命令,所有的流程操作都可以在这里找到。
org.jbpm.pvm.internal.email下面有两个子包impl和spi,只要注意spi下的 AddressResolver, MailProducer和MailSession就可以实现自定义的实现了。
org.jbpm.pvm.internal.env包含Context, Environment, EnvironmentFactory, Transaction, WireObject。其中Context, Environment和EnvironmentFactory组成了jBPM4里的IoC系统。Transaction定义了通用事务。 WireObject用来做依赖绑定。下面保存着环境有关的实现类。包括Authentication权限认证,Environment与context 相关的各个类。
org.jbpm.pvm.internal.hibernate下面的类是专门与hibernate进行交互的类,包含 类型转换,命名策略和最主要的DbSessionImpl,所有与数据库的操作都来源于此。
org.jbpm.pvm.internal.history下面是历史操作所需要的部分,其下还包含events和 model包。
org.jbpm.pvm.internal.identity包主要负责身份认证的操作。包含三个子包cmd, impl和spi,cmd下定义所用到的命令,impl下是实现类,spi下放着IdentitySession。
org.jbpm.pvm.internal.jms包括JmsMessageSession和 JmsMessageUtil,应该是用来处理jms的,JmsMessageSession与org.jbpm.api.job.Message相关 联。说明job下的Message是依靠jms发送异步消息的。
org.jbpm.pvm.internal.job中提供了对job, message和timer的实现
org.jbpm.pvm.internal.jobexecutor提供了任务执行器,包括 JobExecutorServlet和对应的线程池,以及一系列的命令和处理器。无论是job, message或是timer,最终都会被这里执行。
org.jbpm.pvm.internal.lob主要用来处理流程发布时的文件内容,需要把jpdl.xml文件和图 片,甚至是以后可能把class文件都以附件形式保存到数据库中,以备后用。
org.jbpm.pvm.internal.model这个模型包中包含了很多很多类,包括Activity, CompositeElement, Condition, ObservableElement, OpenProcessDefinitionTransition。简单分类一下。最底层的是ObservableElement,它是可以被事件监听的 元素,并且可以继承,CompositeElement继承了 ObservableElement,它里面可以装填多个活动。再加上Event中定义了多个事件,这些就构成了最基本的事件模型。Activity和 ActivityCoordinates分别定义了活动类和活动位置。以这些为基础,OpenProcessDefinition继承了 ProcessDefinition和CompositeElement。最终,我们还有一个Condition类,它只有一个evaluate方法,接 受OpenExecution作为参数返回boolean值,Condition和Activity组合成了Transition,这个转移包含了起点, 终点,以及条件判断。最庞大的模型部分,活动,转移,流程定义,流程实例的实现类都放在这里。在它的op子包中包含的是流程进行中的各项操作。
org.jbpm.pvm.internal.query中放的是History, Job, ProcessDefintion, ProcessInstance这四个query类的实现,还提供了一个Page类,但是其中只有firstResult和maxResults,所以没 啥大用。
org.jbpm.pvm.internal.repository负责的是流程的发布,主要有Deployment和 Repository对应的service, session和cache,这里使用的缓存,所以每次使用流程定义的时候可以利用缓存提高效率。
org.jbpm.pvm.internal.script包含对脚本的支持,默认支持了 JuelScriptEngine。
org.jbpm.pvm.internal.session中支持各种会话,DbSession, MessageSession, RepositorySession和TimerSession。
org.jbpm.pvm.internal.spring这里只有一个 CommandTransactionCallback用来实现从spring中获得事务,并用其执行jbpm中定义的各种命令。
org.jbpm.pvm.internal.stream用于从各种途径读取资源,无论是jbpm配置文件和流程资源都 要通过这些来转换成流的形式,以供给jbpm处理。
org.jbpm.pvm.internal.svc其中svc或许是service的缩写。这个包中除了包括 org.jbpm.api包下定义的所有service接口的实现,还包括commandService的实现和认证拦截器。
org.jbpm.pvm.internal.task这里代表了所有与任务,任务参与者相关的信息,包括 Assignable, AssignmentHandler, OpenTask, Participation, Swimlane, Task, TaskDefinition。简单划分后,主要有任务,任务定义任务处理。剩下的都是与任务分配有关了。TaskDefinition从字面上来看是指 任务定义,里边只有一个getName()。Task中保存了任务相关的一些内容,OpenTask主要用来处理历史事件。参与者部分基本分成三个部分, 以Assignable和AssignmentHandler组成的自定义分配部分,Participation参与者和swimlane泳道。暂时没有 发现三者之间与任务的联系。
org.jbpm.pvm.internal.test包下放了一个JobTestHelper,显然是可以帮助在测试环 境下运行job的,个人认为它放在pvm中似乎有点儿不妥。
org.jbpm.pvm.internal.tx其中负责处理事务,JtaTransaction 啦,SpringTransationInterceptor啦,StandardTransaction啦,这些需要根据实际环境具体选择。jta的实 现部分已经单独放到子包jta中了。希望spring中的事务也能这样处理就好了。
org.jbpm.pvm.internal.type用来进行类型转换,主要是加载jbpm.cfg.xml对流程引擎 进行初始化时,还有就是发布流程的时候进行类型转换。子包包括converter,matcher和variable,类型转换器,类型匹配器和变量。
org.jbpm.pvm.internal.util包含常用工具。
org.jbpm.pvm.internal.wire用来在ioc里进行依赖绑定。子包包含binding, descriptor, operation和xml,个人认为这是很麻烦的绑定方式,而且默认的绑定方式是使用field,而不是常见的setter绑定方式。
org.jbpm.pvm.internal.xml包主要用于解析xml的,主要解析jbpm.cfg.xml和流程定 义文件。
配置文件
jbpm配置jbpm.default.cfg.xml,流程引擎的默认配置文件。 jbpm.identity.cfg.xml, jbpm.jboss.idm.cfg.xml身份验证配置文件。jbpm.jbossremote.cfg.xml远程调用jboss实现命令模式。 jbpm.jobexecutor.cfg.xml任务执行器的配置。
hibernate映射jbpm.execution.hbm.xml, jbpm.history.hbm.xml, jbpm.identity.hbm.xml, jbpm.repository.hbm.xml, jbpm.task.hbm.xml这五个是hibernate映射文件。
任务生命周期jbpm.task.lifecycle.xml任务的生命周期,包括启动,暂停,继续,完成,取消之类。
事务配置jbpm.tx.hibernate.cfg.xml默认的hibernate事务配置。 jbpm.tx.jta.cfg.xml使用jta的事务配置。
IoC配置jbpm.variable.types.xml变量类型映射。jbpm.wire.bindings.xml 依赖绑定映射。
。。。。。。。^-^
分享到:
相关推荐
【JBPM4 Java源代码分包详解】 JBPM4是一个流行的开源工作流管理系统,它提供了一整套用于设计、执行和管理业务流程的工具。在深入研究JBPM4的源代码时,我们可以从其包结构中了解到框架的核心功能和设计理念。 1....
在这个源代码分包详解中,我们将深入理解Jbpm的核心组件和它们的功能。 首先,`org.jbpm.pvm.internal.ant`包提供了Ant任务来发布流程并辅助启动JBoss服务器。这对于自动化流程部署和服务器管理至关重要。 `org....
- 集成Drools规则的Java代码,用于控制流程决策。 - 日志记录和审计相关的类,用于扩展jbpm的监控功能。 - 其他辅助类和工具,如数据访问对象(DAO)和模型对象,用于与数据库交互和封装业务逻辑。 通过分析这些源...
10. **源代码分析**:通过提供的源代码,分析jbpm的实例应用,帮助学员更好地理解和应用所学知识。 课程结束后,你应能掌握jbpm的基本操作,具备设计和实施简单到复杂业务流程的能力。同时,通过源代码的学习,可以...
要理解并使用这些源代码,你需要具备Java开发基础,熟悉Spring框架(因为jbpm4常与Spring集成),了解BPMN,并且对数据库操作有一定了解。如果你计划进一步开发或定制,还需要阅读jbpm的官方文档,学习其API和最佳...
### JBPM4_PVM源代码分析 #### 一、概览 JBPM4_PVM(Process Virtual Machine)是JBPM框架中的一个核心组件,用于处理流程执行的核心逻辑。本文档将详细解析JBPM4_PVM的源代码结构,重点介绍其中的关键类及其功能...
1.1构建jbpm4.4源代码于都工程 1.2配置文件解析过程 1.3对象创建过程与binding解析过程 同时由于本人能力有限,时间有限. 这些东西仅仅为抛砖引玉,我是转而已。可能会有一些不到位的地方。 如有不同意见可以...
JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip JBPM采购申请系统源代码+全套流程+JBPM的详细...
4. **jbpm-gwt**:这部分源代码涉及到jbpm5的GWT(Google Web Toolkit)前端组件。GWT是一个开发富互联网应用的框架,允许使用Java编写客户端代码,然后自动转换为JavaScript。jbpm5的GWT模块提供了用户友好的Web...
- **JBPM4_ID_GROUP**,**JBPM4_ID_MEMBERSHIP**,**JBPM4_ID_USER**:身份认证相关表,管理用户、组和成员关系。 - **JBPM4_JOB**:定时任务表,用于调度未立即执行的操作。 - **JBPM4_LOB**:存储大型对象,如...
1. **jbpm4介绍**:jbpm4是Java Business Process Management的第四代产品,它遵循BPMN(Business Process Model and Notation)标准,提供了一个图形化的流程设计工具,可以直观地创建复杂的业务流程模型。...
- `src/main/java`: 存放Java源代码,包括各个模块的主要类和接口。 - `src/main/resources`: 存放配置文件、资源文件,如数据库连接配置、流程定义XML等。 - `src/test/java`: 测试代码,用于验证功能的正确性。...
4. **持久化**:jbPM使用JPA(Java Persistence API)或其他持久化机制来存储流程实例、任务和其他相关数据,确保流程的持久性和可恢复性。 在"myjbpm"这个子目录中,可能包含了以下内容: - `persistence.xml`:...
提供的“JBPM案例详解”包含了一系列示例的源代码,读者可以通过阅读和实践这些代码,更深入地理解JBPM的工作原理和用法。每个案例都有清晰的注释和说明,有助于读者快速上手和解决问题。 总结,JBPM作为一款强大的...
本代码为本人参考李腾飞老师的教学视频,模仿李腾飞老师的思路写的,正好填补了他由初级到高级的视频过度阶段的空白,可以利用次源代码继续学习他的复杂部分,当然里面还有很多bug,欢迎对我提出批评和建议,由于有...
**JBPM4开发指南代码详解** JBPM4(Java Business Process Management 4)是一款开源的工作流管理系统,它提供了完整的企业级业务流程管理解决方案。本指南将深入解析JBPM4的开发过程,帮助开发者理解并掌握如何...
**JBPM4与Spring整合详解** JBPM4(Java Business Process Management 4)是一个开源的工作流管理系统,它提供了业务流程的建模、部署、执行和监控功能。Spring框架则是Java应用开发中的一个核心组件,主要负责依赖...
**jBPM工作流详解** jBPM,全称Java Business Process Management,是Red Hat公司开发的一款开源的工作流管理系统,它提供了对业务流程的建模、执行和监控能力。jBPM不仅支持传统的工作流标准,如BPMN 2.0,还集成...
**jbpm请假例子完整源代码**是一套基于jbpm流程引擎的示例应用,它用于演示如何在实际项目中利用jbpm实现一个简单的请假流程。jbpm是一个开源的工作流管理系统,它提供了强大的业务流程建模、执行和管理能力。本示例...
1. **流程实例的启动**:通过调用JBPM API,可以在Java代码中启动一个流程实例。 2. **任务管理**:可以查询、分配、完成任务,甚至重新分配任务。 3. **流程变量**:可以在流程中传递数据,支持复杂的数据类型和...