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 2012/02/24 22:51:17 UTC

svn commit: r1293443 - in /incubator/airavata/trunk/modules/commons: ./ registry-service/ registry-service/src/ registry-service/src/main/ registry-service/src/main/java/ registry-service/src/main/java/org/ registry-service/src/main/java/org/apache/ re...

Author: lahiru
Date: Fri Feb 24 21:51:16 2012
New Revision: 1293443

URL: http://svn.apache.org/viewvc?rev=1293443&view=rev
Log:
adding new service to system, by exposing registry api methods as a service.

Added:
    incubator/airavata/trunk/modules/commons/registry-service/
    incubator/airavata/trunk/modules/commons/registry-service/pom.xml
    incubator/airavata/trunk/modules/commons/registry-service/src/
    incubator/airavata/trunk/modules/commons/registry-service/src/main/
    incubator/airavata/trunk/modules/commons/registry-service/src/main/java/
    incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/
    incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/apache/
    incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/apache/airavata/
    incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/apache/airavata/registry/
    incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/apache/airavata/registry/service/
    incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/apache/airavata/registry/service/RegistryService.java
    incubator/airavata/trunk/modules/commons/registry-service/src/main/resources/
    incubator/airavata/trunk/modules/commons/registry-service/src/main/resources/services.xml
    incubator/airavata/trunk/modules/commons/registry-service/src/test/
    incubator/airavata/trunk/modules/commons/registry-service/src/test/java/
    incubator/airavata/trunk/modules/commons/registry-service/src/test/java/org/
    incubator/airavata/trunk/modules/commons/registry-service/src/test/java/org/apache/
    incubator/airavata/trunk/modules/commons/registry-service/src/test/java/org/apache/airavata/
    incubator/airavata/trunk/modules/commons/registry-service/src/test/java/org/apache/airavata/regsitry/
    incubator/airavata/trunk/modules/commons/registry-service/src/test/java/org/apache/airavata/regsitry/service/
    incubator/airavata/trunk/modules/commons/registry-service/src/test/resources/
Modified:
    incubator/airavata/trunk/modules/commons/pom.xml

Modified: incubator/airavata/trunk/modules/commons/pom.xml
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/pom.xml?rev=1293443&r1=1293442&r2=1293443&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/pom.xml (original)
+++ incubator/airavata/trunk/modules/commons/pom.xml Fri Feb 24 21:51:16 2012
@@ -33,6 +33,7 @@
 				<module>gfac-schema</module>
 				<module>utils</module>
 				<module>common-registry-api</module>
+				<module>registry-service</module>
 				<module>registry-api</module>
 				<module>workflow-execution-context</module>
 			</modules>

