ProcessEventListener in container
bwallis42 Nov 5, 2013 6:51 PMIn Querying and Sorting Tasks a solution was shown for how to add a task event listener using CDI.
Can something similar be done for a ProcessEventListener?
I can create and add a listener to the session when I start a process:
KieSession ksession = engine.getKieSession(); ksession.addEventListener(new MyProcessEventListener());
but this listener is lost at the first process pause (a human task).
I have a working DeploymentListener like so:
@ApplicationScoped public class DeploymentListener { private static final Logger logger = LoggerFactory.getLogger(DeploymentListener.class); public void onDeployment(@Observes @Deploy DeploymentEvent event) { logger.info("Unit {} has been successfully deployed ", event.getDeploymentId(), event.getDeployedUnit()); } public void onUndeployment(@Observes @Undeploy DeploymentEvent event) { logger.info("Unit {} has been successfully undeployed", event.getDeploymentId()); } }
and a working task listener (as described in the other post,) like so:
@ApplicationScoped public class TaskEventListener implements TaskLifeCycleEventListener { private static final Logger logger = LoggerFactory.getLogger(TaskEventListener.class); @Inject private TaskContentService contentService; @Override public void afterTaskActivatedEvent(@Observes @AfterTaskActivatedEvent Task ti) { logger.info("AfterTaskActivated event, task = " + new TaskInfo(ti, contentService)); } // ... }
but if I try something similar for a ProcessEventListener it doesn't work, but I'm not sure what the correct annotations would be (I cannot find an example).
@ApplicationScoped public class MyProcessEventListener implements ProcessEventListener { private static final Logger logger = LoggerFactory.getLogger(MyProcessEventListener.class); @Override public void beforeProcessStarted(@Observes @Any ProcessStartedEvent event) { logger.info("BeforeProcessStarted event, id = " + event.getProcessInstance().getId()); } //... }