35

Registering a custom process event listener in jBPM or BPM Suite

 3 years ago
source link: http://fxapps.blogspot.com/2017/02/registering-custom-process-event.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Registering a custom process event listener in jBPM or BPM Suite

Two Steps are required to  use a custom process event listener in jBPM 6.5 or BPM Suite 6.4:


1) Create the class that implements org.kie.api.event.process.ProcessEventListener . This class can be in your BPM Suite project or in a separated dependency. In any case you will need the org.jbpm:jbpm-flow:6.5.0.Final maven dependency in your project. If you use a separated maven project with your process event listener, make sure to add it as a dependency;

2) Register the custom listener in kie-deployment-descriptor.xml  on the "Event Listeners" sections and use the full qualified class name and the resolver as reflection.

Now if you execute a process your process event listener methods should be called. For example, I have the following simple test processes:


And in my process event listener I did override the before node triggered method to print the node name, so when I execute the business process I see the following in console:


See the code for a simple process listener and you can find also in my github.

package org.example;

import org.kie.api.event.process.ProcessCompletedEvent; import org.kie.api.event.process.ProcessEventListener; import org.kie.api.event.process.ProcessNodeLeftEvent; import org.kie.api.event.process.ProcessNodeTriggeredEvent; import org.kie.api.event.process.ProcessStartedEvent; import org.kie.api.event.process.ProcessVariableChangedEvent;

public class CustomProcessEventListener implements ProcessEventListener {

public void beforeProcessStarted(ProcessStartedEvent event) { }

public void afterProcessStarted(ProcessStartedEvent event) { }

public void beforeProcessCompleted(ProcessCompletedEvent event) { }

public void afterProcessCompleted(ProcessCompletedEvent event) { }

public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) { System.out.println("Before Node triggered: " + event.getNodeInstance().getNodeName());

}

public void afterNodeTriggered(ProcessNodeTriggeredEvent event) { }

public void beforeNodeLeft(ProcessNodeLeftEvent event) { }

public void afterNodeLeft(ProcessNodeLeftEvent event) { }

public void beforeVariableChanged(ProcessVariableChangedEvent event) { }

public void afterVariableChanged(ProcessVariableChangedEvent event) { }

}

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <deployment-descriptor xsi:schemaLocation="http://www.jboss.org/jbpm deployment-descriptor.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <persistence-unit>org.jbpm.domain</persistence-unit> <audit-persistence-unit>org.jbpm.domain</audit-persistence-unit> <audit-mode>JPA</audit-mode> <persistence-mode>JPA</persistence-mode> <runtime-strategy>SINGLETON</runtime-strategy> <marshalling-strategies/> <event-listeners> <event-listener> <resolver>reflection</resolver> <identifier>org.example.CustomProcessEventListener</identifier> <parameters/> </event-listener> </event-listeners> <task-event-listeners/> <globals/> <work-item-handlers> <work-item-handler> <resolver>mvel</resolver> <identifier>new org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler()</identifier> <parameters/> <name>Log</name> </work-item-handler> <work-item-handler> <resolver>mvel</resolver> <identifier>new org.jbpm.process.workitem.bpmn2.ServiceTaskHandler(ksession, classLoader)</identifier> <parameters/> <name>Service Task</name> </work-item-handler> <work-item-handler> <resolver>mvel</resolver> <identifier>new org.jbpm.process.workitem.webservice.WebServiceWorkItemHandler(ksession, classLoader)</identifier> <parameters/> <name>WebService</name> </work-item-handler> <work-item-handler> <resolver>mvel</resolver> <identifier>new org.jbpm.process.workitem.rest.RESTWorkItemHandler(classLoader)</identifier> <parameters/> <name>Rest</name> </work-item-handler> </work-item-handlers> <environment-entries/> <configurations/> <required-roles/> <remoteable-classes/> <limit-serialization-classes>true</limit-serialization-classes> </deployment-descriptor>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>simple-process-event-listener</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-flow</artifactId> <version>6.5.0.Final</version> <scope>provided</scope> </dependency> </dependencies> </project>


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK