<!-- This is a very simple service map document. Also see http://www.extreme.indiana.edu/gfac
for some tutorial on how to write a service map document -->

<!-- This document can serve as a template that can be modified instead of
writing a service map document from scratch -->

<ServiceMap xmlns="http://www.extreme.indiana.edu/namespaces/2004/01/gFac"
            xmlns:lead="http://www.extreme.indiana.edu/lead">

    <!-- The fully qualified name of this service i.e QName of this service. This is the
    targetNamespace plus the name of this service. http://www.extreme.indiana.edu/lead
    is the targetNamespace of this service and TestCMD_Example1 is the name of this service
    No two services must have the same QName. -->
    <service>
        <serviceName targetNamespace="http://www.extreme.indiana.edu/lead">TestCMD_Example1</serviceName>

        <!-- This is a short description of this service -->
        <serviceDescription>This is a simple test service</serviceDescription>
    </service>

    <!-- A service can have multiple port types, but multiple port types are rarely used -->
    <portType>

    <!-- A portType can have several operations a.k.a methods. This service has only one method
    i.e Run -->

    <method>
        <!-- The name of this method -->
        <methodName>Run</methodName>

        <!-- A short description of this method -->
        <methodDescription>Run the service</methodDescription>

        <!-- The application that must be run when this method is invoked, is specified below.
        Let us assume that this service wraps an application called TestApp and accepts two inputs
        viz. input1 and input2. Let us assume that a user invokes this
        service and provides values for the two inputs as value1 and value2. Then this
        service will run the application as "TestApp input1 value1 input2 value2".
        If you want this service to run the application as "TestApp value1 value2", then
        you must set the attribute paramValuesOnly="true" below. -->

        <application paramValuesOnly="true">

            <!-- The QName of the application. This application is described in another xml
            document called the application description document. See the directory appDescDocs
            for some examples -->
            <applicationName targetNamespace="http://www.extreme.indiana.edu/lead">TestApp</applicationName>

            <!-- A description of the application -->
            <description>Test application</description>
        </application>

        <!-- A service can have zero or more input parameters. Each input parameter represents an
        input to the service. The value(s) of each input parameter must be provided by the
        user/client (in the SOAP message) at the time of invoking the service -->
        <inputParameter>
            <!-- Name of this input parameter -->
            <parameterName>InputParam1</parameterName>

            <!-- A description of this input parameter -->
            <parameterDescription>An input parameter</parameterDescription>

            <!-- The data type of this parameter. For a list of supported data types, see the schema
            or the online documentation. Some supported data types are

            String: represents a string value
            Integer: represents an integer value
            Float: represents a float value
            Double: represents a double value
            Boolean: represents a boolean value
            StringArray: represents an unbounded array of string values
            IntegerArray, FloatArray, DoubleArray, BooleanArray: likewise
            -->

            <!-- The data type specified here is Integer. It represents an integer value. The
            user/client must not provide a non-integer value (in the SOAP message) -->

            <parameterType>Integer</parameterType>
        </inputParameter>

        <!-- A service can have zero or more output parameters. Each output parameter represents an
        output result of the application. The output result must be present in the "standard out"
        a.k.a stdout  of the application. The service will parse the "standard out" of the
        application and while doing so will look for the output parameter name i.e "OutParam" in
        this case. It will then retrieve the value of "OutputParam1" and return it to the user. As
        an example, if the "standard out" of the application contains a line like
        OutputParam1 = "somevalue1", the service will return "somevalue1" in the SOAP
        message to the user/client. See the file ./testApp for some examples

        If you want the entire "standard out" of the application, you can specify the parameterType
        as StdOut. See below.
        -->
        <outputParameter>
            <!-- Name of this output parameter -->
            <parameterName>OutputParam1</parameterName>

            <!-- A description of this output parameter -->
            <parameterDescription>An output parameter</parameterDescription>

            <!-- Data type for this output parameter. For a list of supported data types see the
            schema or the online documentation. -->
            <parameterType>String</parameterType>

            <!-- If you want the entire standard out of the application; specify StdOut -->
            <!-- <parameterType>StdOut</parameterType> -->
        </outputParameter>
    </method>

    </portType>

</ServiceMap>
