W/ Configuration File
1) Create the SampleWorkItemHandler.java
file:
import java.util.HashMap; import java.util.Map; import org.kie.api.runtime.process.WorkItem; import org.kie.api.runtime.process.WorkItemHandler; import org.kie.api.runtime.process.WorkItemManager; public class SampleWorkItemHandler implements WorkItemHandler { public void abortWorkItem(WorkItem item, WorkItemManager manager) { manager.abortWorkItem(item.getId()); } public void executeWorkItem(WorkItem item, WorkItemManager manager) { Map<String, Object> resultMap = new HashMap<String, Object>(); resultMap.put("name", "value"); manager.completeWorkItem(item.getId(), resultMap); } }
2) Create the /META-INF/SampleWorkItemHandlers.conf
file:
[ "Sample": new SampleWorkItemHandler() # incompatible with CDI ]
3) Create the /META-INF/drools.session.conf
file:
drools.workItemHandlers=SampleWorkItemHandlers.conf
W/ KIE API
1) Create the SampleWorkItemHandler.java
file:
import java.util.HashMap; import java.util.Map; import org.kie.api.runtime.process.WorkItem; import org.kie.api.runtime.process.WorkItemHandler; import org.kie.api.runtime.process.WorkItemManager; public class SampleWorkItemHandler implements WorkItemHandler { public void abortWorkItem(WorkItem item, WorkItemManager manager) { manager.abortWorkItem(item.getId()); } public void executeWorkItem(WorkItem item, WorkItemManager manager) { Map<String, Object> resultMap = new HashMap<String, Object>(); resultMap.put("name", "value"); manager.completeWorkItem(item.getId(), resultMap); } }
2) Create the SampleServlet.java
file:
import java.util.HashMap; import java.util.Map; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.kie.api.runtime.KieSession; import org.kie.api.runtime.manager.RuntimeEngine; import org.kie.api.runtime.manager.RuntimeManager; import org.kie.api.runtime.process.WorkItemManager; @WebServlet(name = "SampleServlet", value = "/") public class SampleServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) { RuntimeManager runtimeManager = ... // or inject it RuntimeEngine runtimeEngine = runtimeManager.getRuntimeEngine(...); KieSession sess = engine.getKieSession(); WorkItemManager workItemManager = sess.getWorkItemManager(); workItemManager.registerWorkItemHandler("Sample", new SampleWorkItemHandler()); // or inject it ... } }
W/ Work Item Handler Producer
1) Create the SampleWorkItemHandler.java
file:
import java.util.HashMap; import java.util.Map; import org.kie.api.runtime.process.WorkItem; import org.kie.api.runtime.process.WorkItemHandler; import org.kie.api.runtime.process.WorkItemManager; public class SampleWorkItemHandler implements WorkItemHandler { public void abortWorkItem(WorkItem item, WorkItemManager manager) { manager.abortWorkItem(item.getId()); } public void executeWorkItem(WorkItem item, WorkItemManager manager) { Map<String, Object> resultMap = new HashMap<String, Object>(); resultMap.put("name", "value"); manager.completeWorkItem(item.getId(), resultMap); } }
2) Create the SampleWorkItemHandlerProducer.java
file:
import java.util.HashMap; import java.util.Map; import org.jbpm.runtime.manager.api.WorkItemHandlerProducer; import org.kie.api.runtime.process.WorkItemHandler; public class SampleWorkItemHandlerProducer implements WorkItemHandlerProducer { @Override public Map<String, WorkItemHandler> getWorkItemHandlers(String identifier, Map<String, Object> params) { Map<String, WorkItemHandler> workItemHandlers = new HashMap<String, WorkItemHandler>(); workItemHandlers.put("Sample", new SampleWorkItemHandler()); // inject if using CDI return workItemHandlers; } }
3) Create the SampleServlet.java
file:
import java.util.HashMap; import java.util.Map; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.jbpm.runtime.manager.impl.cdi.InjectableRegisterableItemsFactory; import org.kie.api.runtime.KieSession; import org.kie.api.runtime.manager.RuntimeEngine; import org.kie.api.runtime.manager.RuntimeEnvironment; import org.kie.api.runtime.manager.RuntimeEnvironmentBuilder; import org.kie.api.runtime.manager.RuntimeManager; @WebServlet(name = "SampleServlet", value = "/") public class SampleServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) { RuntimeEnvironment env = RuntimeEnvironmentBuilder.Factory.get()...registerableItemsFactory(new InjectableRegisterableItemsFactory()).get(); // or inject it RuntimeManager runtimeManager = ... // or inject it RuntimeEngine runtimeEngine = runtimeManager.getRuntimeEngine(...); KieSession sess = engine.getKieSession(); ... } }