今天看jbpm文档的时候,看了下jbpm4.4的整体架构,看完之后也顺势debug了下jbpm的源代码,从源代码中小小体会了下jbpm的设计思想
先看下jbpm的整体架构,如下图
再看下jbpm在一个流程中的执行过程
从第一副图中可以看出,在jbpm中,它的一切都基于服务,只要你启动完成流程引擎之后。你便可以获取到它为你提供的各种服务,如上图所示的几大服务,processservice,executionservice,managerservice,commondservice,还有像historyservice,taskservice,repstorysrvice等,其中CommondService是核心,其实其他
服务最终都通过commondservice实现对客户请求的应答
而图二我们可以看出,流程是通过一个execution实时跟踪,以判断当前节点是什么节点,当前节点是否有任务人,执行任务的是什么人,执行完成后
流程的走向是怎样,底层最终操作是通过数据库进行的。
今天主要体会了下jbpm的命令者设计模式,故自己举了个实例debug下,从中获取了些jbpm实现思想
(这个实例就是通过taskservice通过taskid获取task过程)
首先我们获取TaskService服务,其实它的本质是TaskServiceImpl的一个对象,它和TaskService关系下面图有描述,然后调用该服务的getTask(String taskId)方法
先看下TaskServiceImp里面的该方法的实现
public Task getTask(String taskId)
{
return commondService.execute(new GetTaskCmd());
}
其中GetTaskCmd实际上就是一个具体的命令对象,它和jbpm里面的commond关系如下图所示
而getTask(String taskId)方法里面的commondService其实是个命令服务接口,通过它可以执行所有的命令请求,在执行最终的GetTaskCmd真实命令对象之前,一般都会先执行SkipInterceptor,然后RetryInterceptor,EnvironmentInterceptor,(这三个interceptor其实就是上图系统架构里面看到的拦截器链).最终调用具体的命令对象,在GetTaskCmd中它覆盖commond<T>的execute方法如下
public class GetTaskCmd extends AbstructCommand<Task>
{
......................
public Task execute(Environment environment) throws Exception
{
//通过系统环境拿到数据库操作的session
Dbsession sbsession=environment.get(DbSession.class);
//通过hibernate反射封装生成一个TaskImpl对象返回客户
return dbSession.get(TaskImpl.class,Long.parseLong(taskId));
}
}
最终通过GetTaskCmd 具体对象的execute方法,返回用户想要获取的TaskImpl对象
- 大小: 7 KB
- 大小: 16 KB
- 大小: 19 KB
- 大小: 7.8 KB
- 大小: 5.6 KB
- 大小: 12.1 KB
- 大小: 8.6 KB
- 大小: 7.4 KB
- 大小: 7.5 KB
分享到:
相关推荐
jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载
jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd
jBPM4.4开发指南 开发手册 JBPM4.4 开发
jbpm4.4 工作流框架 笔记 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现...
jbpm4.4下载地址
JBPM4.4与SSH2之整合(附完整源码) 这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了...
资源名称:JBPM4.4视频教程(22集附源码)资源目录:【】(01)jbpm4.4简介【】(02)JBPM4.4开发环境搭建【】(03)jbpm4.4环境搭建续【】(04)jbpm4.4配置文件和开发前准备【】(05)jbpm4.4部署流程发起流程实例【】(06)...
jbpm4.4开发指南,jbpm4.4用户指南
jBPM4.4入门开发实例
首先感谢原创,相关信息请查询原创。... 看到好多朋友找不到相应的jar包,致使jbpm4.4的学习遇到困难,现提供除jbpm4.4自身jar包外的所有包,以便大家更快的学习jbpm4.4,希望能帮朋友们少走弯路!
jBPM4.4课程文档
JBPM4.4学习文档.ppt
JBPM4.4之HelloWorld示例
终于把jbpm4.4上传完了,由于csdn最大容量才50m,所以我把这个jar包分成三个部分。
jbpm4.4+ssh配置
jBPM4.4数据库表简单介绍
jbpm4.4整合s2sh 请假流程例子
jbpm4.4 ibatis-spring 整合
jBPM 4.4开发指南,翻译官方文档 JBoss jBPM Teams
jBPM 4.4 用户手册 中文版 PDF格式