JBPM开发模式的自我分析
2013-10-29 00:00
218 查看
JBPM开发至今,总结了不少经验,下面是我总结出来的一些想法,大家共勉: 首先,业务处理的位置我们都知道在MIS系统里,如果是在OA项目中引入了工作流,主要是将流程逻辑和业务逻辑分开,流程数据持久化到流程引擎表,业务数 据持久化到业务表。这就涉及到业务逻辑在哪里处理的问题。在JBPM中,是在ActionHandler还是在Business Service中呢?
ActionHandler中:我们将业务在JBPM的回调接口ActionHandler实现中处理,将业务表单对象通过 ContextInstance的setTransientVariables()传入,在ActionHandler中持久化,也就是 说,ActionHandler是我们的业务处理主体,可以通过在Task实例中记录业务表单ID。另外,数据库的Connection可以通过 ActionHandler的ExecuteContext 参数来取得!
在Business Service中呢:这个Service就对应于用Spring框架时的Service,我们可以在service方法里面调用JBPM的API,如 JbpmConfiguration.getInstance().createJbpmContext(); TaskInstance ti = jContext.getTaskInstance(tiid); 将业务数据都持久化到JBPM的活表里,这样只在一个数据库Conntection上,可以避免分布式事务的问题。
上面的这两种方式,第一种是我推荐的,其基本思想是将工作流引擎当成一个集成框架,一切以流程为主线。第二种是将工作流引擎当成辅助的第三方库。两种方式对系统的侵入性都非常大,无侵入性我则认为不太现实。
ActionHandler中:我们将业务在JBPM的回调接口ActionHandler实现中处理,将业务表单对象通过 ContextInstance的setTransientVariables()传入,在ActionHandler中持久化,也就是 说,ActionHandler是我们的业务处理主体,可以通过在Task实例中记录业务表单ID。另外,数据库的Connection可以通过 ActionHandler的ExecuteContext 参数来取得!
在Business Service中呢:这个Service就对应于用Spring框架时的Service,我们可以在service方法里面调用JBPM的API,如 JbpmConfiguration.getInstance().createJbpmContext(); TaskInstance ti = jContext.getTaskInstance(tiid); 将业务数据都持久化到JBPM的活表里,这样只在一个数据库Conntection上,可以避免分布式事务的问题。
上面的这两种方式,第一种是我推荐的,其基本思想是将工作流引擎当成一个集成框架,一切以流程为主线。第二种是将工作流引擎当成辅助的第三方库。两种方式对系统的侵入性都非常大,无侵入性我则认为不太现实。
相关文章推荐
- 我的Java开发学习之旅------>JAVA IO 设计模式彻底分析
- 移动三大平台和三大开发模式对比分析
- 多表单系统开发模式(一):系统需求分析
- ios开发之委托者模式分析
- 跨平台APP----对Native/Hybrid/Web APP三种开发模式的分析(系列一)
- 深入分析JavaWeb Item19 -- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 开发模式和架构分析
- [ Office 365 开发系列 ] 开发模式分析
- 跨平台APP----对Native/Hybrid/Web APP三种开发模式的分析(系列一)
- App原生、混合、纯WEB开发模式的优劣分析
- 深入分析JavaWeb Item18 -- JavaWeb的两种常用开发模式
- 深入分析JavaWeb 18 -- JavaWeb的两种常用开发模式
- MVC开发模式的流程分析
- Android开发-事件分发机制实验分析ViewGroup、View事件分发,结合职责链模式
- 三星S5PV210开发之外部存储器介绍和启动模式分析
- 混合开发模式下主流移动开发平台分析
- 微信公众平台开发模式 自定义菜单 指南与菜单新建错误代码分析
- Web开发中的三种缓存模式对页面访问速度影响和分析
- 多表单系统开发模式-01(系统需求分析)
- 【Java核心设计模式】DAO开发实战业务分析