I decided to use the start event because so I can use a TaskQuery instead of 
HistoryTaskQuery. I just want to gain access to the properties of the task the 
transition originates from.

process definition:

  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <process name="process" xmlns="http://jbpm.org/4.0/jpdl"; key="process" 
version="1">
  |    <start name="start1" g="74,95,48,48">
  |       <transition name="to task1" to="task1" g="1,-23"/>
  |    </start>
  |    <end name="end1" g="73,270,48,48"/>
  |    <task name="task1" g="215,141,92,52" assignee="alex">
  |                <on event="start">
  |                  <event-listener class="listeners.TaskEventListener" />
  |                </on>   
  |       <transition name="to task2" to="task2" g="-50,-21"/>
  |    </task>
  |    <task name="task2" g="214,270,92,52" assignee="mike">
  |       <transition name="to end1" to="end1" g="-48,-21"/>
  |    </task>
  | </process>
  | 

EventListener:

  | package listeners;
  | 
  | import java.util.Set;
  | 
  | import org.jbpm.api.Configuration;
  | import org.jbpm.api.ProcessEngine;
  | import org.jbpm.api.TaskService;
  | import org.jbpm.api.listener.EventListener;
  | import org.jbpm.api.listener.EventListenerExecution;
  | import org.jbpm.api.task.Task;
  | 
  | public class TaskEventListener implements EventListener {
  | 
  |     private static final long serialVersionUID = 1L;
  |     private ProcessEngine processEngine;
  |     private TaskService taskService;
  |     
  |     public TaskEventListener() {
  |             processEngine = Configuration.getProcessEngine();
  |             taskService = processEngine.getTaskService();
  |     }
  | 
  |     @Override
  |     public void notify(EventListenerExecution execution) throws Exception {
  |             Set<String> activities = execution.findActiveActivityNames();
  |             String activityName = activities.iterator().next();
  |             // this works: task1 (= the name of the activity is shown)
  |             System.out.println(activityName);
  |             // this does not work, getting null here
  |             Task task = 
taskService.createTaskQuery().activityName(activityName).uniqueResult();
  |             System.out.println(task);
  |     }
  | 
  | }
  | 

Unit test:

  | package tests;
  | 
  | 
  | import java.util.List;
  | 
  | import org.jbpm.api.Configuration;
  | import org.jbpm.api.ProcessEngine;
  | import org.jbpm.api.ProcessInstance;
  | import org.jbpm.api.task.Task;
  | import org.jbpm.test.JbpmTestCase;
  | 
  | public class TaskEventListenerTest extends JbpmTestCase {
  | 
  |     String deploymentId;
  |     
  |     protected void setUp() throws Exception {
  |             super.setUp();
  |             ProcessEngine engine = Configuration.getProcessEngine();
  |             deploymentId = 
engine.getRepositoryService().createDeployment().addResourceFromClasspath("process.jpdl.xml").deploy();
  |     }
  |     
  |     public void testTaskEventListener() {
  |             ProcessInstance processInstance = 
executionService.startProcessInstanceByKey("process");
  |             List<Task> tasks = taskService.findPersonalTasks("alex");
  |             taskService.completeTask(tasks.get(0).getId());
  |             tasks = taskService.findPersonalTasks("mike");
  |             taskService.completeTask(tasks.get(0).getId());
  |     }
  |     
  |     protected void tearDown() throws Exception {
  |             repositoryService.deleteDeploymentCascade(deploymentId);
  |             super.tearDown();
  |     }
  |     
  | }
  | 

Why is the task not found using the TaskQuery?

My second question would be: Why is there a citeria called processInstanceId 
although as far as I recall the class Task has a member variable called 
executionId and so is associated with its execution and not with its process 
instance, right?

http://docs.jboss.com/jbpm/v4/javadocs/org/jbpm/api/task/Task.html

Anyway the activityName is a better criteria because I might have several tasks 
active at the same time.

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4264017#4264017

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4264017
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to