cancel
Showing results for 
Search instead for 
Did you mean: 

Subprocess TimerBoundaryEvent Problem

smee82
Champ in-the-making
Champ in-the-making
Hello,
i have the following process definition with a subprocess and a timerboundaryevent attached to this subprocess:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlnsSmiley Surprisedmgdc="http://www.omg.org/spec/DD/20100524/DC" xmlnsSmiley Surprisedmgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
  <process id="MySubprocessTest" name="MySubprocessTest">
    <documentation>Place documentation for the 'MySubprocessTest' process here.</documentation>
    <subProcess id="subprocess1" name="Sub Process">
      <startEvent id="startevent1" name="Start"></startEvent>
      <endEvent id="endevent1" name="End"></endEvent>
      <userTask id="usertask1" name="Sub Task 1" activiti:assignee="kermit"></userTask>
      <userTask id="usertask2" name="Sub Tast 2" activiti:assignee="kermit"></userTask>
      <sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
      <sequenceFlow id="flow2" name="" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
      <sequenceFlow id="flow3" name="" sourceRef="usertask2" targetRef="endevent1"></sequenceFlow>
    </subProcess>
    <boundaryEvent id="boundarytimer1" name="" cancelActivity="false" attachedToRef="subprocess1">
      <timerEventDefinition>
        <timeDate>2011-11-04T10:24:30</timeDate>
      </timerEventDefinition>
    </boundaryEvent>
    <userTask id="usertask3" name="Start Sub" activiti:assignee="kermit"></userTask>
    <startEvent id="startevent2" name="Start"></startEvent>
    <sequenceFlow id="flow4" name="" sourceRef="startevent2" targetRef="usertask3"></sequenceFlow>
    <endEvent id="endevent2" name="End"></endEvent>
    <userTask id="usertask4" name="Check Sub" activiti:assignee="kermit"></userTask>
    <sequenceFlow id="flow6" name="" sourceRef="subprocess1" targetRef="usertask4"></sequenceFlow>
    <sequenceFlow id="flow7" name="" sourceRef="usertask4" targetRef="endevent2"></sequenceFlow>
    <serviceTask id="servicetask1" name="Service Task" activiti:class="TimerVariables"></serviceTask>
    <sequenceFlow id="flow9" name="" sourceRef="usertask3" targetRef="servicetask1"></sequenceFlow>
    <sequenceFlow id="flow10" name="" sourceRef="servicetask1" targetRef="subprocess1"></sequenceFlow>
    <userTask id="usertask5" name="User Task" activiti:assignee="kermit"></userTask>
    <sequenceFlow id="flow11" name="" sourceRef="boundarytimer1" targetRef="usertask5"></sequenceFlow>
  </process>


I completed the first task of the subprocess an wait until the timer fires. If then i want to continue with the second task i get the following exception. The exception only occurs if the cancelAcivity property is set to "false". But i need to set it to false because, the timer shall only fire a reminder to continue the process. This feature is very important for my use of activity.
Is this a bug or am i missing anything on my process definition?

Exception

com.vaadin.event.ListenerMethod$MethodException
Cause: org.activiti.engine.ActivitiException: this activity doesn't accept signals
   at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
   at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
   at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1193)
   at com.vaadin.ui.Button.fireClick(Button.java:539)
   at com.vaadin.ui.Button.changeVariables(Button.java:206)
   at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1299)
   at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1219)
   at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:735)
   at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
   at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
   at java.lang.Thread.run(Thread.java:662)
Caused by: org.activiti.engine.ActivitiException: this activity doesn't accept signals
   at org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.signal(FlowNodeActivityBehavior.java:53)
   at org.activiti.engine.impl.persistence.entity.ExecutionEntity.signal(ExecutionEntity.java:315)
   at org.activiti.engine.impl.persistence.entity.TaskEntity.complete(TaskEntity.java:149)
   at org.activiti.engine.impl.cmd.CompleteTaskCmd.completeTask(CompleteTaskCmd.java:63)
   at org.activiti.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:57)
   at org.activiti.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:28)
   at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)
   at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
   at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:42)
   at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
   at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:40)
   at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)
   at org.activiti.engine.impl.TaskServiceImpl.complete(TaskServiceImpl.java:144)
   at org.activiti.explorer.ui.task.TaskDetailPanel$5.buttonClick(TaskDetailPanel.java:353)
   at sun.reflect.GeneratedMethodAccessor137.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:490)
   … 22 more
2 REPLIES 2

trademak
Star Contributor
Star Contributor
Hi,

A boundary timer event with cancelActivity set to false is not supported.
So we currently only support cancelActivity with a value of true.

Best regards,

smee82
Champ in-the-making
Champ in-the-making
Thanks for your speedy answer. Is it supported with tasks oder standalone subprocesses? Or generally not supported?