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());
}
//...
}