Added: incubator/airavata/trunk/modules/commons/registry-service/pom.xml
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-service/pom.xml?rev=1293443&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-service/pom.xml (added)
+++ incubator/airavata/trunk/modules/commons/registry-service/pom.xml Fri Feb 24 21:51:16 2012
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<parent>
+		<groupId>org.apache.airavata</groupId>
+		<artifactId>commons</artifactId>
+		<version>0.3-incubating-SNAPSHOT</version>
+		<relativePath>../pom.xml</relativePath>
+	</parent>
+
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.apache.airavata</groupId>
+	<artifactId>registry-service</artifactId>
+	<packaging>jar</packaging>
+	<name>Airavata Registry Web Service</name>
+	<url>http://incubator.apache.org/airavata/</url>
+
+	<dependencies>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>registry-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>common-registry-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        	<dependency>
+			<groupId>org.apache.axis2</groupId>
+			<artifactId>axis2-kernel</artifactId>
+			<version>${axis2.version}</version>
+			<scope>compile</scope>
+		</dependency>
+		<!-- Logging -->
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+		</dependency>
+
+		<!-- Testing -->
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-simple</artifactId>
+			<scope>test</scope>
+		</dependency>
+
+	</dependencies>
+	    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.3</version>
+                <executions>
+                    <execution>
+                        <id>restore-persistence</id>
+                        <phase>prepare-package</phase>
+                        <configuration>
+                            <tasks>
+                                <copy file="${project.build.outputDirectory}/services.xml" tofile="${project.build.outputDirectory}/META-INF/services.xml"/>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Added: incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/apache/airavata/registry/service/RegistryService.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/apache/airavata/registry/service/RegistryService.java?rev=1293443&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/apache/airavata/registry/service/RegistryService.java (added)
+++ incubator/airavata/trunk/modules/commons/registry-service/src/main/java/org/apache/airavata/registry/service/RegistryService.java Fri Feb 24 21:51:16 2012
@@ -0,0 +1,338 @@
+/*
+ *
+ * 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 org.apache.airavata.registry.service;
+
+import org.apache.airavata.common.registry.api.exception.RegistryException;
+import org.apache.airavata.common.registry.api.impl.JCRRegistry;
+import org.apache.airavata.common.utils.XMLUtil;
+import org.apache.airavata.commons.gfac.type.ApplicationDeploymentDescription;
+import org.apache.airavata.commons.gfac.type.HostDescription;
+import org.apache.airavata.commons.gfac.type.ServiceDescription;
+import org.apache.airavata.registry.api.AiravataRegistry;
+import org.apache.airavata.registry.api.WorkflowExecution;
+import org.apache.airavata.registry.api.WorkflowExecutionStatus;
+import org.apache.airavata.registry.api.impl.AiravataJCRRegistry;
+import org.apache.airavata.registry.api.workflow.WorkflowIOData;
+import org.apache.airavata.registry.api.workflow.WorkflowServiceIOData;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.ServiceLifeCycle;
+import org.apache.xmlbeans.XmlException;
+import org.xmlpull.infoset.XmlElement;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.xml.namespace.QName;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.*;
+
+public class RegistryService implements ServiceLifeCycle{
+    public static final String JCR_PASSWORD = "jcr.password";
+    public static final String JCR_USERNAME = "jcr.username";
+    public static final String JRC_URL = "jcr.url";
+    public static final String JCR_CLASS = "jcr.class";
+    public static final String HOST_SPLITTER = "*%host^!";
+    public static final String APP_SPLITTER = "*%app^!";
+    AiravataRegistry registry;
+    @Override
+    public void startUp(ConfigurationContext configurationContext, AxisService axisService) {
+        //To change body of implemented methods use File | Settings | File Templates.
+        URL url = this.getClass().getClassLoader().getResource("jcr.properties");
+        Properties properties = new Properties();
+        try {
+            properties.load(url.openStream());
+            configurationContext.setProperty(JCR_PASSWORD, properties.get(JCR_PASSWORD));
+            configurationContext.setProperty(JCR_USERNAME, properties.get(JCR_USERNAME));
+            String jcrUserName = (String)properties.get(JCR_PASSWORD);
+            String jcrPassword = (String) properties.get(JCR_USERNAME);
+            String jcrURL = (String) properties.get(JRC_URL);
+            String className = (String)properties.get(JCR_CLASS);
+            registry = new AiravataJCRRegistry(new URI(jcrURL),className,jcrUserName,jcrPassword,new HashMap<String,String>());
+        } catch (IOException e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        } catch (RepositoryException e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        } catch (URISyntaxException e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+    }
+
+    @Override
+    public void shutDown(ConfigurationContext configurationContext, AxisService axisService) {
+        //To change body of implemented methods use File | Settings | File Templates.
+        ((JCRRegistry)registry).closeConnection();
+    }
+
+    public boolean saveWorkflowExecutionServiceInput(WorkflowServiceIOData data)throws RegistryException{
+        return registry.saveWorkflowExecutionServiceInput(data);
+    }
+
+    public boolean saveWorkflowExecutionServiceOutput(WorkflowServiceIOData workflowOutputData) throws RegistryException{
+        return registry.saveWorkflowExecutionServiceOutput(workflowOutputData);
+    }
+
+    public List<WorkflowServiceIOData> searchWorkflowExecutionServiceInput(String experimentIdRegEx, String workflowNameRegEx,
+                                                                           String nodeNameRegEx) throws RegistryException{
+        return registry.searchWorkflowExecutionServiceInput(experimentIdRegEx,workflowNameRegEx,nodeNameRegEx);
+    }
+
+    public List<WorkflowServiceIOData> searchWorkflowExecutionServiceOutput(String experimentIdRegEx, String workflowNameRegEx, String nodeNameRegEx)throws RegistryException{
+        return registry.searchWorkflowExecutionServiceOutput(experimentIdRegEx,workflowNameRegEx,nodeNameRegEx);
+    }
+
+    public boolean saveWorkflowExecutionStatus(String experimentId,WorkflowExecutionStatus status)throws RegistryException{
+        return registry.saveWorkflowExecutionStatus(experimentId,status);
+    }
+
+    public WorkflowExecutionStatus getWorkflowExecutionStatus(String experimentId)throws RegistryException{
+        return registry.getWorkflowExecutionStatus(experimentId);
+    }
+
+    public boolean saveWorkflowExecutionOutput(String experimentId,String outputNodeName,String output) throws RegistryException{
+        return registry.saveWorkflowExecutionOutput(experimentId,outputNodeName,output);
+    }
+
+
+    public boolean saveWorkflowExecutionOutput(String experimentId, WorkflowIOData data) throws RegistryException{
+        return registry.saveWorkflowExecutionOutput(experimentId,data);
+    }
+
+
+    public WorkflowIOData getWorkflowExecutionOutput(String experimentId,String outputNodeName) throws RegistryException{
+        return registry.getWorkflowExecutionOutput(experimentId,outputNodeName);
+    }
+
+
+    public List<WorkflowIOData> getWorkflowExecutionOutput(String experimentId) throws RegistryException{
+        return registry.getWorkflowExecutionOutput(experimentId);
+    }
+
+
+    public String[] getWorkflowExecutionOutputNames(String exeperimentId) throws RegistryException{
+        return registry.getWorkflowExecutionOutputNames(exeperimentId);
+    }
+
+
+    public boolean saveWorkflowExecutionUser(String experimentId, String user) throws RegistryException{
+        return registry.saveWorkflowExecutionUser(experimentId,user);
+    }
+
+
+    public String getWorkflowExecutionUser(String experimentId) throws RegistryException{
+        return registry.getWorkflowExecutionUser(experimentId);
+    }
+
+
+    public WorkflowExecution getWorkflowExecution(String experimentId) throws RegistryException{
+        return registry.getWorkflowExecution(experimentId);
+    }
+
+
+    public List<String> getWorkflowExecutionIdByUser(String user) throws RegistryException{
+        return registry.getWorkflowExecutionIdByUser(user);
+    }
+
+
+    public List<WorkflowExecution> getWorkflowExecutionByUser(String user) throws RegistryException{
+        return registry.getWorkflowExecutionByUser(user);
+    }
+
+
+    public List<WorkflowExecution> getWorkflowExecutionByUserLimited(String user, int pageSize, int pageNo) throws RegistryException{
+        return registry.getWorkflowExecutionByUser(user,pageSize,pageNo);
+    }
+
+
+    public String getWorkflowExecutionMetadata(String experimentId) throws RegistryException{
+        return registry.getWorkflowExecutionMetadata(experimentId);
+    }
+
+    /* Document related methods */
+
+    public boolean saveWorkflowExecutionMetadata(String experimentId, String metadata) throws RegistryException{
+        return registry.saveWorkflowExecutionMetadata(experimentId,metadata);
+    }
+
+    public String getServiceDescription(String serviceId) throws RegistryException{
+        ServiceDescription serviceDescription = registry.getServiceDescription(serviceId);
+        return serviceDescription.toXML();
+    }
+
+    public String getDeploymentDescription(String serviceId, String hostId)
+            throws RegistryException{
+        ApplicationDeploymentDescription deploymentDescription = registry.getDeploymentDescription(serviceId, hostId);
+        return  deploymentDescription.toXML();
+    }
+
+    public String getHostDescription(String hostId) throws RegistryException{
+        HostDescription hostDescription = registry.getHostDescription(hostId);
+        return hostDescription.toXML();
+    }
+
+    public String saveHostDescription(HostDescription host)throws RegistryException{
+        return registry.saveHostDescription(host);
+    }
+
+    public String saveServiceDescription(ServiceDescription service)throws RegistryException{
+        return registry.saveServiceDescription(service);
+    }
+
+    public String saveDeploymentDescription(String serviceId, String hostId, String app)throws RegistryException{
+        try {
+            return registry.saveDeploymentDescription(serviceId, hostId, ApplicationDeploymentDescription.fromXML(app));
+        } catch (XmlException e) {
+            throw new RegistryException("Error saving ApplicationDescription Creation/Saving" , e);  //To change body of catch statement use File | Settings | File Templates.
+        }
+    }
+    public boolean deployServiceOnHost(String serviceName, String hostName)throws RegistryException{
+        return registry.deployServiceOnHost(serviceName,hostName);
+    }
+
+    public List<String> searchHostDescription(String name) throws RegistryException{
+        List<HostDescription> hostDescriptions = registry.searchHostDescription(name);
+        List<String> hostStringList = new ArrayList<String>();
+        for(HostDescription hostDescription:hostDescriptions){
+           hostStringList.add(hostDescription.toXML());
+        }
+        return hostStringList;
+    }
+
+
+    public List<String> searchDeploymentDescriptionWithSerivceHost(String serviceName, String hostName)
+            throws RegistryException{
+        List<ApplicationDeploymentDescription> applicationDeploymentDescriptions = registry.searchDeploymentDescription(serviceName, hostName);
+        List<String> hostStringList = new ArrayList<String>();
+        for(ApplicationDeploymentDescription hostDescription:applicationDeploymentDescriptions){
+           hostStringList.add(hostDescription.toXML());
+        }
+        return hostStringList;
+    }
+
+    public List<String> searchDeploymentDescriptionWithService(String serviceName)
+            throws RegistryException{
+        List<String>  list = new ArrayList<String>();
+        Map<HostDescription, List<ApplicationDeploymentDescription>> hostDescriptionListMap = registry.searchDeploymentDescription(serviceName);
+        for(HostDescription host:hostDescriptionListMap.keySet()){
+            StringBuffer eachLine =  new StringBuffer(host.toXML() + HOST_SPLITTER);
+            List<ApplicationDeploymentDescription> applicationDeploymentDescriptions = hostDescriptionListMap.get(host);
+            for(ApplicationDeploymentDescription description:applicationDeploymentDescriptions){
+                eachLine.append(description.toXML());
+                eachLine.append(APP_SPLITTER);
+            }
+           list.add(eachLine.toString());
+        }
+        return list;
+    }
+
+    public List<String> searchDeploymentDescriptionWithServiceHostApp(String serviceName, String hostName,
+            String applicationName) throws RegistryException{
+        List<ApplicationDeploymentDescription> applicationDeploymentDescriptions = registry.searchDeploymentDescription(serviceName, hostName, applicationName);
+         List<String> hostStringList = new ArrayList<String>();
+        for(ApplicationDeploymentDescription hostDescription:applicationDeploymentDescriptions){
+           hostStringList.add(hostDescription.toXML());
+        }
+        return hostStringList;
+    }
+
+    public List<String> searchDeploymentDescription() throws RegistryException{
+       List<String>  list = new ArrayList<String>();
+        Map<ApplicationDeploymentDescription,String> hostDescriptionListMap = registry.searchDeploymentDescription();
+        for(ApplicationDeploymentDescription host:hostDescriptionListMap.keySet()){
+            StringBuffer eachLine =  new StringBuffer(host.toXML() + APP_SPLITTER);
+            eachLine.append(hostDescriptionListMap.get(host));
+            list.add(eachLine.toString());
+        }
+        return list;
+    }
+
+    public boolean saveGFacDescriptor(String gfacURL)throws RegistryException{
+        return registry.saveGFacDescriptor(gfacURL);
+    }
+
+    public boolean deleteGFacDescriptor(String gfacURL) throws RegistryException{
+        return registry.deleteGFacDescriptor(gfacURL);
+    }
+
+     public List<String> getGFacDescriptorList() throws RegistryException{
+         return registry.getGFacDescriptorList();
+     }
+
+    public boolean saveWorkflow(QName ResourceID, String workflowName, String resourceDesc, String workflowAsaString,
+            String owner, boolean isMakePublic) throws RegistryException{
+        return  registry.saveWorkflow(ResourceID, workflowName,resourceDesc, workflowAsaString,
+            owner, isMakePublic);
+    }
+
+    public boolean deleteWorkflow(QName resourceID, String userName) throws RegistryException{
+        return registry.deleteWorkflow(resourceID,userName);
+    }
+
+    public void deleteServiceDescription(String serviceId) throws RegistryException{
+        registry.deleteServiceDescription(serviceId);
+    }
+
+    public void deleteDeploymentDescription(String serviceName, String hostName, String applicationName)
+            throws RegistryException{
+        registry.deleteDeploymentDescription(serviceName,hostName,applicationName);
+    }
+
+    public void deleteHostDescription(String hostId) throws RegistryException{
+        registry.deleteHostDescription(hostId);
+    }
+
+    public List<String> getWorkflows(String userName) throws RegistryException{
+        Map<QName, Node> workflows = registry.getWorkflows(userName);
+        List<String>  list = new ArrayList<String>();
+        XmlElement xwf = null;
+        for(QName name:workflows.keySet()){
+            StringBuffer eachLine = new StringBuffer("");
+            eachLine.append(name.getPrefix());
+            eachLine.append(",");
+            eachLine.append(name.getLocalPart());
+            eachLine.append(",");
+            eachLine.append(name.getNamespaceURI());
+            Node workflow = workflows.get(name);
+            try {
+                xwf = XMLUtil.stringToXmlElement(workflow.getProperty("workflow").getString());
+            } catch (RepositoryException e) {
+                throw new RegistryException("Error while parsing workflow Content",e);  //To change body of catch statement use File | Settings | File Templates.
+            }
+            eachLine.append(XMLUtil.xmlElementToString(xwf));
+            list.add(eachLine.toString());
+        }
+        return list;
+    }
+
+    public String getWorkflow(QName templateID, String userName) throws RegistryException{
+        Node workflow = registry.getWorkflow(templateID, userName);
+        XmlElement xwf = null;
+        try {
+            xwf = XMLUtil.stringToXmlElement(workflow.getProperty("workflow").getString());
+        } catch (RepositoryException e) {
+            throw new RegistryException("Error while parsing workflow Content",e);  //To change body of catch statement use File | Settings | File Templates.
+        }
+        return XMLUtil.xmlElementToString(xwf);
+    }
+
+}
\ No newline at end of file

