0 Replies Latest reply on Jan 31, 2013 12:09 AM by snowstorm tech

    Facing an error while using service task for web service

    snowstorm tech Newbie

      Hi,

       

      I am facing an error while execuation of the example from this link.

       

      https://github.com/mswiderski/jbpm-examples/blob/master/jbpm-ws-sample/

       

      here i'm provding 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"

                   typeLanguage="http://www.java.com/javaTypes"

                   expressionLanguage="http://www.mvel.org/2.0"

                   xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"

                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                   xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"

                   xmlns:g="http://www.jboss.org/drools/flow/gpd"

                   xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"

                   xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"

                   xmlns:di="http://www.omg.org/spec/DD/20100524/DI"

                   xmlns:tns="http://www.jboss.org/drools">

       

        <import importType="http://schemas.xmlsoap.org/wsdl/" location="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL" namespace="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" >

            <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">

                <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: