/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.bpel.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.drools.WorkingMemory; import org.drools.bpel.instance.BPELProcessInstance; import org.drools.process.instance.WorkItem; import org.drools.process.instance.WorkItemHandler; import org.drools.process.instance.WorkItemManager; public class BPELTestUtil { private BPELTestUtil() { } public static WorkItem findWebServiceInvocation(WorkingMemory workingMemory, String partnerLink, String portType, String operation) { Set<WorkItem> workItems = ((WorkItemManager) workingMemory.getWorkItemManager()).getWorkItems(); for (Iterator<WorkItem> iterator = workItems.iterator(); iterator.hasNext(); ) { WorkItem workItem = iterator.next(); if ("WebServiceInvocation".equals(workItem.getName()) && workItem.getParameter("PartnerLink").equals(partnerLink) && workItem.getParameter("PortType").equals(portType) && workItem.getParameter("Operation").equals(operation)) { return workItem; } } return null; } public static void replyWebServiceInvocation(WorkingMemory workingMemory, WorkItem workItem, String result) { System.out.println("Replying to web service invocation " + workItem.getParameter("PartnerLink") + " " + workItem.getParameter("PortType") + " " + workItem.getParameter("Operation") + ", message = " + workItem.getParameter("Message") + ": " + result); Map<String, Object> results = new HashMap<String, Object>(); results.put("Result", result); workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), results); } public static void replyWebServiceInvocationFault(WorkingMemory workingMemory, WorkItem workItem, String faultName, String result) { System.out.println("Replying to web service invocation " + workItem.getParameter("PartnerLink") + " " + workItem.getParameter("PortType") + " " + workItem.getParameter("Operation") + ", faultName = " + workItem.getParameter("FaultName") + ", message = " + workItem.getParameter("Message") + ": " + result); Map<String, Object> results = new HashMap<String, Object>(); results.put("Result", result); results.put("FaultName", faultName); workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), results); } public static void webServiceInvocation(BPELProcessInstance processInstance, String partnerLink, String portType, String operation, String result) { System.out.println("Web service invocation " + partnerLink + " " + portType + " " + operation + ": " + result); processInstance.signalEvent("message", new String[] { partnerLink, portType, operation, result } ); } public static class WebServiceInvocationHandler implements WorkItemHandler { public void executeWorkItem(org.drools.runtime.process.WorkItem workItem, org.drools.runtime.process.WorkItemManager manager) { System.out.println("Web service invoked " + workItem.getParameter("PartnerLink") + " " + workItem.getParameter("PortType") + " " + (workItem.getParameter("FaultName") == null ? "" : "fault=" + workItem.getParameter("FaultName")) + " " + workItem.getParameter("Operation") + ", message = " + workItem.getParameter("Message")); } public void abortWorkItem(org.drools.runtime.process.WorkItem workItem, org.drools.runtime.process.WorkItemManager manager) { System.out.println("Web service invocation aborted " + workItem.getParameter("PartnerLink") + " " + workItem.getParameter("PortType") + " " + (workItem.getParameter("FaultName") == null ? "" : workItem.getParameter("FaultName")) + workItem.getParameter("Operation") + ", message = " + workItem.getParameter("Message")); } } }