JbpmTemplate在spring-modules-jbpm30和spring-modules-jbpm31的差别

org.springmodules.workflow.jbpm30.JbpmTemplate{

/**
  * Execute the action specified by the given action object within a JbpmSession.
  *
  * @param callback
  * @return
  */
 public Object execute(final JbpmCallback callback) {
  final JbpmSession jbpmSession = getSession();
  boolean existingTransaction = JbpmSessionFactoryUtils.isTransactional(jbpmSession,
    this.jbpmSessionFactory);

  if (existingTransaction) {
   logger.debug("Found thread-bound Session for JbpmTemplate");
  }

  try {
   return hibernateTemplate.execute(new HibernateCallback() {
    /**
     * @see org.springframework.orm.hibernate3.HibernateCallback#doInHibernate(org.hibernate.Session)
     */
    public Object doInHibernate(Session session) throws HibernateException, SQLException {
     return callback.doInJbpm(jbpmSession);
    }
   }, true);
  }
  catch (RuntimeException ex) {
   throw convertJbpmException(ex);
  }
  finally {
   if (existingTransaction) {
    logger.debug("Not closing pre-bound jBPM Session after JbpmTemplate");
   }
   else {
    releaseSession(jbpmSession);
   }
  }
 }

}

 

org.springmodules.workflow.jbpm31.JbpmTemplate{

/**
  * Execute the action specified by the given action object within a
  * JbpmSession.
  *
  * @param callback
  * @return
  */
 public Object execute(final JbpmCallback callback) {
  final JbpmContext context = getContext();

  try {
   // use the hibernateTemplate is present and if needed
   if (hibernateTemplate != null && hasPersistenceService) {

    // use hibernate template
    return hibernateTemplate.execute(new HibernateCallback() {
     /**
      * @see org.springframework.orm.hibernate3.HibernateCallback#doInHibernate(org.hibernate.Session)
      */
     public Object doInHibernate(Session session) throws HibernateException, SQLException {
      // inject the session in the context
      context.setSession(session);
      return callback.doInJbpm(context);
     }
    });
   }

   // plain callback invocation (no template w/ persistence)
   return callback.doInJbpm(context);

  }
  catch (JbpmException ex) {
   throw convertJbpmException(ex);
  }
  finally {
   releaseContext(context);
  }

 }

}

这里可以看到两者之间的区别:

使用的对象是不同的。。

注意在JBPM3.2的版本后。就不再使用jbpmSession对象。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值