You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2011/08/31 17:54:29 UTC

svn commit: r1163674 - in /incubator/airavata/trunk/samples/workflow-tracking: ./ simple-service-tracking/ simple-service-tracking/bin/ simple-service-tracking/conf/ simple-service-tracking/src/ simple-service-tracking/src/workflowtracking/ simple-serv...

Author: lahiru
Date: Wed Aug 31 15:54:28 2011
New Revision: 1163674

URL: http://svn.apache.org/viewvc?rev=1163674&view=rev
Log:
adding sample for new workflow-tracking schema.

Added:
    incubator/airavata/trunk/samples/workflow-tracking/
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/README.txt
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/bin/
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.properties
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.xml
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/conf/
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/conf/configuration.properties
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/NotificationSender.java
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/SimpleWorkflowTracker.java
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/ConfigKeys.java
    incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/Listener.java

Added: incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/README.txt
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/README.txt?rev=1163674&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/README.txt (added)
+++ incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/README.txt Wed Aug 31 15:54:28 2011
@@ -0,0 +1,26 @@
+Workflow-tracking Quick Start Guide- Sample 1 
+=================================
+
+This sample demostrate how to track a simple service invocation.
+
+
+Pre-Requisites
+==============
+
+Apache Ant 1.7.1 or later
+Apache Axis2 1.5 or later
+
+
+
+Steps:
+======
+
+1) configure and run wsmg-msgbox. please refer wsmg-msgbox user guide to know how to run the wsmg-msgbox.
+
+2) configure 'build.properties' located in the sample directory.
+
+3) set configurations in './conf/configuration.properties' file.
+
+4) run following command:
+      ant run
+      

Added: incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.properties
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.properties?rev=1163674&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.properties (added)
+++ incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.properties Wed Aug 31 15:54:28 2011
@@ -0,0 +1,25 @@
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+#
+#
+
+
+
+#axis2.home=../../../../standalone-server/
+axis2.home=../../../modules/ws-messenger/distribution/target/airavta-ws-messenger-0.0.1-SNAPSHOT-1/standalone-server

Added: incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.xml
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.xml?rev=1163674&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.xml (added)
+++ incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/build.xml Wed Aug 31 15:54:28 2011
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+
+<project name="workflowtracking" default="run" basedir=".">
+
+	<property file="build.properties" />
+	<property name="lib.path" value="../../lib" />
+	<property name="dest.dir" value="bin" />
+	<property name="src.dir" value="src" />
+	<property name="conf.dir" location="conf" />
+
+	
+
+	<path id="workflowtracking.class.path">
+		<fileset dir="${lib.path}">
+			<include name="*.jar" />
+		</fileset>
+
+		<fileset dir="${axis2.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+
+		<path location="${conf.dir}" />
+
+		<pathelement location="${dest.dir}" />
+
+	</path>
+
+
+	<target name="clean">
+		<delete dir="${dest.dir}" />
+	</target>
+
+	<target name="build" depends="makeDest">
+		<antcall target="compile" />
+	</target>
+
+	<target name="makeDest">
+		<mkdir dir="${dest.dir}" />
+	</target>
+
+
+	<target name="compile" depends="makeDest">
+		<javac debug="true" srcdir="${src.dir}" destdir="${dest.dir}">
+			<classpath refid="workflowtracking.class.path" />
+		</javac>
+	</target>
+
+
+	<target name="run" depends="build">
+
+		<java classname="workflowtracking.samples.invoke.SimpleWorkflowTracker" fork="true">
+			<classpath refid="workflowtracking.class.path" />
+		</java>
+
+	</target>
+
+
+</project>

Added: incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/conf/configuration.properties
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/conf/configuration.properties?rev=1163674&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/conf/configuration.properties (added)
+++ incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/conf/configuration.properties Wed Aug 31 15:54:28 2011
@@ -0,0 +1,24 @@
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+#
+#
+axis2.repository=../../../standalone-server/
+msgbox.service.url=http://localhost:8080/axis2/services/MsgBoxService
+msgbroker.service.url=http://localhost:8080/axis2/services/EventingService
+msgbox.id=67889-28837892-33457700-33-4889uu9688--4770333068

