现在的位置: 首页 > 综合 > 正文

Activiti ServiceTask不能使用Spring 的bean问题

2018年05月14日 ⁄ 综合 ⁄ 共 869字 ⁄ 字号 评论关闭

参考网址:https://groups.google.com/forum/#!topic/camunda-bpm-users/M7K3KXiEHaA

问题描述:

                java类实现 activiti提供的JavaDelegate接口时,获取不到spring给我们加载的bean类,会报 java.lang.NullPointerException;

解决如下:

               当使用 activiti:class 把一个class指定给ServiceTask时,需要实现JavaDelegate接口,activiti引擎将会在内部用Class.newInstance(..)方法创建一个该类的对象,这个对象并不spring容器管理,所以无法获取spring容器给我们生成的bean;

              所以我们只能换一种方式来实现 serviceTask的功能,serviceTask还有两个属性:activiti:expression和activiti:delegateExpression

             activiti:expression="${retrieveCustomerServiceTask.retrieveCustomer(execution,customerId)}":会调用retrieveCustomerServiceTask的 retrieveCustomer(execution,customerId)方法,参数execution和JavaDelagate 中的方法execute(DelegateExecution execution )参数一样,参数customerId是自定义的。在这个方法中就可以使用spring为我们提供的bean了。(亲测好用)

             顺便提一下 activiti:delegateExpression="${customerServiceTask}"  将会执行实现了JavaDelegate的类的execute(DelegateExecution execution )方法。(未亲测)

抱歉!评论已关闭.