[jboss-user] [jBPM] - Re: How to call external web service in jbpm process.
snowstorm tech
do-not-reply at jboss.com
Thu Jan 31 00:02:14 EST 2013
snowstorm tech [https://community.jboss.org/people/snowstormuser] created the discussion
"Re: How to call external web service in jbpm process."
To view the discussion, visit: https://community.jboss.org/message/795330#795330
--------------------------------------------------------------
Thanks for relpy,
I have already used the above link example that you have provided.But i am facing an error while execuation of the code.
here i'm proving the *bpmn file*, *java code* and *error*
The web service that i used is:-*
*
> http://schemas.xmlsoap.org/wsdl/" location="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL" namespace="http://ws.cdyne.com/WeatherWS/
And i also used the class which are genrated for the webservice above specified in my project class path.
*bpmn file:-*
*
*
> <?xml version="1.0" encoding="UTF-8"?>
> <definitions id="Definition"
> targetNamespace=" http://www.example.org/MinimalExample http://www.example.org/MinimalExample"
> typeLanguage=" http://www.java.com/javaTypes http://www.java.com/javaTypes"
> expressionLanguage=" http://www.mvel.org/2.0 http://www.mvel.org/2.0"
> xmlns=" http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/20100524/MODEL"
> xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation=" http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
> xmlns:g=" http://www.jboss.org/drools/flow/gpd http://www.jboss.org/drools/flow/gpd"
> xmlns:bpmndi=" http://www.omg.org/spec/BPMN/20100524/DI http://www.omg.org/spec/BPMN/20100524/DI"
> xmlns:dc=" http://www.omg.org/spec/DD/20100524/DC http://www.omg.org/spec/DD/20100524/DC"
> xmlns:di=" http://www.omg.org/spec/DD/20100524/DI http://www.omg.org/spec/DD/20100524/DI"
> xmlns:tns=" http://www.jboss.org/drools http://www.jboss.org/drools">
>
> <import importType=" http://schemas.xmlsoap.org/wsdl/ http://schemas.xmlsoap.org/wsdl/" location=" http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL" namespace=" http://ws.cdyne.com/WeatherWS/ http://ws.cdyne.com/WeatherWS/"/>
>
>
> <itemDefinition id="_sItem"/>
>
>
> <itemDefinition id="_listItem" structureRef="java.util.Collection"/>
>
> <itemDefinition id="_listItemOut" structureRef="java.util.Collection"/>
> <itemDefinition id="_map" structureRef="java.util.Map"/>
>
>
> <itemDefinition id="_2-2-4-itemItem" />
>
>
> <itemDefinition id="_5-listItem" />
>
>
> <itemDefinition id="_2_multiInstanceItemType" />
>
> <itemDefinition id="_2_multiInstanceItemOutType"/>
>
>
> <itemDefinition id="_2-2-4_InMessageType" />
> <message id="_2-2-4_InMessage" itemRef="_2-2-4_InMessageType" />
> <interface id="_2-2-4_ServiceInterface" name="" implementationRef="WeatherSoap">
> <operation id="_2-2-4_ServiceOperation" implementationRef="GetCityWeatherByZIP" name="">
> <inMessageRef>_2-2-4_InMessage</inMessageRef>
> </operation>
> </interface>
>
>
> <process processType="Private" isExecutable="true" id="WeatherWSServiceProcess" name="WeatherWSServiceProcess" tns:packageName="defaultPackage">
>
>
> <!-- process variables -->
> <property id="list" itemSubjectRef="_listItem"/>
> <property id="listOut" itemSubjectRef="_listItemOut"/>
> <property id="mode" itemSubjectRef="_sItem"/>
> <property id="map" itemSubjectRef="_map"/>
>
>
> <!-- nodes -->
> <startEvent id="_1" name="StartProcess" >
> </startEvent>
> <scriptTask id="_21" name="Prepare input" scriptFormat=" http://www.java.com/java http://www.java.com/java" >
> <script>
> System.out.println("Get zip code result is " + map);
> list = new java.util.ArrayList(map.values());
> list.remove("Complete");
> listOut = new java.util.ArrayList();
> kcontext.setVariable("list", list);
> kcontext.setVariable("listOut", listOut);
> </script>
> </scriptTask>
> <serviceTask id="_2" name="Get weather forecast" operationRef="_2-2-4_ServiceOperation" implementation="##WebService" >
> <extensionElements>
> <tns:onEntry-script scriptFormat=" http://www.java.com/java http://www.java.com/java">
> <script>System.out.println("WS1");</script>
> </tns:onEntry-script>
> <tns:onExit-script>
> <script>System.out.println("WS2");</script>
> </tns:onExit-script>
> </extensionElements>
> <ioSpecification>
> <dataInput id="_2-2-4_param" name="Parameter" />
> <dataInput id="DataInput_1" name="mode"/>
>
> <dataInput id="_2_listInput" name="list"/>
> <dataOutput id="_2_listOutOutput" name="listOut"/>
> <dataOutput id="_2-2-4_result" name="Result" />
> <inputSet>
> <dataInputRefs>_2-2-4_param</dataInputRefs>
> <dataInputRefs>DataInput_1</dataInputRefs>
> </inputSet>
> <outputSet>
> <dataOutputRefs>_2_listOutOutput</dataOutputRefs>
> </outputSet>
> </ioSpecification>
> <dataInputAssociation>
> <targetRef>_2-2-4_param</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression">#{item}</from>
> <to xsi:type="tFormalExpression">_2-2-4_param</to>
> </assignment>
> </dataInputAssociation>
> <dataInputAssociation>
> <sourceRef>mode</sourceRef>
> <targetRef>DataInput_1</targetRef>
> </dataInputAssociation>
> <dataInputAssociation id="DataInputAssociation_1">
> <sourceRef>list</sourceRef>
> <targetRef>_2_listInput</targetRef>
> </dataInputAssociation>
> <dataOutputAssociation>
> <sourceRef>_2-2-4_result</sourceRef>
> <targetRef>itemOut</targetRef>
> </dataOutputAssociation>
> <multiInstanceLoopCharacteristics>
> <loopDataInputRef>_2_input</loopDataInputRef>
> <loopDataOutputRef>_2_listOutOutput</loopDataOutputRef>
> <inputDataItem id="item" itemSubjectRef="_2_multiInstanceItemType"/>
> <outputDataItem id="itemOut" itemSubjectRef="_2_multiInstanceItemOutType"/>
> </multiInstanceLoopCharacteristics>
> </serviceTask>
>
> <scriptTask id="_3" name="Log result" >
> <script>System.out.println("Service result " + listOut);</script>
> </scriptTask>
> <endEvent id="_4" name="EndProcess" >
> <terminateEventDefinition/>
> </endEvent>
> <userTask id="_5" name="Get zip codes" >
> <ioSpecification>
> <dataInput id="_2_CommentInput" name="Comment" />
> <dataInput id="_2_SkippableInput" name="Skippable" />
> <dataInput id="_2_TaskNameInput" name="TaskName" />
> <dataInput id="_2_GroupIdInput" name="GroupId" />
> <dataInput id="_2_PriorityInput" name="Priority" />
> <dataOutput id="_2_ResultOutput" name="Result" />
> <inputSet>
> <dataInputRefs>_2_CommentInput</dataInputRefs>
> <dataInputRefs>_2_SkippableInput</dataInputRefs>
> <dataInputRefs>_2_TaskNameInput</dataInputRefs>
> <dataInputRefs>_2_GroupIdInput</dataInputRefs>
> <dataInputRefs>_2_PriorityInput</dataInputRefs>
> </inputSet>
> <outputSet>
> <dataOutputRefs>_2_ResultOutput</dataOutputRefs>
> </outputSet>
> </ioSpecification>
> <dataInputAssociation>
> <targetRef>_2_CommentInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression"></from>
> <to xsi:type="tFormalExpression">_2_CommentInput</to>
> </assignment>
> </dataInputAssociation>
> <dataInputAssociation>
> <targetRef>_2_SkippableInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression">false</from>
> <to xsi:type="tFormalExpression">_2_SkippableInput</to>
> </assignment>
> </dataInputAssociation>
> <dataInputAssociation>
> <targetRef>_2_TaskNameInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression">firstTask</from>
> <to xsi:type="tFormalExpression">_2_TaskNameInput</to>
> </assignment>
> </dataInputAssociation>
> <dataInputAssociation>
> <targetRef>_2_GroupIdInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression"></from>
> <to xsi:type="tFormalExpression">_2_GroupIdInput</to>
> </assignment>
> </dataInputAssociation>
> <dataInputAssociation>
> <targetRef>_2_PriorityInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression"></from>
> <to xsi:type="tFormalExpression">_2_PriorityInput</to>
> </assignment>
> </dataInputAssociation>
> <dataOutputAssociation>
> <sourceRef>_2_ResultOutput</sourceRef>
> <targetRef>map</targetRef>
> </dataOutputAssociation>
> <potentialOwner>
> <resourceAssignmentExpression>
> <formalExpression>john</formalExpression>
> </resourceAssignmentExpression>
> </potentialOwner>
> </userTask>
>
> <userTask id="_6" name="Show forecast" >
> <ioSpecification>
> <dataInput id="_4_outputInput" name="output" />
> <dataInput id="_4_CommentInput" name="Comment" />
> <dataInput id="_4_SkippableInput" name="Skippable" />
> <dataInput id="_4_TaskNameInput" name="TaskName" />
> <dataInput id="_4_GroupIdInput" name="GroupId" />
> <dataInput id="_4_PriorityInput" name="Priority" />
> <inputSet>
> <dataInputRefs>_4_outputInput</dataInputRefs>
> <dataInputRefs>_4_CommentInput</dataInputRefs>
> <dataInputRefs>_4_SkippableInput</dataInputRefs>
> <dataInputRefs>_4_TaskNameInput</dataInputRefs>
> <dataInputRefs>_4_GroupIdInput</dataInputRefs>
> <dataInputRefs>_4_PriorityInput</dataInputRefs>
> </inputSet>
> <outputSet>
> </outputSet>
> </ioSpecification>
> <dataInputAssociation>
> <sourceRef>listOut</sourceRef>
> <targetRef>_4_outputInput</targetRef>
> </dataInputAssociation>
> <dataInputAssociation>
> <targetRef>_4_CommentInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression"></from>
> <to xsi:type="tFormalExpression">_4_CommentInput</to>
> </assignment>
> </dataInputAssociation>
> <dataInputAssociation>
> <targetRef>_4_SkippableInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression">false</from>
> <to xsi:type="tFormalExpression">_4_SkippableInput</to>
> </assignment>
> </dataInputAssociation>
> <dataInputAssociation>
> <targetRef>_4_TaskNameInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression">secondTask</from>
> <to xsi:type="tFormalExpression">_4_TaskNameInput</to>
> </assignment>
> </dataInputAssociation>
> <dataInputAssociation>
> <targetRef>_4_GroupIdInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression"></from>
> <to xsi:type="tFormalExpression">_4_GroupIdInput</to>
> </assignment>
> </dataInputAssociation>
> <dataInputAssociation>
> <targetRef>_4_PriorityInput</targetRef>
> <assignment>
> <from xsi:type="tFormalExpression"></from>
> <to xsi:type="tFormalExpression">_4_PriorityInput</to>
> </assignment>
> </dataInputAssociation>
> <potentialOwner>
> <resourceAssignmentExpression>
> <formalExpression>john</formalExpression>
> </resourceAssignmentExpression>
> </potentialOwner>
> </userTask>
>
>
> <!-- connections -->
> <sequenceFlow id="_21-_2" sourceRef="_21" targetRef="_2" />
> <sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" />
> <sequenceFlow id="_3-_6" sourceRef="_3" targetRef="_6" />
> <sequenceFlow id="_1-_5" sourceRef="_1" targetRef="_5" />
> <sequenceFlow id="_5-_21" sourceRef="_5" targetRef="_21" />
> <sequenceFlow id="_6-_4" sourceRef="_6" targetRef="_4" />
>
>
> </process>
>
>
> <bpmndi:BPMNDiagram>
> <bpmndi:BPMNPlane bpmnElement="WeatherWSServiceProcess" >
> <bpmndi:BPMNShape bpmnElement="_1" >
> <dc:Bounds x="16" y="67" width="48" height="48" />
> </bpmndi:BPMNShape>
> <bpmndi:BPMNShape bpmnElement="_2" >
> <dc:Bounds x="228" y="16" width="200" height="150" />
> </bpmndi:BPMNShape>
> <bpmndi:BPMNShape bpmnElement="_21" >
> <dc:Bounds x="128" y="26" width="200" height="150" />
> </bpmndi:BPMNShape>
> <bpmndi:BPMNShape bpmnElement="_3" >
> <dc:Bounds x="460" y="67" width="92" height="48" />
> </bpmndi:BPMNShape>
> <bpmndi:BPMNShape bpmnElement="_4" >
> <dc:Bounds x="584" y="67" width="48" height="48" />
> </bpmndi:BPMNShape>
> <bpmndi:BPMNShape bpmnElement="_5" >
> <dc:Bounds x="96" y="67" width="100" height="48" />
> </bpmndi:BPMNShape>
> <bpmndi:BPMNShape bpmnElement="_6" >
> <dc:Bounds x="96" y="67" width="140" height="148" />
> </bpmndi:BPMNShape>
> <bpmndi:BPMNEdge bpmnElement="_21-_2" >
> <di:waypoint x="140" y="50" />
> <di:waypoint x="144" y="117" />
> </bpmndi:BPMNEdge>
> <bpmndi:BPMNEdge bpmnElement="_2-_3" >
> <di:waypoint x="42" y="49" />
> <di:waypoint x="140" y="50" />
> </bpmndi:BPMNEdge>
> <bpmndi:BPMNEdge bpmnElement="_3-_6" >
> <di:waypoint x="146" y="91" />
> <di:waypoint x="328" y="91" />
> </bpmndi:BPMNEdge>
> <bpmndi:BPMNEdge bpmnElement="_1-_5" >
> <di:waypoint x="328" y="91" />
> <di:waypoint x="506" y="91" />
> </bpmndi:BPMNEdge>
> <bpmndi:BPMNEdge bpmnElement="_5-_21" >
> <di:waypoint x="506" y="91" />
> <di:waypoint x="608" y="91" />
> </bpmndi:BPMNEdge>
> <bpmndi:BPMNEdge bpmnElement="_6-_4" >
> <di:waypoint x="40" y="91" />
> <di:waypoint x="146" y="91" />
> </bpmndi:BPMNEdge>
> </bpmndi:BPMNPlane>
> </bpmndi:BPMNDiagram>
>
>
> </definitions>
*Java code:-*
*
*
> import java.util.*;
>
>
> import javax.xml.ws.Endpoint;
>
>
> import org.drools.KnowledgeBase;
> import org.drools.builder.KnowledgeBuilder;
> import org.drools.builder.KnowledgeBuilderFactory;
> import org.drools.builder.ResourceType;
> import org.drools.definition.process.Connection;
> import org.drools.definition.process.Node;
> import org.drools.io.ResourceFactory;
> import org.drools.runtime.StatefulKnowledgeSession;
> import org.drools.runtime.process.NodeInstance;
> import org.drools.runtime.process.WorkItem;
> import org.drools.runtime.process.WorkItemHandler;
> import org.drools.runtime.process.WorkItemManager;
> import org.jbpm.bpmn2.handler.ServiceTaskHandler;
> import org.jbpm.process.instance.ProcessInstance;
> import org.jbpm.process.workitem.wsht.CommandBasedWSHumanTaskHandler;
> import org.jbpm.task.service.TaskClientHandler;
> import org.jbpm.workflow.core.node.HumanTaskNode;
> import org.jbpm.workflow.instance.WorkflowProcessInstance;
> import org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl;
>
>
> public class ProcessMain {
>
> public static void main(String[] args) throws Exception {
>
>
>
>
> KnowledgeBase kbase = readKnowledgeBase();
> StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
> TestWorkItemHandler htHandler = new TestWorkItemHandler();
> ksession.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler());
> ksession.getWorkItemManager().registerWorkItemHandler("Human Task", htHandler);
> Map<String, Object> params = new HashMap<String, Object>();
> params.put("mode", "async");
> WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess("WeatherWSServiceProcess", params);
> params = new HashMap<String, Object>();
> params.put("r1", "14025");
> HashMap<String, Object> results = new HashMap<String, Object>();
> results.put("Result", params);
> ksession.getWorkItemManager().completeWorkItem(htHandler.getWorkItem().getId(), results);
> Thread.sleep(5000);
> ksession.getWorkItemManager().completeWorkItem(htHandler.getWorkItem().getId(), null);
>
> }
> static class TestWorkItemHandler implements WorkItemHandler {
>
>
> private static TestWorkItemHandler INSTANCE = new TestWorkItemHandler();
>
>
> private WorkItem workItem;
> private WorkItem aborted;
>
>
> public static TestWorkItemHandler getInstance() {
> return INSTANCE;
> }
>
>
> public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
> this.workItem = workItem;
> }
>
>
> public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
> this.aborted = workItem;
> }
>
>
> public WorkItem getWorkItem() {
> WorkItem result = workItem;
> workItem = null;
> return result;
> }
>
>
> public WorkItem getAbortedWorkItem() {
> WorkItem result = aborted;
> aborted = null;
> return result;
> }
>
>
> }
> }
>
*Error:-*
*
*> Get zip code result is {r1=14025}
>
> java.lang.ClassNotFoundException:
>
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/795330#795330]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20130131/4f5b12db/attachment-0001.html
More information about the jboss-user
mailing list