2009年三月27日10:18:08,125] [ERROR] [org.apache.catalina.core.StandardWrapperValve.invoke (269)]: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at org.jbpm.graph.exe.Token.startCompositeLog(Token.java:365)
at org.jbpm.graph.exe.Token.signal(Token.java:187)
at org.jbpm.graph.exe.Token.signal(Token.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.graph.exe.Token$$EnhancerByCGLIB$$783f388.signal(<generated>)
at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:263)
at com.tkams.um.jbpm.JbpmFacadeImpl.nextStep(JbpmFacadeImpl.java:106)
at com.tkams.um.doc.manager.impl.DocumentManagerImpl.submitToWorkflow(DocumentManagerImpl.java:141)
at com.tkams.um.doc.manager.impl.DocumentManagerImpl.addDocument(DocumentManagerImpl.java:68)
at com.tkams.am.manage.struts.action.SubmitScrapAction.execute(SubmitScrapAction.java:80)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.tkams.common.filter.ForceLoginFilter.doFilter(ForceLoginFilter.java:74)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:95)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)执行processInstance。signal()方法报错
高手给看看 搞了两天了 就是搞不定 晕死了
java.lang.NullPointerException
at org.jbpm.graph.exe.Token.startCompositeLog(Token.java:365)
at org.jbpm.graph.exe.Token.signal(Token.java:187)
at org.jbpm.graph.exe.Token.signal(Token.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.graph.exe.Token$$EnhancerByCGLIB$$783f388.signal(<generated>)
at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:263)
at com.tkams.um.jbpm.JbpmFacadeImpl.nextStep(JbpmFacadeImpl.java:106)
at com.tkams.um.doc.manager.impl.DocumentManagerImpl.submitToWorkflow(DocumentManagerImpl.java:141)
at com.tkams.um.doc.manager.impl.DocumentManagerImpl.addDocument(DocumentManagerImpl.java:68)
at com.tkams.am.manage.struts.action.SubmitScrapAction.execute(SubmitScrapAction.java:80)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.tkams.common.filter.ForceLoginFilter.doFilter(ForceLoginFilter.java:74)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:95)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)执行processInstance。signal()方法报错
高手给看看 搞了两天了 就是搞不定 晕死了
解决方案 »
- 如何根据文本框输入的数字,动态的添加文本框
- 查询包含关键词的a标签
- 项目中有个日志管理,如何让用户在执行操作时生成日志呢?
- Javascript Ajax 如何读取List的值
- ejb Caused by: javax.naming.NameNotFoundException: Unable to resolve 'lk'. Resol
- 最近想用JAVA参加一个科技竞赛,各位给点意见
- 调用构造函数报错
- hibernate的update和delete问题,请大家指教!
- 好心的哥哥姐姐, 给我点力量吧,我需要你们的帮助!!! 没有你们, 我真的是孤军奋战了.
- java压缩png质量
- 问一个关于blowfish编码的问题
- 一道计算题深刻理解Jvm,求解原理(菜鸟题目也不会)
请贴出关键代码,这样好分析!
//保存公文信息
document.setCreatorId(userId);
document.setStatus(TkDocument.STATUS_NEW);
document.setCreatetime(new Date());
//设置其它属性
//document.setPropertiesMap(props);
getHibernateTemplate().save(document);
//添加流程实例
long processInstanceId = jbpmFacade.addProcessInstance(workflowName, document);
//绑定流程实例的标识到公文对象
document.setProcessinstanceid(processInstanceId);
getHibernateTemplate().update(document);
//得到下一步的transitionName
String transitionName = null;
List transetionNames = jbpmFacade.searchNextTransitions(processInstanceId, userId);
for (Iterator iterator = transetionNames.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
transitionName = name;
}
String documentId = document.getId();
System.out.println(documentId);
//提交到流程
submitToWorkflow(userId, documentId, transitionName);
}
public void submitToWorkflow(String userId, String documentId, String transitionName) {
TkUser user = (TkUser)getHibernateTemplate().load(TkUser.class, userId);
String username = user.getUserName();
TkDocument document = (TkDocument)getHibernateTemplate().load(TkDocument.class, documentId);
long processInstanceId = document.getProcessinstanceid();
String status = jbpmFacade.nextStep(processInstanceId,username, transitionName);
document.setStatus(status);
getHibernateTemplate().update(document);
}
public long addProcessInstance(String processName,TkDocument document) {
JbpmContext context = getJbpmContext();
ProcessDefinition def = context.getGraphSession().findLatestProcessDefinition(processName);
ProcessInstance instance = new ProcessInstance(def);
instance.getContextInstance().setVariable("document", document.getId());
context.save(instance);
return instance.getId();
}
public List searchNextTransitions(long processInstanceId, String actorId) {
JbpmContext context = getJbpmContext();
ProcessInstance instance = context.getProcessInstance(processInstanceId);
//当前节点
String currentNodeName = instance.getRootToken().getNode().getName();
//起点的名称
String startNodeName = instance.getProcessDefinition().getStartState().getName();
Collection transitions = null;
//如果是在起点
if(startNodeName.equals(currentNodeName)){
transitions = instance.getRootToken().getAvailableTransitions();
}else{
List taskInstances = context.getTaskMgmtSession().findTaskInstances(actorId);
for (Iterator iterator = taskInstances.iterator(); iterator
.hasNext();) {
TaskInstance ti = (TaskInstance) iterator.next();
if(ti.getToken().getProcessInstance().getId() == processInstanceId){
transitions = ti.getAvailableTransitions();
break;
}
}
//查找所属组的任务实例
List pooledTaskInstances = context.getTaskMgmtSession().findPooledTaskInstances(actorId);
for (Iterator iterator = pooledTaskInstances.iterator(); iterator
.hasNext();) {
TaskInstance ti = (TaskInstance) iterator.next();
if(ti.getToken().getProcessInstance().getId() == processInstanceId){
transitions = ti.getAvailableTransitions();
}
}
}
List transitionNames = new ArrayList();
if(transitions != null){
for (Iterator iterator = transitions.iterator(); iterator.hasNext();) {
Transition transition = (Transition) iterator.next();
transitionNames.add(transition.getName());
}
}
return transitionNames;
}
public String nextStep(long processInstanceId, String actorId,
String transitionName) {
JbpmContext context = getJbpmContext();
ProcessInstance instance = context.getProcessInstance(processInstanceId);
//当前节点
String currentNodeName = instance.getRootToken().getNode().getName();
//起点的名称
String startNodeName = instance.getProcessDefinition().getStartState().getName();
System.out.println(instance.getRootToken());
//如果是在起点
if(startNodeName.equals(currentNodeName)){
if(transitionName == null){
[color=#FF0000]instance.signal();
}else{
instance.signal(transitionName);报空指针
}
}else{[/color] List taskInstances = context.getTaskMgmtSession().findTaskInstances(actorId);
for (Iterator iterator = taskInstances.iterator(); iterator
.hasNext();) {
TaskInstance ti = (TaskInstance) iterator.next();
if(ti.getToken().getProcessInstance().getId() == processInstanceId){
if(transitionName == null){
ti.end();
}else{
ti.end(transitionName);
}
break;
}
}
//查找所属组的任务实例
List pooledTaskInstances = context.getTaskMgmtSession().findPooledTaskInstances(actorId);
for (Iterator iterator = pooledTaskInstances.iterator(); iterator
.hasNext();) {
TaskInstance ti = (TaskInstance) iterator.next();
if(ti.getToken().getProcessInstance().getId() == processInstanceId){
if(transitionName == null){
ti.end();
}else{
ti.end(transitionName);
}
break;
}
}
}
//添加公文
public void addDocument(TkDocument document, String workflowName, String userId) {
//保存公文信息
document.setCreatorId(userId);
document.setStatus(TkDocument.STATUS_NEW);
document.setCreatetime(new Date());
//设置其它属性
//document.setPropertiesMap(props);
getHibernateTemplate().save(document);
//添加流程实例
long processInstanceId = jbpmFacade.addProcessInstance(workflowName, document);
//绑定流程实例的标识到公文对象
document.setProcessinstanceid(processInstanceId);
getHibernateTemplate().update(document);
//得到下一步的transitionName
String transitionName = null;
List transetionNames = jbpmFacade.searchNextTransitions(processInstanceId, userId);
for (Iterator iterator = transetionNames.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
transitionName = name;
}
String documentId = document.getId();
System.out.println(documentId);
//提交到流程
submitToWorkflow(userId, documentId, transitionName);
}
public long addProcessInstance(String processName,TkDocument document) {
JbpmContext context = getJbpmContext();
ProcessDefinition def = context.getGraphSession().findLatestProcessDefinition(processName);
ProcessInstance instance = new ProcessInstance(def);
instance.getContextInstance().setVariable("document", document.getId()); context.save(instance);
return instance.getId();
}
public List searchNextTransitions(long processInstanceId, String actorId) {
JbpmContext context = getJbpmContext();
ProcessInstance instance = context.getProcessInstance(processInstanceId);
//当前节点
String currentNodeName = instance.getRootToken().getNode().getName();
//起点的名称
String startNodeName = instance.getProcessDefinition().getStartState().getName();
Collection transitions = null;
//如果是在起点
if(startNodeName.equals(currentNodeName)){
transitions = instance.getRootToken().getAvailableTransitions();
}else{
List taskInstances = context.getTaskMgmtSession().findTaskInstances(actorId);
for (Iterator iterator = taskInstances.iterator(); iterator
.hasNext();) {
TaskInstance ti = (TaskInstance) iterator.next();
if(ti.getToken().getProcessInstance().getId() == processInstanceId){
transitions = ti.getAvailableTransitions();
break;
}
}
//查找所属组的任务实例
List pooledTaskInstances = context.getTaskMgmtSession().findPooledTaskInstances(actorId);
for (Iterator iterator = pooledTaskInstances.iterator(); iterator
.hasNext();) {
TaskInstance ti = (TaskInstance) iterator.next();
if(ti.getToken().getProcessInstance().getId() == processInstanceId){
transitions = ti.getAvailableTransitions();
}
}
}
List transitionNames = new ArrayList();
if(transitions != null){
for (Iterator iterator = transitions.iterator(); iterator.hasNext();) {
Transition transition = (Transition) iterator.next();
transitionNames.add(transition.getName());
}
}
return transitionNames;
}
public String nextStep(long processInstanceId, String actorId,
String transitionName) {
JbpmContext context = getJbpmContext();
ProcessInstance instance = context.getProcessInstance(processInstanceId);
//当前节点
String currentNodeName = instance.getRootToken().getNode().getName();
//起点的名称
String startNodeName = instance.getProcessDefinition().getStartState().getName();
System.out.println(instance.getRootToken());
//如果是在起点
if(startNodeName.equals(currentNodeName)){
if(transitionName == null){
instance.signal();
}else{
instance.signal(transitionName);
}这里抛空指针 }else{
List taskInstances = context.getTaskMgmtSession().findTaskInstances(actorId);
for (Iterator iterator = taskInstances.iterator(); iterator
.hasNext();) {
TaskInstance ti = (TaskInstance) iterator.next();
if(ti.getToken().getProcessInstance().getId() == processInstanceId){
if(transitionName == null){
ti.end();
}else{
ti.end(transitionName);
}
break;
}
}
//查找所属组的任务实例
List pooledTaskInstances = context.getTaskMgmtSession().findPooledTaskInstances(actorId);
for (Iterator iterator = pooledTaskInstances.iterator(); iterator
.hasNext();) {
TaskInstance ti = (TaskInstance) iterator.next();
if(ti.getToken().getProcessInstance().getId() == processInstanceId){
if(transitionName == null){
ti.end();
}else{
ti.end(transitionName);
}
break;
}
}
}
//返回转向之后的节点名称
return instance.getRootToken().getNode().getName();
}
1、确定 transitionName 是否为NULL
2、ProcessInstance instance = context.getProcessInstance(processInstanceId)为NULL,
3、确定processInstanceId是否为空,或是否存在这样一步一步的跟踪吧!坚持就是胜利啊!
如果你用SPRING来托管事务,那你就要把SERVICE的接口赋予相应的事务。
无论事务怎么用,只要将相应的事务?权限?赋予 这个处理方法就行了,我遇到的就是这问题,你试试喽.