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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值