Added: incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/NotificationSender.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/NotificationSender.java?rev=1163674&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/NotificationSender.java (added)
+++ incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/NotificationSender.java Wed Aug 31 15:54:28 2011
@@ -0,0 +1,210 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 workflowtracking.samples.invoke;
+
+import org.apache.airavata.workflow.tracking.NotifierFactory;
+import org.apache.airavata.workflow.tracking.WorkflowNotifier;
+import org.apache.airavata.workflow.tracking.common.InvocationContext;
+import org.apache.airavata.workflow.tracking.common.InvocationEntity;
+import org.apache.airavata.workflow.tracking.common.WorkflowTrackingContext;
+import org.apache.axis2.addressing.EndpointReference;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.net.URI;
+import java.util.Properties;
+
+public class NotificationSender {
+
+    protected WorkflowNotifier notifier;
+
+    protected String brokerURL;
+
+    protected String topic;
+
+    protected URI workflowID;
+
+    protected InvocationEntity initiator;
+
+    protected InvocationEntity receiver;
+
+    protected InvocationContext invocationContext;
+
+    protected EndpointReference eventSink;
+
+    protected WorkflowTrackingContext context;
+
+    /**
+     * Constructs a NotificationSender.
+     *
+     * @param brokerURL
+     * @param topic
+     */
+    public NotificationSender(URI brokerURL, String topic) {
+        this(brokerURL.toString(), topic);
+    }
+
+    /**
+     * Creates a NotificationSender.
+     *
+     * @param brokerURL The location of notification brokerUrl.
+     * @param topic     The notification topic.
+     */
+    public NotificationSender(String brokerURL, String topic) {
+        this.topic = topic;
+        this.brokerURL = brokerURL;
+        this.workflowID = URI.create(this.convertToJavaIdentifier(this.topic));
+        this.eventSink = new EndpointReference(this.brokerURL);
+        Properties props = new Properties();
+
+        this.notifier = NotifierFactory.createNotifier();
+        URI initiatorWorkflowID = null;
+        URI initiatorServiceID = URI.create(this.convertToJavaIdentifier(topic));
+        String initiatorWorkflowNodeID = null;
+        Integer initiatorWorkflowTimeStep = null;
+        this.context = this.notifier.createTrackingContext(props, eventSink, initiatorWorkflowID,
+                initiatorServiceID, initiatorWorkflowNodeID, initiatorWorkflowTimeStep);
+        this.context.setTopic(topic);
+        this.initiator = this.notifier.createEntity(initiatorWorkflowID, initiatorServiceID, initiatorWorkflowNodeID,
+                initiatorWorkflowTimeStep);
+
+        URI receiverWorkflowID = this.workflowID;
+        URI receiverServiceID = this.workflowID;
+        String receiverWorkflowNodeID = null;
+        Integer receiverWorkflowTimeStep = null;
+        this.receiver = this.notifier.createEntity(receiverWorkflowID, receiverServiceID, receiverWorkflowNodeID,
+                receiverWorkflowTimeStep);
+    }
+
+    /**
+     * @return The event sink EPR.
+     */
+    public EndpointReference getEventSink() {
+        return this.eventSink;
+    }
+
+    /**
+     * @param args
+     * @param keywords
+     */
+
+    public void workflowStarted(String message) {
+        this.invocationContext = this.notifier.workflowInvoked(this.context, this.initiator, message);
+    }
+
+    /**
+     * @param args
+     * @param keywords
+     */
+    public void workflowFinished(String message) {
+        this.notifier.sendingResult(context, this.invocationContext, message);
+        this.notifier.workflowTerminated(context, this.workflowID, "Workflow finished successfully.");
+    }
+
+    public void sendingPartialResults(Object[] args, String[] keywords) {
+        String message = "";
+        for (int i = 0; i < args.length; i++) {
+            if (i != 0) {
+                message += ", ";
+            }
+            message += keywords[i] + "=" + args[i];
+        }
+        this.notifier.sendingResult(context, this.invocationContext, message);
+    }
+
+
+    public void workflowTerminated() {
+        this.notifier.workflowTerminated(context, this.workflowID, "Workflow finished successfully.");
+    }
+
+    /**
+     * Sends a START_INCOMPLETED notification message.
+     *
+     * @param message The message to send
+     */
+    public void workflowFailed(String message) {
+        workflowFailed(message, null);
+    }
+
+    /**
+     * Sends a START_INCOMPLETED notification message.
+     *
+     * @param e
+     */
+    public void workflowFailed(Throwable e) {
+        workflowFailed(null, e);
+    }
+
+    /**
+     * Sends a START_INCOMPLETED notification message.
+     *
+     * @param message The message to send
+     * @param e
+     */
+    public void workflowFailed(String message, Throwable e) {
+        this.notifier.sendingFault(context, this.invocationContext, message);
+    }
+
+    public void info(String message) {
+        this.notifier.info(context, message);
+    }
+
+    /**
+     * @param throwable
+     * @return The stackTrace in String
+     */
+    public static String getStackTraceInString(Throwable throwable) {
+        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+        PrintStream printStream = new PrintStream(byteArrayOutputStream);
+        throwable.printStackTrace(printStream);
+        printStream.flush();
+        return byteArrayOutputStream.toString();
+    }
+
+    public static String convertToJavaIdentifier(String name) {
+
+        final char REPLACE_CHAR = '_';
+
+        if (name == null || name.length() == 0) {
+            return "" + REPLACE_CHAR;
+        }
+
+        StringBuilder buf = new StringBuilder();
+
+        char c = name.charAt(0);
+        if (!Character.isJavaIdentifierStart(c)) {
+            // Add _ at the beggining instead of replacing it to _. This is
+            // more readable if the name is like 3D_Model.
+            buf.append(REPLACE_CHAR);
+        }
+
+        for (int i = 0; i < name.length(); i++) {
+            c = name.charAt(i);
+            if (Character.isJavaIdentifierPart(c)) {
+                buf.append(c);
+            } else {
+                buf.append(REPLACE_CHAR);
+            }
+        }
+
+        return buf.toString();
+    }
+}