Added: incubator/airavata/trunk/modules/commons/registry-service/src/main/resources/services.xml
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-service/src/main/resources/services.xml?rev=1293443&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-service/src/main/resources/services.xml (added)
+++ incubator/airavata/trunk/modules/commons/registry-service/src/main/resources/services.xml Fri Feb 24 21:51:16 2012
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--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. -->
+
+
+<!-- This file was auto-generated from WSDL -->
+<!-- by the Apache Axis2 version: 1.4  Built on : Apr 26, 2008 (06:24:30 EDT) -->
+<serviceGroup>
+    <service name="RegistryService" class="org.apache.airavata.registry.service.RegistryService">
+    <operation name="saveWorkflowExecutionServiceInput"></operation>
+        <operation name="saveWorkflowExecutionServiceOutput"></operation>
+        <operation name="searchWorkflowExecutionServiceInput"></operation>
+        <operation name="searchWorkflowExecutionServiceOutput"></operation>
+        <operation name="saveWorkflowExecutionStatus"></operation>
+        <operation name="getWorkflowExecutionStatus"></operation>
+        <operation name="saveWorkflowExecutionOutput"></operation>
+        <operation name="getWorkflowExecutionOutput"></operation>
+        <operation name="getWorkflowExecutionOutputNames"></operation>
+        <operation name="saveWorkflowExecutionUser"></operation>
+        <operation name="getWorkflowExecutionUser"></operation>
+        <operation name="getWorkflowExecution"></operation>
+        <operation name="getWorkflowExecutionIdByUser"></operation>
+        <operation name="getWorkflowExecutionByUser"></operation>
+        <operation name="getWorkflowExecutionByUserLimited"></operation>
+        <operation name="getWorkflowExecutionMetadata"></operation>
+        <operation name="saveWorkflowExecutionMetadata"></operation>
+        <operation name="saveWorkflowExecutionMetadata"></operation>
+        <operation name="getServiceDescription"></operation>
+        <operation name="getDeploymentDescription"></operation>
+        <operation name="getHostDescription"></operation>
+        <operation name="saveHostDescription"></operation>
+        <operation name="saveServiceDescription"></operation>
+        <operation name="saveDeploymentDescription"></operation>
+        <operation name="deployServiceOnHost"></operation>
+        <operation name="searchHostDescription"></operation>
+        <operation name="searchDeploymentDescriptionWithSerivceHost"></operation>
+        <operation name="searchDeploymentDescriptionWithService"></operation>
+        <operation name="searchDeploymentDescriptionWithServiceHostApp"></operation>
+        <operation name="searchDeploymentDescription"></operation>
+        <operation name="saveGFacDescriptor"></operation>
+        <operation name="deleteGFacDescriptor"></operation>
+        <operation name="getGFacDescriptorList"></operation>
+        <operation name="saveWorkflow"></operation>
+        <operation name="deleteWorkflow"></operation>
+        <operation name="deleteServiceDescription"></operation>
+        <operation name="deleteDeploymentDescription"></operation>
+        <operation name="deleteHostDescription"></operation>
+        <operation name="getWorkflows"></operation>
+        <operation name="getWorkflow"></operation>
+    </service>
+</serviceGroup>