JBPM之长事务设计解析
在企业开发中,很多时候我们需要把一些业务数据持久化到数据库中;在数据要求不是很高的场景下,我们可以不用考虑事务的提交和回滚;但是很多时候,我们面临的很多的数据库脚本需要保证要成功就都执行成功,否则就要回滚;特别是在流程运行中提交时,我们需要处理上一个节点的相关数据,同时也要处理提交到得节点的相关数据,我们需要保证这些数据的正确性和一致性,特别是在发生异常时,我们需要回滚所有的操作。今天我们来分析一下JBPM的事务设计。
JBPM数据库长事务处理是通过拦截器和具体的承载数据库脚本的命令完成的,下面分别进行简单的分析(以下分析是针对hibernate事务进行分析,sping和jta事务的原理都是一样的)
拦截器Interceptor
SkipInterceptor:在相应的资源已经初始化后,则直接跳过后边的拦截器直接执行命令脚本;
RetryInterceptor:防止hibernate的乐观并发策略导致命令执行中断,按照设置的时间间隔和
重试最大次数进行重试执行。
EnvironmentInterceptor:根据设置重新构建环境资源或者直接获取已经最在的当前环境资源;
StandardTransactionInterceptor:负责事务的管理;
DefaultCommandService:最终负责调用具体的数据库脚本命令;
脚本命令Command
脚本命令封装完成某个业务功能需要的数据库脚本。
运行机制
配置拦截器使用策略
我们可以在jbpm.tx.hibernate.cfg.xml配置文件中进行设置
<command-service name="txRequiredCommandService">
<skip-interceptor />
<retry-interceptor />
<environment-interceptor />
<standard-transaction-interceptor />
</command-service>
<command-service name="newTxRequiredCommandService">
<retry-interceptor />
<environment-interceptor policy="requiresNew" />
<standard-transaction-interceptor />
</command-service>
解析拦截器配置策略
由CommandServiceBinding解析配置文件中的command-service元素,并生成
对应的CommandServiceDescriptor进行缓存;
初始化拦截器
当我们首次使用或者获取流程引擎中的TaskService等任何一个服务,就会根据拦
截器配置策略进行初始化拦截器;但是初始化后会进行全局缓存,以后不会每次进行
新建初始化;
具体命令执行
转自:http://www.cnblogs.com/wufengtinghai/archive/2011/06/25/2090312.html
- 大小: 19.5 KB
- 大小: 24.3 KB
分享到:
相关推荐
### jBPM4的PVM实现解析 #### 一、PVM概述 PVM(流程虚拟机)是jBPM4中的核心概念之一,它提供了一个抽象层来处理流程定义和执行逻辑。PVM的设计目的是为了使流程引擎更加灵活、可扩展,并能够支持多种流程语言。...
【JBPM深入解析之变量设计】 JBPM,全称Java Business Process Management,是一款开源的工作流管理系统,用于构建灵活且可扩展的业务流程。它提供了一种模型化的方式来定义和执行业务流程,允许开发者通过编程或者...
jbpm流程设计器是一款强大的工具,专门用于设计和构建jbpm工作流。jbpm(Java Business Process Management)是一个开源的企业级工作流管理系统,它允许开发者通过定义业务流程来自动化企业的业务操作。jbpm流程设计...
"揭秘jbpm流程引擎内核设计思想及构架" jbpm流程引擎内核是指流程引擎中最基本的对象和服务,以及用于解决流程运行问题的调度机制和执行机制。它是流程引擎的灵魂,掌握了流程引擎内核的设计思想和结构,才能真正...
在这个场景中,我们关注的是“JBPM设计器”,一个专门用于创建和编辑流程定义的工具,而这个设计器是用纯JavaScript编写的。 纯JavaScript实现的JBPM设计器意味着它可以完全在浏览器环境中运行,无需依赖服务器端的...
标题 "jbpm源码阅读之一" 提到的是对jbpm(Java Business Process Management)源代码的初步探索。jbpm是一个开源的工作流管理系统,它提供了一套完整的框架来处理业务流程,包括流程定义、执行和监控。这篇博客文章...
ExtJs+jbpm智能流程WEB设计器是一个用于构建和管理业务流程的高级工具,结合了ExtJs的前端技术和jbpm的工作流引擎。这个设计器允许用户在Web环境中创建、编辑和优化流程,无需深入编程,大大提高了工作效率。以下是...
以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. **jbpm4表结构和表字段说明**: jbpm4.3表结构和表字段说明文档通常会详细介绍jbpm4中涉及的数据库表,包括实体如任务实例(TaskInstance)、流程...
本篇文章将深入探讨这两个技术如何结合以实现"extjs jbpm4流程设计器"的功能。 首先,ExtJS是一个强大的前端框架,它提供了丰富的组件库,如表格、表单、图表等,可以构建出高度交互和动态的Web应用。其MVC(Model-...
2. **流程执行**:JBPM流程引擎负责解析BPMN模型并执行流程实例。它能处理异步任务、并发分支、事件驱动的逻辑以及与外部系统交互等复杂情况。流程实例的执行是基于状态机的,每个步骤代表一个状态,通过事件触发...
jBPM-side是一款基于Java的企业级业务流程管理系统,它提供了强大的流程设计、执行和管理功能。这个压缩包包含了关于jBPM-side流程设计器的所有相关资料,涵盖了文档、代码和手册等多个方面,对于学习和掌握这款工具...
【JBPM Web流程设计器】是一种基于Web的工具,它允许用户设计、管理和执行业务流程,类似于Eclipse中的jbpm插件。这个设计器采用JavaScript(js)和ExtJS库来构建,提供了一个直观的图形化界面,使得非技术人员也能...
4. **流程虚拟机(PVM)**:PVM是jBPM的核心组件之一,它是一组用于生成和执行不同流程语言定义的商业流程的简单Java类库。PVM的嵌入式特性使其成为一种高效、易于集成的工作流解决方案。 #### 四、为何选择jBPM 1. ...
JBPM的图形化界面适合快速原型设计,而OSWorkflow更适合需要精细控制流程的项目。集成方面,JBPM与Spring的结合相对简单,而OSWorkflow可能需要更深入的配置。对于流程定制的需求,两者都需要XML文件支持,但实际的...
jbpm designer (基于web的图形化流程设计工具)
《jbpm4设计器 Application化的雏形》 在深入探讨jbpm4设计器的Application化雏形之前,我们首先要理解jbpm4的基本概念。jbpm4是一款开源的工作流管理系统,它提供了强大的工作流建模、执行和监控功能。在这个系统...
- "jBPM 4视频教程04.pdf":这很可能是该教程的第四部分的文字版,详细解释了设计请假流程的步骤,可能包含了流程图的解析、代码示例以及实施技巧等内容。 - "family168.txt":文件名中的"family168"可能是一个网站...
JBPM5是一款强大的工作流管理系统,它基于BPMN2.0标准,用于设计和实现复杂的业务流程。BPMN2.0是一种业务流程建模符号语言,它为业务分析师和开发人员提供了一种标准化的方式来描述和交流业务流程。在JBPM5中,设计...
3. **Activiti5** - Activiti5是一个基于jBPM设计理念的流程引擎,可能会介绍它的设计目标、与jBMP的相似之处以及不同之处,例如API设计、社区活跃度和企业支持等。 4. **BPMN 2.0** - BPMN(Business Process ...