<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:loc-metadata="bea.com/loc/metadata" targetNamespace="bea.com/loc/metadata" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">

    <!-- locMetadataType ... This is the root element -->
    <xsd:element name="loc-metadata" type="loc-metadata:locMetadataType">
        <xsd:annotation>
            <xsd:documentation>This document is used to configure the services and policies
                               for an instance of the Liquid Operations Control (LOC) server.
                               Services are a collection of processes that work together.
                               The processes within a service are grouped by type. The 
                               processes (or instances) of a particaular process type 
                               are treated as homogeneous entities. 
            </xsd:documentation>
        </xsd:annotation>
    </xsd:element>

    <!-- locMetadataType -->
    <xsd:complexType name="locMetadataType">
        <xsd:annotation>
            <xsd:documentation>This is the type of the root element for the LOC metadata configuration.
            </xsd:documentation>
        </xsd:annotation>

        <xsd:sequence>
            <xsd:element name="functions" type="loc-metadata:functionsType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Function definitions which may be used when defining constraints.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-bindings" type="loc-metadata:constraintsType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Globally scoped constraint bindings. Depending on the type of constraint, 
                                       this binding may be replicated down to individual services.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="services" type="loc-metadata:servicesType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Definitions for the services managed by this LOC controller instance
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="connection-factories" type="loc-metadata:factoriesType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>A set of factory classes for instantiating connections to some endpoint. 
                                       These are used by notification actions.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="connection-infos" type="loc-metadata:connectionInfosType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Information needed to initialize the connection to an endpoint that will be used 
                                       in a notification action.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraints" type="loc-metadata:constraintsDefinitionType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>The constraint definitions used to define policy for services 
                                       managed by this LOC controller instance.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="notifications" type="loc-metadata:notificationsType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Definitions for notifications that are made when actions or pipelines are executed 
                                       when policy violations occur. These work in a similar manner as notification actions, 
                                       but are a side effect of an action or pipeline rather than being the action or a 
                                       part of the pipeline.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="pipelines" type="loc-metadata:pipelinesDefinitionType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Lists of actions which may be executed as the result of a policy violation. 
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="actions" type="loc-metadata:actionsConfigurationType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Individual actions which may be executed as the result of a policy violation.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="adjudicator" type="loc-metadata:adjudicatorConfigurationType" minOccurs="0" nillable="true" >
                <xsd:annotation>
                    <xsd:documentation>Defines an adjudication handler for actions and pipelines. 
                                       This is not used in V1 and adjudication is handled strictly in the LOC console
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="metadata" type="loc-metadata:metadataType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Information used for starting process instances.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>


    <!-- constraintType -->
    <xsd:complexType name="constraintType">
        <xsd:annotation>
            <xsd:documentation>Defines binding between a constraint definition (see constraintsDefinitionType)
                               and either an action (see actionType) or a pipeline (see pipelineDefinitionType).
                               constraintTypes are used in three different scopes within this document: global, service, process type
                               Certain constraint types are only valid at a particular scope. Improper bindings will be ignored by 
                               the system.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="constraint-key" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>This is a reference to the constraint-key element of a constraint definition. See constraintsDefinitionType.
                     </xsd:documentation>
                 </xsd:annotation>
            </xsd:element>
            <xsd:choice>
                <xsd:element name="action-key" type="xsd:string">
                    <xsd:annotation>
                         <xsd:documentation>This is a reference to the action-key element of an action definition. See actionType.
                         </xsd:documentation>
                     </xsd:annotation>
                </xsd:element>
                <xsd:element name="pipeline-key" type="xsd:string">
                    <xsd:annotation>
                         <xsd:documentation>This is a reference to the pipeline-key element of an pipeline definition. See pipelineDefinitionType.
                         </xsd:documentation>
                     </xsd:annotation>
                </xsd:element>
            </xsd:choice>
            <xsd:element name="process-instance-name" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>This is an optional reference to the name element of the jvmInstanceType. This is used as a hint
                                       for the action to decide which instance of the process type to act on.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>


    <!-- constraintsType -->
    <xsd:complexType name="constraintsType">
        <xsd:annotation>
            <xsd:documentation>Defines the constraint bindings for a particular scope.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="constraint-binding" type="loc-metadata:constraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                     <xsd:documentation>references a constraint definition and an action or pipeline to form a policy for a particular scope.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- processTypeType -->
    <xsd:complexType name="processTypeType">
        <xsd:annotation>
            <xsd:documentation>Defines a LOC Process Type which is a grouping of like instances within a LOC Service.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="constraint-bindings" type="loc-metadata:constraintsType" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>constraint bindings scoped to the process type. 
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the process type. This must be unique within the scope of the service.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this process type
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element name="metadata-key" type="xsd:string" minOccurs="0" >
                <xsd:annotation>
                     <xsd:documentation>references information about the individual instances of this process type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- processTypesType -->
    <xsd:complexType name="processTypesType">
        <xsd:annotation>
            <xsd:documentation>A collection of processType definitions
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="process-type" type="loc-metadata:processTypeType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                     <xsd:documentation>A process type definition.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- serviceType -->
    <xsd:complexType name="serviceType">
        <xsd:annotation>
            <xsd:documentation>Defines a LOC Service. A LOC Service is collection of processes which are
                               grouped by type (see processTypeType)
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation><xsd:documentation>The name of the service. </xsd:documentation></xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation><xsd:documentation>A description of th eservice. </xsd:documentation></xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation><xsd:documentation>The desired deployment state of the service (undeployed|staged|deployed). </xsd:documentation></xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed|staged"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger" minOccurs="0"  maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>The priority of this service. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-bindings" type="loc-metadata:constraintsType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Service scoped constraint bindings. Depending on the type of constraint, 
                                       this binding may be replicated down to individual process types within
                                       the service. This may also be the case for global bindings that were 
                                       replicated to the service.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element name="process-types" type="loc-metadata:processTypesType" maxOccurs="1">
                <xsd:annotation>
                     <xsd:documentation>The process types that comprise this service
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="max-failed-event-retry-count" type="xsd:int" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                     <xsd:documentation>An action or pipeline that is executed as the result of a policy violation can fail and if
                                        the policy is still in violation, the action or pipeline will be retried.
                                        This defines the maximum number of times an action or pipeline will be executed 
                                        when the first try fails. 
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="placement-algorithm" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                     <xsd:documentation>Determines the placement algorithm that is used when deploying a service.
                                        PreferLarger means choose a placement organization where VMs are placed
                                        into pools with the most amount of resource available. PreferSmaller
                                        means choose an organization where VMs are placed into smaller pools
                                        such that there is less space left over.
                     </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="PreferLarger|PreferSmaller"/>
                    </xsd:restriction>
                </xsd:simpleType>

            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- servicesType -->
    <xsd:complexType name="servicesType">
        <xsd:annotation>
            <xsd:documentation>A collection of service definitions
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="service" type="loc-metadata:serviceType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A service definition
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- resourcePoolConstraintType -->
    <xsd:complexType name="resourcePoolConstraintType">
        <xsd:annotation>
            <xsd:documentation>The definition for a constraint on a pool.
                               This type is only valid when bound at the 
                               global level, that is, outside
                               the scope of any service (see constraintType).
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ignore-observer-errors" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, then the constraint will match even if the matched metric has an observer error. This means an event can occur on stale data. The default for this is false.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="match-undefined" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, the value will be assumed to be 0 if there is no metric available. 
                                        By default, this is false, which means don't evaluate the policy when no
                                        metric is available.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-type">
                <xsd:annotation>
                     <xsd:documentation>min means the policy fails if the metric goes below a certain value.
                                        max means the policy fails if the metric goes above a certain value.
                     </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="min|max"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="value" type="xsd:long">
                <xsd:annotation>
                     <xsd:documentation>The boundary condition for this constraint, depending on the constraint type, 
                                        this policy will fail if the actual value goes above (max) or below (min) 
                                        this value.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>


    <!-- deploymentStateConstraintType -->
    <xsd:complexType name="deploymentStateConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a constraint which 
                               is evaluated when a service is being deployed or undeployed.
                               This constraint type is used to override the implicit deployment
                               behavior. When a service has a binding to a deploymentStateConstraint,
                               the corresponding action or pipeline will be executed rather than
                               the default action for deployment or undeployment.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is transitioning.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="staging|destroying|starting|stopping|deploying|undeploying"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- intConstraintType -->
    <xsd:complexType name="intConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an observed value of type int
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ignore-observer-errors" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, then the constraint will match even if the matched metric has an observer error. This means an event can occur on stale data. The default for this is false.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="match-undefined" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, the value will be assumed to be 0 if there is no metric available. 
                                        By default, this is false, which means don't evaluate the policy when no
                                        metric is available.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-type">
                <xsd:annotation>
                     <xsd:documentation>min means the policy fails if the metric goes below a certain value.
                                        max means the policy fails if the metric goes above a certain value.
                     </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="min|max"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="value" type="xsd:int">
                <xsd:annotation>
                     <xsd:documentation>The boundary condition for this constraint, depending on the constraint type, 
                                        this policy will fail if the actual value goes above (max) or below (min) 
                                        this value.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- longConstraintType -->
    <xsd:complexType name="longConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an observed value of type long
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ignore-observer-errors" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, then the constraint will match even if the matched metric has an observer error. This means an event can occur on stale data. The default for this is false.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="match-undefined" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, the value will be assumed to be 0 if there is no metric available. 
                                        By default, this is false, which means don't evaluate the policy when no
                                        metric is available.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-type">
                <xsd:annotation>
                     <xsd:documentation>min means the policy fails if the metric goes below a certain value.
                                        max means the policy fails if the metric goes above a certain value.
                     </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="min|max"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The boundary condition for this constraint, depending on the constraint type, 
                                        this policy will fail if the actual value goes above (max) or below (min) 
                                        this value.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>


    <!-- floatConstraintType -->
    <xsd:complexType name="floatConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an observed value of type float
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string" >
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ignore-observer-errors" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, then the constraint will match even if the matched metric has an observer error. This means an event can occur on stale data. The default for this is false.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="match-undefined" type="xsd:boolean" default="false"  minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, the value will be assumed to be 0 if there is no metric available. 
                                        By default, this is false, which means don't evaluate the policy when no
                                        metric is available.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-type">
                <xsd:annotation>
                     <xsd:documentation>min means the policy fails if the metric goes below a certain value.
                                        max means the policy fails if the metric goes above a certain value.
                     </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="min|max"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The boundary condition for this constraint, depending on the constraint type, 
                                        this policy will fail if the actual value goes above (max) or below (min) 
                                        this value.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>


    <!-- doubleConstraintType -->
    <xsd:complexType name="doubleConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an observed value of type double
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ignore-observer-errors" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, then the constraint will match even if the matched metric has an observer error. This means an event can occur on stale data. The default for this is false.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="match-undefined" type="xsd:boolean" default="false"  minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, the value will be assumed to be 0 if there is no metric available. 
                                        By default, this is false, which means don't evaluate the policy when no
                                        metric is available.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-type">
                <xsd:annotation>
                     <xsd:documentation>min means the policy fails if the metric goes below a certain value.
                                        max means the policy fails if the metric goes above a certain value.
                     </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="min|max"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The boundary condition for this constraint, depending on the constraint type, 
                                        this policy will fail if the actual value goes above (max) or below (min) 
                                        this value.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- booleanConstraintType -->
    <xsd:complexType name="booleanConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an observed value of type boolean
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ignore-observer-errors" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, then the constraint will match even if the matched metric has an observer error. This means an event can occur on stale data. The default for this is false.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-type">
                <xsd:annotation>
                     <xsd:documentation>This can only be set to equals which means the metric must equal the value.
                                        If the metric does not equal the value, the policy fails and an action will be taken.
                     </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="equals"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- dateConstraintType -->
    <xsd:complexType name="dateConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an observed value of type date
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ignore-observer-errors" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, then the constraint will match even if the matched metric has an observer error. This means an event can occur on stale data. The default for this is false.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-type">
                <xsd:annotation>
                     <xsd:documentation>This can only be set to equals which means the metric must equal the value.
                                        If the metric does not equal the value, the policy fails and an action will be taken.
                     </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="equals"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- stringConstraintType -->
    <xsd:complexType name="stringConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an observed value of type string
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ignore-observer-errors" type="xsd:boolean" default="false" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>If true, then the constraint will match even if the matched metric has an observer error. This means an event can occur on stale data. The default for this is false.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint-type">
                <xsd:annotation>
                     <xsd:documentation>equals means the metric must be equal to the constraint value, otherwise the policy fails.
                                        matches means the metric must match the value which is a regular expression, otherwise the policy fails.
                     </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="equals|matches"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- processTypeActionConstraintType -->
    <xsd:complexType name="processTypeActionConstraintType">
        <xsd:annotation>
            <xsd:documentation>The processTypeActionConstraintType defines a policy constraint that is
                               evaluated on the result of a previously executed action. 
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="action-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the action that this policy is evaluated against.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="action-status" >
                <xsd:annotation>
                    <xsd:documentation>The status of the action which will cause this policy to lead to a new event.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="succeeded|failed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- processTypeEventConstraintType -->
    <xsd:complexType name="processTypeEventConstraintType">
        <xsd:annotation>
            <xsd:documentation>The processTypeEventConstraintType defines a policy constraint that is
                               evaluated on the result of a previously executed event. 
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="event-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the event that this policy is evaluated against.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="event-status">
                <xsd:annotation>
                    <xsd:documentation>The status of the event which will cause this policy to lead to a new event.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="succeeded|failed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>



    <!-- maxMemoryConstraintType -->
    <xsd:complexType name="maxMemoryConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines the maximum amount of RAM that can
                               be used by the process. This will only be used if the underlying
                               system allows this to be controlled, such as is the case in ESX.
                               In the case of ESX, this setting corresponds to the notion of "limit".
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:long">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- minMemoryConstraintType -->
    <xsd:complexType name="minMemoryConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines the minimum amount of RAM required
            by the process. In the case of ESX, this setting corresponds to the 
            notion of "reserve".
        </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:long">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- shareMemoryConstraintType -->
    <xsd:complexType name="shareMemoryConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines the memory share number for
                               systems such as ESX where share is supported.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:long">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- maxCPUConstraintType -->
    <xsd:complexType name="maxCPUConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines the maximum amount
                               of CPU resource that should be allocated to an 
                               instance of a process type. This is only supported
                               on virtualized systems that allow control over
                               CPU usage. On ESX, this corresponds to the notion
                               of "limit".
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:long">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- minCPUConstraintType -->
    <xsd:complexType name="minCPUConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines the minimum amount
                               of CPU resource that should be allocated to an 
                               instance of a process type. This is only supported
                               on virtualized systems that allow control over
                               CPU usage. On ESX, this corresponds to the notion
                               of "reserve".
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:long">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- shareCPUConstraintType -->
    <xsd:complexType name="shareCPUConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines the CPU share number for
                               systems such as ESX where share is supported.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:long">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- softwareConstraintType -->
    <xsd:complexType name="softwareConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a software requirement for a process type
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>This is not used for this constraint type
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="software-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The logical name of the software. This is the same name that is used in the agent configuration. 
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="software-mount-point" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The mountpoint that the software on the VM. 
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="copies-at-create" type="loc-metadata:fileCopiesType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Files that will be copied when the VM is created.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="copies-at-shutdown" type="loc-metadata:fileCopiesType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Files that will be copied on first shutdown.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- isoConstraintType -->
    <xsd:complexType name="isoConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a iso requirement for a process type
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>This is not used for this constraint type
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="iso-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The logical name of the iso. This is the same name that is used in the agent configuration. 
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="copies-at-create" type="loc-metadata:fileCopiesType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Files that will be copied when the VM is created.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

		<!-- jreConstraintType -->
		<xsd:complexType name="jreConstraintType">
			<xsd:annotation>
				<xsd:documentation>Defines a JRE requirement for a process type</xsd:documentation>
			</xsd:annotation>
			<xsd:sequence>
				<xsd:element name="name" type="xsd:string">
					<xsd:annotation>
						<xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="description" type="xsd:string" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>A description of this constraint</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="key" type="xsd:string">
					<xsd:annotation>
						<xsd:documentation>The key for this constraint definition used in constraint bindings. 
															 This must be unique across all constraint keys, but may be the same 
															 as the name for this constraint.
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="priority" type="xsd:nonNegativeInteger">
					<xsd:annotation>
						<xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
															 policy violations occur at the same time, but will not preempt any events that
															 are in progress already.
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="state">
					<xsd:annotation>
						<xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
															 In most cases, constraints are defined for the deployed state.
						</xsd:documentation>
					</xsd:annotation>
					<xsd:simpleType>
						<xsd:restriction base="xsd:string"><xsd:pattern value="deployed"/></xsd:restriction>
					</xsd:simpleType>
				</xsd:element>
				<xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
					<xsd:annotation>
						<xsd:documentation>This is not used for this constraint type</xsd:documentation>
					</xsd:annotation>
				</xsd:element>

				<xsd:element name="min-version" type="xsd:string" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>The minimum JRE version</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="max-version" type="xsd:string" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>The maximum JRE version</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:choice minOccurs="0" maxOccurs="1">
					<xsd:element name="accept" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>Comma-separated list of acceptable JRE types</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="exclude" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>Comma-separated list of non-acceptable JRE types</xsd:documentation>
						</xsd:annotation>
					</xsd:element>            
				</xsd:choice>
			</xsd:sequence>
    </xsd:complexType>
	
    <!-- diskConstraintType -->
    <xsd:complexType name="localDiskSizeConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a disk size requirement for an ESX process type
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>This is not used for this constraint type
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:long">
                <xsd:annotation>
                    <xsd:documentation>The local disk size in mega-bytes for an ESX instance
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- ipAddressConstraintType -->
    <xsd:complexType name="ipAddressConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines an IP Address requirement for a process type
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="address" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>A string representing an IP Address name.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- maxProcessConstraintType -->
    <xsd:complexType name="maxProcessConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines the maximum number of 
                               instances allowed for a process type.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- minProcessConstraintType -->
    <xsd:complexType name="minProcessConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines the minimum number of 
                               instances of a process type required for a service to
                               run.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The value which the metric is compared to based on the constraint type.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>



    <!-- cronProcessTypeEventConstraintType -->
    <xsd:complexType name="cronProcessTypeEventConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a trigger which will
                               generate an event (or multiple events) based on a cron string.
                               The events behave similar to QOSEvents in that they lead to an
                               action or pipeline being executed. The actions will be applied
                               to instances of the associated process type which binds to this
                               definition.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="cron-string" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Defines when the trigger will be fired. The value has 6 required fields separated
                                       by spaces which represent seconds, minutes, hours, day-of-month, month, and day-of-week.
                                       There is also an optional 7th field which represents the year.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- cronServiceEventConstraintType -->
    <xsd:complexType name="cronServiceEventConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a trigger which will
                               generate an event (or multiple events) based on a cron string.
                               The events behave similar to ServiceEvents in that they lead to an
                               action or pipeline being executed. The actions will be applied
                               to the service which binds to this definition.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="cron-string" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Defines when the trigger will be fired. The value has 6 required fields separated
                                       by spaces which represent seconds, minutes, hours, day-of-month, month, and day-of-week.
                                       There is also an optional 7th field which represents the year.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- cronDeploymentConstraintType -->
    <xsd:complexType name="cronDeploymentConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a trigger which will
                               lead to the deployment of a service. The trigger action will 
                               update the desired state of the service to be "deployed"
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="cron-string" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Defines when the trigger will be fired. The value has 6 required fields separated
                                       by spaces which represent seconds, minutes, hours, day-of-month, month, and day-of-week.
                                       There is also an optional 7th field which represents the year.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>



    <!-- cronUndeploymentConstraintType -->
    <xsd:complexType name="cronUndeploymentConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a trigger which will
                               lead to the undeployment of a service. The trigger action will 
                               update the desired state of the service to be "undeployed"
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="cron-string" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Defines when the trigger will be fired. The value has 6 required fields separated
                                       by spaces which represent seconds, minutes, hours, day-of-month, month, and day-of-week.
                                       There is also an optional 7th field which represents the year.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    
    <!-- globalObserverErrorConstraintType -->
    <xsd:complexType name="globalObserverErrorConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an error metric at the global scope
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- serviceObserverErrorConstraintType -->
    <xsd:complexType name="serviceObserverErrorConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an error metric related to a service
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- processTypeObserverErrorConstraintType -->
    <xsd:complexType name="processTypeObserverErrorConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an error metric at the process type scope
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- resourcePoolErrorConstraintType -->
    <xsd:complexType name="resourcePoolErrorConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint on an error metric related to a resource pool
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance name of the object containing the metric that is measured to test this constraint.
                                       This is typically a JMX ObjectName.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-type" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The instance type of the objcet containing the metric that is measured to test this constraint.
                                       This is typically the classname of the JMX object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the attribute on the object instance that defines the metric.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>



    <!-- customConstraintType -->
    <xsd:complexType name="customConstraintType">
        <xsd:annotation>
            <xsd:documentation>Defines a policy constraint based on a custom constraint definition
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this constraint
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this constraint definition used in constraint bindings. 
                                       This must be unique across all constraint keys, but may be the same 
                                       as the name for this constraint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger">
                <xsd:annotation>
                    <xsd:documentation>The priority of this constraint. This will effect the order of rule evaluation when 
                                       policy violations occur at the same time, but will not preempt any events that
                                       are in progress already.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="state">
                <xsd:annotation>
                    <xsd:documentation>Defines whether this constraint is triggered when the service is deployed or undeployed.
                                       In most cases, constraints are defined for the deployed state.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="deployed|undeployed"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="evaluation-period" type="xsd:long" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where a policy violation has been failed and handled, this defines
                                       the minimum amount of time the system will wait before re-evaluating that policy.
                                       The value is in milliseconds. The default is 0. The period starts when the
                                       event is fired.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="constraint" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>This is the name of a custom-constraint-definition defined in a smart pack. 
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The value that the constraint will test against. How this is used depends on the custom-constraint-definition.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- functionDefinitionType -->
    <xsd:complexType name="functionDefinitionType">
        <xsd:annotation>
            <xsd:documentation>Defines a function which may be used when defining constraints.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the constraint definition. This must be unique across all constraint definitions
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this function definition
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="definition" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>defines the function.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- functionsType -->
    <xsd:complexType name="functionsType">
        <xsd:annotation>
            <xsd:documentation>A collection of functions that are defined for this LOC instance.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="function" type="loc-metadata:functionDefinitionType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A functions that is defined for this LOC instance.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- connectionFactoryType -->
    <xsd:complexType name="connectionFactoryType">
        <xsd:annotation>
            <xsd:documentation>Defines a connection factory which will be used to 
                               instantiate connections to external processes.
                               The connection factory is used by a JMS notification
                               action to initialize the JMS client.
                               (see connectionInfoType)
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the connection factory. This is referenced from the connectionInfoType
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this connection factory
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="factory-class" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The classname of a factory for the connection.
                                       The class must implement com.bea.adaptive.loc.agent.process.configuration.api.ConfigurationUpdateConnectionFactory
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- factoriesType -->
    <xsd:complexType name="factoriesType">
        <xsd:annotation>
            <xsd:documentation>A collection of connection factories 
                               that are defined for this LOC instance.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="connection-factory" type="loc-metadata:connectionFactoryType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A connection factory instance.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    
    <!-- classpathType -->
    <xsd:complexType name="classpathType">
        <xsd:annotation>
            <xsd:documentation>Defines a classpath that is used to load classes
                               that are needed to create external connections
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="path" type="xsd:string" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A classpath element
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>



    <!-- connectionInfoType -->
    <xsd:complexType name="connectionInfoType">
        <xsd:annotation>
            <xsd:documentation>Information used to create a JMX Connection to a managed instance. This is used by the configuration actions
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the connection information which is referenced by the action properties.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                     <xsd:documentation>A user defined description of this connection information
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="factory-name" type="xsd:string" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>The name of a connectionFactoryType which will be used to create the connection.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:choice>
            	<xsd:sequence>
								<xsd:element name="protocol" type="xsd:string" default="iiop">
										<xsd:annotation>
												<xsd:documentation>The protocol that will be used to create the connection, e.g., t3,iiop,http
												</xsd:documentation>
										</xsd:annotation>
								</xsd:element>
								<xsd:element name="host-address" type="xsd:string">
										<xsd:annotation>
												<xsd:documentation>The host address of the managed entity
												</xsd:documentation>
										</xsd:annotation>
								</xsd:element>
								<xsd:element name="port" type="xsd:int">
										<xsd:annotation>
												<xsd:documentation>The port that the managed entity is listening on
												</xsd:documentation>
										</xsd:annotation>
								</xsd:element>
								<xsd:element name="url-path" type="xsd:string" minOccurs="0">
										<xsd:annotation>
												<xsd:documentation>A url path for the connection
												</xsd:documentation>
										</xsd:annotation>
								</xsd:element>
							</xsd:sequence>						
							<xsd:element name="jmx-service-url" type="xsd:string">
									<xsd:annotation>
											<xsd:documentation>For generic JVMs this specifies a JMX Service URL to use for harvesting.
											</xsd:documentation>
									</xsd:annotation>
							</xsd:element>
						</xsd:choice>
            <xsd:element name="classpath" type="loc-metadata:classpathType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Classpath information that will be added to the classloader that is used to create the connection.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="initial-context-factory" type="xsd:string" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>InitialContextFactory used in setting up JNDI properties when making a JMX Connection to WebLogic Server
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="protocol-provider-package" type="xsd:string" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>The package name for the JMX protocol provider needed to make a client conection to the managed instance
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="username" type="xsd:string" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Username credential needed to access the managed instance
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="password" type="xsd:string" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Password for the specified username. This is an encrypted element.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    
    <!-- connectionInfosType -->
    <xsd:complexType name="connectionInfosType">
        <xsd:annotation>
            <xsd:documentation>A collection of connection information elements used
                               used by this LOC instance.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="connection-info" type="loc-metadata:connectionInfoType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>Information for connecting to a JMX endpoint.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    
    <!-- constraintsDefinitionType -->
    <xsd:complexType name="constraintsDefinitionType">
        <xsd:annotation>
            <xsd:documentation>The definitions for the policies used to manage the services
                               maintained by this LOC controller. These policy definitions
                               are linked to from constraint bindings (see constraints) which
                               are defined within process type definitions, service definitions
                               or globally.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:choice minOccurs="0"  maxOccurs="unbounded">
            <xsd:element name="resource-pool-constraint" type="loc-metadata:resourcePoolConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see resourcePoolConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="deployment-state-constraint" type="loc-metadata:deploymentStateConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see deploymentStateConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="min-memory-constraint" type="loc-metadata:minMemoryConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see minMemoryConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="max-memory-constraint" type="loc-metadata:maxMemoryConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see maxMemoryConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="share-memory-constraint" type="loc-metadata:maxMemoryConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see maxMemoryConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="min-cpu-constraint" type="loc-metadata:minCPUConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see minCPUConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="max-cpu-constraint" type="loc-metadata:maxCPUConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see maxCPUConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="share-cpu-constraint" type="loc-metadata:maxCPUConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see maxCPUConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="software-constraint" type="loc-metadata:softwareConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see softwareConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="iso-constraint" type="loc-metadata:isoConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see isoConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="jre-constraint" type="loc-metadata:jreConstraintType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation> see jreConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="local-disk-size-constraint" type="loc-metadata:localDiskSizeConstraintType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation> see localDiskSizeConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ip-address-constraint" type="loc-metadata:ipAddressConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see ipAddressConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="min-process-constraint" type="loc-metadata:minProcessConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see minProcessConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="max-process-constraint" type="loc-metadata:maxProcessConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see maxProcessConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="int-constraint" type="loc-metadata:intConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see intConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="long-constraint" type="loc-metadata:longConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see longConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="float-constraint" type="loc-metadata:floatConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see floatConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="double-constraint" type="loc-metadata:doubleConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see doubleConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="boolean-constraint" type="loc-metadata:booleanConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see booleanConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="date-constraint" type="loc-metadata:dateConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see dateConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="string-constraint" type="loc-metadata:stringConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see stringConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="custom-constraint" type="loc-metadata:customConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see customConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="process-type-action-constraint" type="loc-metadata:processTypeActionConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see processTypeActionConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="process-type-event-constraint" type="loc-metadata:processTypeEventConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see processTypeEventConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="cron-service-event-constraint" type="loc-metadata:cronServiceEventConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see cronServiceEventConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="cron-process-type-event-constraint" type="loc-metadata:cronProcessTypeEventConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see cronProcessTypeEventConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="cron-deployment-constraint" type="loc-metadata:cronDeploymentConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see cronDeploymentConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="cron-undeployment-constraint" type="loc-metadata:cronUndeploymentConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see cronUndeploymentConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element name="process-type-observer-error-constraint" type="loc-metadata:processTypeObserverErrorConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see processTypeObserverErrorConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="resource-pool-error-constraint" type="loc-metadata:resourcePoolErrorConstraintType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation> see resourcePoolErrorConstraintType</xsd:documentation>
                </xsd:annotation>
            </xsd:element>


            <!-- More constraints for all the types will be inserted here -->
        </xsd:choice>
    </xsd:complexType>
    
    <!-- actionKeysType -->
    <xsd:complexType name="actionKeysType">
        <xsd:annotation>
            <xsd:documentation>This is a collection of actions associated with a notification. When any of these actions is executed, a notification will be sent.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="action-key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key of an action definition
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- pipelineKeysType -->
    <xsd:complexType name="pipelineKeysType">
        <xsd:annotation>
            <xsd:documentation>This is a collection of pipelines associated with a notification. When any of these pipelines is executed, the notification will be sent.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="pipeline-key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key of a pipeline definition
                    </xsd:documentation>
                </xsd:annotation>
        </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- notificationType -->
    <xsd:complexType name="notificationType">
        <xsd:annotation>
            <xsd:documentation>A notification which is fired when an action or pipeline executes.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>A name for the notification.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>A user defined description of the notification
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="notification-type" minOccurs="1" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="SMTP|SNTP|JMX|JMX"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="actions" type="loc-metadata:actionKeysType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>A list of references to the key elements of an action definitions
                                       that indicates which actions will trigger this notification.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="pipelines" type="loc-metadata:pipelineKeysType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>A list of references to the key elements of pipeline definitions
                                       that indicates which actions will trigger this notification.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="properties" type="loc-metadata:propertiesType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Properties for initializing the notification. These are specific to 
                                       the notification type.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- notificationsType -->
    <xsd:complexType name="notificationsType">
        <xsd:annotation>
            <xsd:documentation>A collection of notifications which are fired when an action or pipeline executes.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="notification" type="loc-metadata:notificationType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A notification which will be fired when an action or pipeline executes
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- actionType -->
    <xsd:complexType name="actionType">
        <xsd:annotation>
            <xsd:documentation>A reference to an action definition
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="action-key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>the key of the action definition
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="sequence" type="xsd:positiveInteger">
                <xsd:annotation>
                    <xsd:documentation>???
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>



    <!-- actionsType -->
    <xsd:complexType name="actionsType">
        <xsd:annotation>
            <xsd:documentation>A list of actions that make up a pipeline
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="action" type="loc-metadata:actionType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>An action within a pipeline
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- jmxParamTypesType -->
    <xsd:complexType name="jmxParamTypesType">
        <xsd:annotation>
            <xsd:documentation>This is used in calls to JMX operations. It defines the types of the arguments to the operation.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="param-type" type="xsd:string" minOccurs="0" maxOccurs="unbounded" >
                <xsd:annotation>
                    <xsd:documentation>defines the type of one argument to a JMX operation
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- jmxParamsType -->
    <xsd:complexType name="jmxParamsType">
        <xsd:annotation>
            <xsd:documentation>This is used in calls to JMX operations. It defines the the argument values passed to the operation.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="param" type="xsd:string" minOccurs="0" maxOccurs="unbounded" >
                <xsd:annotation>
                    <xsd:documentation>defines one argument to a JMX operation
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- jmxAttributeType -->
    <xsd:complexType name="jmxAttributeType">
        <xsd:annotation>
            <xsd:documentation>This is used to invoke JMX update actions. It defines the attribute to be changed and the new value.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Attribute name
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Attribute value
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- jmxAttributesType -->
    <xsd:complexType name="jmxAttributesType">
        <xsd:annotation>
            <xsd:documentation>A set of JMX attributes affected by a JMX oeration.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="attribute" type="loc-metadata:jmxAttributeType" minOccurs="0" maxOccurs="unbounded" >
                <xsd:annotation>
                    <xsd:documentation>An attribute affected by a JMX operation
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- wlsCreateType -->
    <xsd:complexType name="wlsCreateType">
        <xsd:annotation>
            <xsd:documentation>A WLS Specific JMX operation that creates a new MBean
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>the name of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>a user defined description of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="mbean-name" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The name of the new MBean
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="parent-name" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The parent of the new MBean (one of the create methods on this MBean will be called).
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="param-types" type="loc-metadata:jmxParamTypesType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Parameters to the create call
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="params" type="loc-metadata:jmxParamsType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The types for the parameters passed to the create call.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    
    <!-- jmxCreateType -->
    <xsd:complexType name="jmxCreateType">
        <xsd:annotation>
            <xsd:documentation>A Generic JMX operation that creates a new MBean
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>a user defined description of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="mbean-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the new MBean
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="class-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The class name used to construct the new MBean instance
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="loader-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the classloader MBean that has the MBean class to be instantiated
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="param-types" type="loc-metadata:jmxParamTypesType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Parameters to the create call
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="params" type="loc-metadata:jmxParamsType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The types for the parameters passed to the create call.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- jmxDestroyType -->
    <xsd:complexType name="jmxDestroyType">
        <xsd:annotation>
            <xsd:documentation>A Generic JMX operation that destroys an MBean
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>a user defined description of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="mbean-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the MBean to be destroyed
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- wlsDestroyType -->
    <xsd:complexType name="wlsDestroyType">
        <xsd:annotation>
            <xsd:documentation>A WLS Specific JMX operation that destroys an MBean
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>a user defined description of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="mbean-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the MBean to be destroyed
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="parent-name" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The parent of the MBean being destroyed. A destroy method on this MBean will be called.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="param-types" type="loc-metadata:jmxParamTypesType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Parameters to the create call
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="params" type="loc-metadata:jmxParamsType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The types for the parameters passed to the create call.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- jmxSetType -->
    <xsd:complexType name="jmxSetType">
        <xsd:annotation>
            <xsd:documentation>A Generic JMX operation that updates one or more attributes on an MBean
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>a user defined description of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="mbean-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the MBean which will be modified
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attributes" type="loc-metadata:jmxAttributesType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>A list of attributes and values that will be affected by the set operation.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- jmxInvokeType -->
    <xsd:complexType name="jmxInvokeType">
        <xsd:annotation>
            <xsd:documentation>A Generic JMX operation is used to invoke an operation on an MBean
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>a user defined description of this action
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="mbean-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the MBean that will be invoked on
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="operation-name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the operation to be executed
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="param-types" type="loc-metadata:jmxParamTypesType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Parameters to the create call
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="params" type="loc-metadata:jmxParamsType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The types for the parameters passed to the create call.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    
    <!-- jmxCommandsType -->
    <xsd:complexType name="jmxCommandsType">
        <xsd:annotation>
            <xsd:documentation>A list of JMX commands
            </xsd:documentation>
        </xsd:annotation>
        <xsd:choice minOccurs="0"  maxOccurs="unbounded">
            <xsd:element name="wls-create" type="loc-metadata:wlsCreateType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A WLS specific command for creating a new MBean
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="jmx-create" type="loc-metadata:jmxCreateType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A generic command for creating a new MBean
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="wls-destroy" type="loc-metadata:wlsDestroyType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A WLS specific command for destroying an MBean
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="jmx-destroy" type="loc-metadata:jmxDestroyType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A generic command for destroying an MBean
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="jmx-set" type="loc-metadata:jmxSetType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A generic command for updating one or more attributes on an MBean.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="jmx-invoke" type="loc-metadata:jmxInvokeType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A generic command to invoke on an MBean operation
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:choice>
    </xsd:complexType>

    <!-- readyInformationType -->
    <xsd:complexType name="readyInformationType">
        <xsd:annotation>
            <xsd:documentation>Metric information that is used when starting a managed instance to test whether the instance has fully booted.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="check-type" minOccurs="1" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The type of check. ValueExists checks to see if the metric has shown up. ValueEquals determines that the metric has a particular value
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="ValueExists|ValueEquals"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="max-wait-period" type="xsd:long" minOccurs="0" maxOccurs="1" default="900000" >
                <xsd:annotation>
                    <xsd:documentation>Defines the number of milliseconds to wait for the check to succeed. If this period expires, it is assumed that the managed instance will not come up and the instance will be killed.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The JMX instance name of the metric (usually a JMX ObjectName)
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="attribute" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The attribute on the instance that is checked.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>When check-type is set to ValueEquals, this is what the value is compared against.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value-type" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case of ValueEquals, this is the type of the value being checked. 
                                       The configured value is coerced to this type before the check is done. 
                                       The type must have a constructor with a single parameter of type java.lang.String.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    
    <!-- pipelineDefinitionType -->
    <xsd:complexType name="pipelineDefinitionType">
        <xsd:annotation>
            <xsd:documentation>Defines a pipeline which is a list of actions which will be executed when an
                               administrative policy fails.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of this pipeline. This must be unique across all pipelines
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this pipeline
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this pipeline. This is referenced from constraint definitions 
                                       and must be unique across all pipelines. It may be the same as the name 
                                       value, however.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="adjudicate" type="xsd:boolean" default="true">
                <xsd:annotation>
                     <xsd:documentation>Defines whether this action should be adjudicated. This is ignored if the action is run as part of a pipeline. In that case, the pipeline adjudication property is honored.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element name="actions" type="loc-metadata:actionsType">
                <xsd:annotation>
                    <xsd:documentation>A list of actions that make up this pipeline.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- pipelinesDefinitionType -->
    <xsd:complexType name="pipelinesDefinitionType">
        <xsd:annotation>
            <xsd:documentation>A collection of pipeline definitions
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="pipeline" type="loc-metadata:pipelineDefinitionType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A pipeline definition
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- argumentsType -->
    <xsd:complexType name="argumentsType">
        <xsd:annotation>
             <xsd:documentation>A list of arguments that are passed when creating a JVM.
             </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="arg" type="xsd:string" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                     <xsd:documentation>A JVM argument.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>



    <!-- jvmInstanceType -->
    <xsd:complexType name="jvmInstanceType">
        <xsd:annotation>
            <xsd:documentation>Information used to start a JVM instance.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The name of this instance
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>A description of this instance.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="max-copies" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The maximum number of copies of this instance that can be created. The default is 1
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element name="variables" type="loc-metadata:variablesType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Variables used for substitution in other elements within this type. The variables must be arrays of strings.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:choice>
                <xsd:element name="main-class" type="xsd:string">
                    <xsd:annotation>
                        <xsd:documentation>The main class used to start the instance.
                        </xsd:documentation>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element name="main-jar" type="xsd:string">
                    <xsd:annotation>
                        <xsd:documentation>A jar file with a main class used to start the instance.
                        </xsd:documentation>
                    </xsd:annotation>
                </xsd:element>
            </xsd:choice>
            <xsd:element name="ready-information" type="loc-metadata:readyInformationType" minOccurs="0" >
                <xsd:annotation>
                    <xsd:documentation>Information used to define when the managed instance has come up.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="jvm-args" type="loc-metadata:argumentsType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Arguments passed to the JVM when it is started
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="java-args" type="loc-metadata:argumentsType" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>Arguments passed to the main method.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="native-lib-dir" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>A path to native libraries used by the application running in the jvm.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="instance-dir" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>The directory from which the JVM is launched
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="native-jmx" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false">
                <xsd:annotation>
                    <xsd:documentation>indicates whether native (true) or WLS JMX (false) is used
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="protocol" type="xsd:string" minOccurs="0" maxOccurs="1" default="iiop">
                <xsd:annotation>
                    <xsd:documentation>for WebLogicServer instance, the protocol for the administration channel
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="host" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>for WebLogicServer instance, the host address of the server
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="port" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>for WebLogicServer instance, the listen port used for administration.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="username" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>for WebLogicServer instance, the username of the administrator. This attribute is encrypted
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="password" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>for WebLogicServer instance, the password of the administrator. This attribute is encrypted
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="jmx-service-url" type="xsd:string" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>For generic JVMs this specifies a JMX Service URL to use for harvesting.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ssh-enabled" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false">
                <xsd:annotation>
                    <xsd:documentation>Defines whether SSH is enabled in the LiquidVM</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="wait-for-ssh" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false">
                <xsd:annotation>
                    <xsd:documentation>If true, instance start will wait until the ssh service on the LiquidVM is running before starting the application.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="xsd:nonNegativeInteger" minOccurs="0" maxOccurs="1" >
                <xsd:annotation>
                    <xsd:documentation>In the case where there are multiple instances of one type, this defines the order in which individual instances are started.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="copies-at-create" type="loc-metadata:fileCopiesType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Files that will be copied on when the VM is created.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="copies-at-shutdown" type="loc-metadata:fileCopiesType" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Files that will be copied on first shutdown.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- metadataInstancesType -->
    <xsd:complexType name="metadataInstancesType">
        <xsd:annotation>
            <xsd:documentation>The instance meta data for the instances of a meta data group.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="jvm-instance" type="loc-metadata:jvmInstanceType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>The instance meta data for one JVM instance.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <!-- More metadata types will be inserted here -->
        </xsd:sequence>
    </xsd:complexType>

    <!-- metadataGroupType -->
    <xsd:complexType name="metadataGroupType">
        <xsd:annotation>
            <xsd:documentation>A collection of meta data about the instances of a particular process type.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of this meta-data group. This must be unique across meta data groups
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this meta data group
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The key for this meta data group. This is referenced from the process type 
                                       definition and must be unique across all meta data group definitions. 
                                       It may, however, be the same as the name.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element name="instances" type="loc-metadata:metadataInstancesType">
                <xsd:annotation>
                    <xsd:documentation>The instance definitions of this meta data group.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <!-- More metadata types will be inserted here -->
        </xsd:sequence>
    </xsd:complexType>

    <!-- metadataType -->
    <xsd:complexType name="metadataType">
        <xsd:annotation>
            <xsd:documentation>The meta data for all instances managed by this LOC controller instance
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="metadata-group" type="loc-metadata:metadataGroupType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A meta data group for a process type.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <!-- More metadata types will be inserted here -->
        </xsd:sequence>
    </xsd:complexType>



    <!-- actionConfigurationType -->
    <xsd:complexType name="actionConfigurationType">
        <xsd:annotation>
            <xsd:documentation>The definition of an action which will be taken when some user defined policy fails.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The name of this action. This must be unique across all actions
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The key of this action. This is referenced by constraint bindings and pipeline definitions. This must be unique across all actions, but may be the same as the name.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="impl-class" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The implementation class of the action.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this action
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="adjudicate" type="xsd:boolean" default="true">
                <xsd:annotation>
                     <xsd:documentation>Defines whether this action should be adjudicated. This is ignored if the action is run as part of a pipeline. In that case, the pipeline adjudication property is honored.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="service" type="xsd:string" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                     <xsd:documentation>Optional setting to override the service that is acted on</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="process-type" type="xsd:string" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                     <xsd:documentation>Optional setting to override the process-type that is acted on</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="properties" type="loc-metadata:propertiesType">
                <xsd:annotation>
                     <xsd:documentation>Properties used to initialize the action. Meanings of properties are action specific.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- jmxActionConfigurationType -->
    <xsd:complexType name="jmxActionConfigurationType">
        <xsd:annotation>
            <xsd:documentation>A JMX action definition used for configuration of a managed instance.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The name of this action. This must be unique across all actions
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="key" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The key of this action. This is referenced by constraint bindings and pipeline definitions. This must be unique across all actions, but may be the same as the name.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
								<xsd:annotation>
										 <xsd:documentation>A description of this action
										 </xsd:documentation>
								</xsd:annotation>
            </xsd:element>
            <xsd:element name="adjudicate" type="xsd:boolean" default="true">
                <xsd:annotation>
                     <xsd:documentation>Defines whether this action should be adjudicated. This is ignored if the action is run as part of a pipeline. In that case, the pipeline adjudication property is honored.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="properties" type="loc-metadata:propertiesType">
                <xsd:annotation>
                     <xsd:documentation>Properties used to initialize the action. Meanings of properties are action specific.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="connection-info-name" type="xsd:string" minOccurs="1" maxOccurs="1">
                <xsd:annotation>
                     <xsd:documentation>This is a reference to a connectionInfoType which provides information required to establish the JMX client to connect to the managed instance.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="commands" type="loc-metadata:jmxCommandsType">
                <xsd:annotation>
                     <xsd:documentation>A set of JMX operations that will be executed on the managed instance when this action is run.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- actionsConfigurationType -->
    <xsd:complexType name="actionsConfigurationType">
        <xsd:annotation>
            <xsd:documentation>A collection of action definitions used in this loc instance.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:choice minOccurs="0"  maxOccurs="unbounded">
            <xsd:element name="action" type="loc-metadata:actionConfigurationType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                     <xsd:documentation>A standard action
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="jmx-action" type="loc-metadata:jmxActionConfigurationType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                     <xsd:documentation>A JMX action. These are used to configure managed instances.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:choice>
    </xsd:complexType>

    <!-- adjudicatorConfigurationType -->
    <xsd:complexType name="adjudicatorConfigurationType">
        <xsd:annotation>
            <xsd:documentation>A user defined adjudicator. This is not used in V1 of LOC.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>the name of the adjudicator
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="impl-class" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The implementation class of the adjudicator. An instance of this class is created to handle adjudication of actions and pipelines. The class must have a default constructor and must implement com.bea.adaptive.loc.controller.adjudication.api.AdjudicationHandler
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of the adjudicator
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="properties" type="loc-metadata:propertiesType">
                <xsd:annotation>
                     <xsd:documentation>A set of properties used to initialize the adjudicator instance.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- propertyType -->
    <xsd:complexType name="propertyType">
        <xsd:annotation>
            <xsd:documentation>Properties are used in action and notification definitions.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this property
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="type" type="xsd:string" minOccurs="0" >
                <xsd:annotation>
                     <xsd:documentation>A class name that the property will be coerced to. By default, java.lang.String is used. The type must have a constructor that takes a single string argument. The value of this property will be passed to that constructor to create an instance of the property value.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                     <xsd:documentation>The property value. This may be coerced to a specific type at runtime.
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- propertiesType -->
    <xsd:complexType name="propertiesType">
        <xsd:annotation>
            <xsd:documentation>Properties are used in action and notification definitions.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="property" type="loc-metadata:propertyType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A property for an action or notification definition.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- variableType -->
    <xsd:complexType name="variableType">
        <xsd:annotation>
            <xsd:documentation>Variables are used for substitutions in jvm definitions
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>The name of the variable
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="description" type="xsd:string" minOccurs="0">
                <xsd:annotation>
                     <xsd:documentation>A description of this variable
                     </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:choice>
                <xsd:element name="value" type="xsd:string">
                    <xsd:annotation>
                         <xsd:documentation>A scalar value.
                         </xsd:documentation>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element name="values" type="loc-metadata:valuesType">
                    <xsd:annotation>
                        <xsd:documentation>An array of values
                        </xsd:documentation>
                    </xsd:annotation>
                </xsd:element>
            </xsd:choice>
        </xsd:sequence>
    </xsd:complexType>

    <!-- variablesType -->
    <xsd:complexType name="variablesType">
        <xsd:annotation>
            <xsd:documentation>Variables are used in action and notification definitions.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="variable" type="loc-metadata:variableType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A variable for an action or notification definition.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- valuesType -->
    <xsd:complexType name="valuesType">
        <xsd:annotation>
            <xsd:documentation>Used to define an array of values in a variable
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="value" type="xsd:string" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>The value of an array element
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>


    <!-- fileCopyType -->
    <xsd:complexType name="fileCopyType">
        <xsd:annotation>
            <xsd:documentation>Defines a single file or directory copy
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="from" type="xsd:string" minOccurs="1" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>The source file or directory</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="to" type="xsd:string" minOccurs="1" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>The destination where the source file or directory will be copied to</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- fileCopiesType -->
    <xsd:complexType name="fileCopiesType">
        <xsd:annotation>
            <xsd:documentation>Defines copies to be made when an instance is being initialized.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="copy" type="loc-metadata:fileCopyType" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>A single file or directory copy</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>



</xsd:schema>