Added: incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/SimpleWorkflowTracker.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/SimpleWorkflowTracker.java?rev=1163674&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/SimpleWorkflowTracker.java (added)
+++ incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/invoke/SimpleWorkflowTracker.java Wed Aug 31 15:54:28 2011
@@ -0,0 +1,94 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 workflowtracking.samples.invoke;
+
+
+import org.apache.airavata.wsmg.client.WseMsgBrokerClient;
+
+import org.apache.airavata.wsmg.client.msgbox.MessagePuller;
+import org.apache.axis2.addressing.EndpointReference;
+import workflowtracking.samples.util.ConfigKeys;
+import workflowtracking.samples.util.Listener;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import java.io.*;
+
+public class SimpleWorkflowTracker {
+
+    private static Properties getDefaults() {
+        Properties defaults = new Properties();
+        defaults.setProperty(ConfigKeys.MSGBOX_SERVICE_URL,
+                "http://localhost:8080/axis2/services/MsgBoxService");
+        defaults.setProperty(ConfigKeys.MSGBROKER_SERVICE_URL,
+                "http://localhost:8080/axis2/services/EventingService");
+        defaults.setProperty(ConfigKeys.TOPIC, "abc");
+        return defaults;
+    }
+
+    public static void main(String[] args) throws IOException {
+
+        Properties configurations = new Properties(getDefaults());
+        try {
+            InputStream ioStream = new FileInputStream("conf" + File.separator + ConfigKeys.CONFIG_FILE_NAME);
+            configurations.load(ioStream);
+        } catch (IOException ioe) {
+
+            System.out.println("unable to load configuration file, "
+                    + "default settings will be used");
+        }
+
+        WseMsgBrokerClient brokerClient = new WseMsgBrokerClient();
+        String brokerLocation = configurations.getProperty(ConfigKeys.MSGBROKER_SERVICE_URL);
+        brokerClient.init(brokerLocation);
+        String topic = configurations.getProperty(ConfigKeys.TOPIC);
+        NotificationSender sender = new NotificationSender(brokerLocation, topic);
+        // Creating a messagebox
+        EndpointReference msgBoxEpr = brokerClient.createPullMsgBox(configurations.getProperty(ConfigKeys.MSGBOX_SERVICE_URL));
+
+        // subscribing to the above created messsage box with configured topic
+        String subscriptionID = brokerClient.subscribe(msgBoxEpr.getAddress(), topic, null);
+
+
+        //Start the messagePuller to pull messages from newly created messagebox
+        MessagePuller puller = brokerClient.startPullingEventsFromMsgBox(msgBoxEpr, new Listener(), 1000L, 2000L);
+
+        sender.workflowStarted("Workflow Started");
+        //Here we simply assume the workflow invocation is the invoke of the subscribe operation of EventingService and result
+        // Is considered as the subscriptionID got from subscribe operation
+        String workflowResult = subscriptionID;
+        sender.workflowFinished(workflowResult);
+
+        try {
+            Thread.sleep(10000L);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        brokerClient.unSubscribe(subscriptionID);
+        puller.stopPulling();
+        System.out.println("Delete message box response :  "
+                + brokerClient.deleteMsgBox(msgBoxEpr, 500L));
+
+    }
+
+}

Added: incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/ConfigKeys.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/ConfigKeys.java?rev=1163674&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/ConfigKeys.java (added)
+++ incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/ConfigKeys.java Wed Aug 31 15:54:28 2011
@@ -0,0 +1,34 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 workflowtracking.samples.util;
+
+public class ConfigKeys {
+	
+	public static final String AXIS2_REPO = "axis2.repository";
+	public static final String CONFIG_FILE_NAME = "configuration.properties";
+	public static final String MSGBOX_SERVICE_URL = "msgbox.service.url";
+    public static final String MSGBROKER_SERVICE_URL = "msgbroker.service.url";
+	public static final String MSGBOX_ID = "msgbox.id";
+    public static final String TOPIC = "abc";
+
+
+}

Added: incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/Listener.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/Listener.java?rev=1163674&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/Listener.java (added)
+++ incubator/airavata/trunk/samples/workflow-tracking/simple-service-tracking/src/workflowtracking/samples/util/Listener.java Wed Aug 31 15:54:28 2011
@@ -0,0 +1,33 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 workflowtracking.samples.util;
+
+import org.apache.airavata.wsmg.client.ConsumerNotificationHandler;
+import org.apache.airavata.wsmg.client.NotificationHandler;
+import org.apache.axiom.soap.SOAPEnvelope;
+
+public class Listener implements NotificationHandler {
+
+    public void handleNotification(String message) {
+       System.out.println("MessageRecieved: " + message);
+   }
+
+}