`
rking0228
  • 浏览: 21314 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JBPM3 DAO层的设计

阅读更多
jbpm3 本身提供很多API,可直接操作实体,包结构是以对象去规划的。假设对jbpm进行扩展,继承任务实例、增加其它实体,那么就少不了对于实体的新增、删除和修改;数据要返回给应用(J2EE),需要定义Interface、DAO、DTO等等。以前的项目并没有去区分这一块,对于实例的操作没有使用DAO,而是定义一个类和所需的方法,然后传入JbpmContext或Session 如:
public class WorkflowUtil {
	public List<ProcessInstance> findProcessInstancesByProcessDefinition(JbpmContext jbpmContext, String accountName) {
		Session session = jbpmContext.getSession();
		String ql = "SELECT processInstance\n"
			+ "FROM org.jbpm.graph.exe.ProcessInstance processInstance\n"
			+ "WHERE processInstance.processDefinition = :processDefinition\n"
			+ "AND processInstance.end IS NULL\n";
		session.createQuery(ql);
		Query query = session.createQuery(ql).setParameter("processDefinition", processDefinition);
		return query.list();
}


其实使用Interface有很多好处,所以定义DAO层;每个方法中都有一个JbpmContext/Session,不够优雅,所以简化参数。如
public class WorkflowDaoBean implements WorkflowDao {

	private Session session;
	
	private final static Log log = LogFactory.getLog(WorkflowDaoBean.class);
	
	@SuppressWarnings("deprecation")
	public WorkflowDaoBean(){
		JbpmContext currentJbpmContext = JbpmContext.getCurrentJbpmContext();
	    if (currentJbpmContext!=null) {
	    	session = currentJbpmContext.getSession();
	    } else {
	    	log.info("无法获取当前JbpmContext。");
	    }
	}
	
	public WorkflowDaoBean(Session session){
		this.session = session;
	}
	
	@SuppressWarnings("unchecked")
	public List<ProcessInstance> findProcessInstancesByProcessDefinition(ProcessDefinition processDefinition) {
		String ql = "SELECT processInstance\n"
			+ "FROM org.jbpm.graph.exe.ProcessInstance processInstance\n"
			+ "WHERE processInstance.processDefinition = :processDefinition\n"
			+ "AND processInstance.end IS NULL\n";
		session.createQuery(ql);
		Query query = session.createQuery(ql).setParameter("processDefinition", processDefinition);
		return query.list();
	}

1
0
分享到:
评论

相关推荐

    jBPM4完整例子

    5. **编码实现**:编写控制层(Struts2 Action)、服务层(Spring Service)和持久层(Hibernate DAO)代码,实现流程启动、任务处理、流程查询等功能。 6. **前端展示**:设计并实现用户界面,使得员工可以提交...

    基于jbpm的呼叫服务子系统的设计和实现

    - **Hibernate**: 用于实现系统的持久层设计,提供对象关系映射(ORM),简化数据库操作。 #### 四、系统设计与实现 在详细的需求分析基础上,基于J2EE体系架构设计并实现了呼叫服务子系统。具体而言,采用了以下...

    jbpm4.4+ssh

    源代码部分可能包括了SSH框架的控制器、服务层、DAO层以及jbpm的相关接口实现。配置文件,如`struts.xml`、`spring.xml`和`hibernate.cfg.xml`,则分别定义了Struts2、Spring和Hibernate的配置信息,需要根据实际...

    三大框架与jbpm整合环境

    3. **jbPM配置**:jbPM的processes目录可能包含了工作流的 BPMN2.0 文件,描述了业务流程的逻辑。此外,还有可能有jbPM的配置文件,如jbpm-settings.xml,用于设置jbPM引擎的行为。 4. **实体类和DAO**:Hibernate...

    ssh2与jbpm集成实例源码

    5. **DAO层**:实现与数据库的交互,通常使用Hibernate的Session工厂进行操作。 6. **Action类**:Struts2的Action,处理前端请求,调用Service层方法。 7. **流程定义文件**:Jbpm的bpel或bpmn2文件,定义了具体的...

    ssh+jbpm项目(某集团OA)

    这个项目的源码可能包含了SSH框架的配置文件(如struts.xml、spring-context.xml、hibernate.cfg.xml等)、实体类(Entity)、DAO(Data Access Object)层、Service层以及Action类。PPT可能详细介绍了系统的设计...

    jbpm4.4与ssh框架的整合

    jBPM,全称为java Business Process Management,是JBoss旗下的一款开源工作流引擎,专为Java EE环境设计,提供了一种轻量级的解决方案来管理和执行业务流程。自20世纪70年代工作流技术兴起以来,其目标始终聚焦于...

    jbpm与ssh框架整合

    jBPM是一个强大的工作流引擎,它支持BPMN2.0标准,提供图形化的流程设计工具,允许开发者直观地创建和修改业务流程。jBPM不仅包含了流程的执行引擎,还包含任务服务、事件服务、规则服务等多个组件,使得流程的执行...

    jqueryui1.8 springdb jbpm-email

    例如,你可以使用 jQueryUI 创建一个交互友好的前端界面,通过 SpringDB 实现后端的数据存储和处理,而 Jbpm 可以用来设计和执行复杂的业务流程,同时利用 Jbpm 的邮件服务发送流程相关的通知。这种结合方式可以提供...

    ssh-jbpm 框架的整合使用

    3. 集成Spring与JBPM:配置Spring上下文,创建JBPM的数据源、流程引擎工厂、流程引擎等,使Spring能够管理和控制JBPM。 4. 定义流程模型:使用Jbpm Designer或者BPMN2.0标准的XML文件来设计和定义业务流程。 5. 实现...

    jbpm4.4+s2sh请假流程例子

    在S2SH部分,可能会有实体类(Entity)表示请假信息,Action类处理请求,Service层实现业务逻辑,DAO层负责数据库操作。此外,还可能包含配置文件如struts.xml、spring.xml和hibernate.cfg.xml,用于配置框架的行为...

    ssh+jbpm oa 项目源码

    包括配置文件(如struts.xml、spring配置文件)、实体类(对应数据库表)、DAO(数据访问对象)、Service(业务逻辑服务)、Action(Struts2的控制器)、流程定义文件(jbpm的工作流定义)、以及视图层的JSP或...

    JBPM5.4 SSH 完整项目整合案例

    1. **业务流程定义**:JBPM5.4使用BPMN 2.0标准来定义和设计业务流程,支持图形化建模,包括任务、决策节点、事件等。 2. **工作流引擎**:JBPM内核提供了一个强大的工作流引擎,用于执行和管理定义好的流程实例。 3...

    jBPM4.4Pssh.rar_jbpm-4.4_ssh jbpm_工作流OA

    4. `src/main/java`:源代码目录,包括业务逻辑层(Service)、数据访问层(DAO)和Struts的Action类等。 通过学习这个整合示例,开发者可以了解到如何将工作流管理和业务逻辑无缝集成,如何在SSH环境中使用jbPM...

    ssh+jbpm整合好的demo

    2. **Spring** 管理所有组件的生命周期,包括Struts2的Action、Hibernate的数据访问对象(DAO)以及JBPM的工作流服务。它负责依赖注入,使得不同组件之间可以解耦。 3. **Hibernate** 负责数据库操作,为SSH和JBPM...

    一个Jbpm员工请假流程的实例(源代码)

    `src`目录包含了项目的源代码,可能包括流程服务、DAO(数据访问对象)层、业务逻辑以及与数据库交互的部分。在员工请假流程中,可能会有处理请假申请的服务类,负责与Jbpm引擎交互,启动流程实例,以及处理审批结果...

    jbpm4.3+struts2+spring3+hibernate3整合(一)

    "jbpm4.3+struts2+spring3+hibernate3整合(一)"涉及的是一个常见的Java企业级应用架构整合实践,其中jbpm4.3是业务流程管理(Business Process Management)框架,Struts2是MVC(Model-View-Controller)设计模式...

    SpringMVC+jbpm+ibatis+Hibernate框架

    这个实例可能包含了配置文件(如spring.xml、hibernate.cfg.xml)、实体类(Entity)、DAO接口和实现(Data Access Object)、服务层接口和实现(Service)、控制器(Controller)以及流程定义文件(jbpm的工作流...

    Jbpm4.4 整合Spring Hibernate4

    7. **代码结构**:整合项目通常会包含服务层(Service)、持久层(DAO)、模型层(Entity)和控制层(Controller)等典型Java EE架构组成部分,每个层都有其特定职责。 8. **日志与监控**:整合后,应用可能使用Log...

    jbpm—web工程

    5. `Java源代码`:包括Action类、Service层、DAO层以及jbpm相关的业务逻辑。 6. `Web资源`:JSP页面、CSS样式、JavaScript脚本等,用于构建用户界面。 这个项目的学习和实践可以帮助开发者深入理解如何在实际项目中...

Global site tag (gtag.js) - Google Analytics