<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:www.percussion.com/6.0.0/systemServices" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:com="urn:www.percussion.com/6.0.0/common" xmlns:syss="urn:www.percussion.com/6.0.0/systemServices" elementFormDefault="qualified" attributeFormDefault="unqualified">
   <xsd:import namespace="urn:www.percussion.com/6.0.0/common" schemaLocation="common.xsd"/>
   <xsd:complexType name="Transition">
      <xsd:complexContent>
         <xsd:extension base="com:DesignObject">
            <xsd:sequence>
               <xsd:element name="Notifications" minOccurs="0">
                  <xsd:complexType>
                     <xsd:sequence>
                        <xsd:element ref="syss:PSNotification" maxOccurs="unbounded"/>
                     </xsd:sequence>
                  </xsd:complexType>
               </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="label" type="xsd:string" use="required">
               <xsd:annotation>
                  <xsd:documentation>
                     The display label for this transition.
                  </xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="trigger" type="xsd:string" use="required">
               <xsd:annotation>
                  <xsd:documentation>
                     The transition trigger expected for this transition.
                  </xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="fromState" type="xsd:string" use="required">
               <xsd:annotation>
                  <xsd:documentation>
                     The name of the state from which this transition starts.
                  </xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="toState" type="xsd:string" use="required">
               <xsd:annotation>
                  <xsd:documentation>
                     The name of the state to which this transition leads.
                  </xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="transitionAction" type="xsd:string" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
                     The fulliy qualified name or the workflow action to execute
                     with this transition.
                  </xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:element name="PSAgingTransition">
      <xsd:complexType>
         <xsd:complexContent>
            <xsd:extension base="syss:Transition">
               <xsd:attribute name="type" default="absolute">
                  <xsd:annotation>
                     <xsd:documentation>The aging type, one of absolut, repeated or systemField.</xsd:documentation>
                  </xsd:annotation>
                  <xsd:simpleType>
                     <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="absolute"/>
                        <xsd:enumeration value="repeated"/>
                        <xsd:enumeration value="systemField"/>
                     </xsd:restriction>
                  </xsd:simpleType>
               </xsd:attribute>
               <xsd:attribute name="interval" type="xsd:long">
                  <xsd:annotation>
                     <xsd:documentation>The aging interval time in minutes. Required for types absolut and repeated.</xsd:documentation>
                  </xsd:annotation>
               </xsd:attribute>
               <xsd:attribute name="systemField" type="xsd:string">
                  <xsd:annotation>
                     <xsd:documentation>The system field from where to get the aging time, required if type is systemField.</xsd:documentation>
                  </xsd:annotation>
               </xsd:attribute>
            </xsd:extension>
         </xsd:complexContent>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="PSAssignedRole">
      <xsd:annotation>
         <xsd:documentation>A list of assigned state roles.</xsd:documentation>
      </xsd:annotation>
      <xsd:complexType>
         <xsd:attribute name="id" type="com:Id" use="required">
            <xsd:annotation>
               <xsd:documentation>The id of the workflow role assigned.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
         <xsd:attribute name="name" type="xsd:string" use="required">
            <xsd:annotation>
               <xsd:documentation>The name of the assigned role.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
         <xsd:attribute name="assignmentType" default="none">
            <xsd:annotation>
               <xsd:documentation>The assignment type for this role.</xsd:documentation>
            </xsd:annotation>
            <xsd:simpleType>
               <xsd:restriction base="xsd:string">
                  <xsd:enumeration value="none"/>
                  <xsd:enumeration value="reader"/>
                  <xsd:enumeration value="assignee"/>
               </xsd:restriction>
            </xsd:simpleType>
         </xsd:attribute>
         <xsd:attribute name="adhocType" default="disabled">
            <xsd:annotation>
               <xsd:documentation>The adhoc assignment type.</xsd:documentation>
            </xsd:annotation>
            <xsd:simpleType>
               <xsd:restriction base="xsd:string">
                  <xsd:enumeration value="disabled"/>
                  <xsd:enumeration value="enabled"/>
                  <xsd:enumeration value="anonymous"/>
               </xsd:restriction>
            </xsd:simpleType>
         </xsd:attribute>
         <xsd:attribute name="doNotify" type="xsd:boolean" default="true">
            <xsd:annotation>
               <xsd:documentation>Specifies whether to notify this assigned role or not.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
         <xsd:attribute name="showInInbox" type="xsd:boolean" default="true">
            <xsd:annotation>
               <xsd:documentation>Specifies whether or not to show items in this state in the in-box.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="PSNotification">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="Recipients" minOccurs="0">
               <xsd:annotation>
                  <xsd:documentation>Additional recipients.</xsd:documentation>
               </xsd:annotation>
               <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element ref="syss:PSRecipient" maxOccurs="unbounded"/>
                  </xsd:sequence>
               </xsd:complexType>
            </xsd:element>
            <xsd:element name="CCRecipients" minOccurs="0">
               <xsd:annotation>
                  <xsd:documentation>Additional CC recipients.</xsd:documentation>
               </xsd:annotation>
               <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element ref="syss:PSRecipient" maxOccurs="unbounded"/>
                  </xsd:sequence>
               </xsd:complexType>
            </xsd:element>
         </xsd:sequence>
         <xsd:attribute name="id" type="com:Id" use="required">
            <xsd:annotation>
               <xsd:documentation>The id of the notification definition used for the subject, body etc.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
         <xsd:attribute name="stateRoleRecipientType" use="required">
            <xsd:annotation>
               <xsd:documentation>Defines which state recipients will be notified with this notification.</xsd:documentation>
            </xsd:annotation>
            <xsd:simpleType>
               <xsd:restriction base="xsd:string">
                  <xsd:enumeration value="noStateRecipients"/>
                  <xsd:enumeration value="toStateRecipients"/>
                  <xsd:enumeration value="fromStateRecipients"/>
                  <xsd:enumeration value="toAndFromStateRecipients"/>
               </xsd:restriction>
            </xsd:simpleType>
         </xsd:attribute>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="PSNotificationDef">
      <xsd:annotation>
         <xsd:documentation>A workflow notification definition.</xsd:documentation>
      </xsd:annotation>
      <xsd:complexType>
         <xsd:attribute name="id" type="com:Id" use="required">
            <xsd:annotation>
               <xsd:documentation>The id of the referenced notification.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
         <xsd:attribute name="subject" type="xsd:string" use="required">
            <xsd:annotation>
               <xsd:documentation>The subject text for this notification.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
         <xsd:attribute name="body" type="xsd:string" use="required">
            <xsd:annotation>
               <xsd:documentation>The body text for this notification.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
         <xsd:attribute name="description" type="xsd:string" use="optional">
            <xsd:annotation>
               <xsd:documentation>A description for this notification.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="PSRecipient" type="xsd:string">
      <xsd:annotation>
         <xsd:documentation>The recipients email address.</xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="PSState">
      <xsd:complexType>
         <xsd:complexContent>
            <xsd:extension base="com:DesignObject">
               <xsd:sequence>
                  <xsd:element name="Transitions" minOccurs="0">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="syss:PSTransition" maxOccurs="unbounded"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="AgingTransitions" minOccurs="0">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="syss:PSAgingTransition" maxOccurs="unbounded"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="AssignedRoles" minOccurs="0">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="syss:PSAssignedRole" maxOccurs="unbounded"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:sequence>
               <xsd:attribute name="name" type="xsd:string" use="required"/>
               <xsd:attribute name="sortOrder" type="xsd:int" default="0"/>
               <xsd:attribute name="isPublishable" type="xsd:boolean" default="false"/>
            </xsd:extension>
         </xsd:complexContent>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="PSTransition">
      <xsd:complexType>
         <xsd:complexContent>
            <xsd:extension base="syss:Transition">
               <xsd:sequence>
                  <xsd:element name="Roles" minOccurs="0">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="syss:PSWorkflowRole" maxOccurs="unbounded"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:sequence>
               <xsd:attribute name="comment" default="optional">
                  <xsd:simpleType>
                     <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="optional"/>
                        <xsd:enumeration value="required"/>
                        <xsd:enumeration value="doNotShow"/>
                     </xsd:restriction>
                  </xsd:simpleType>
               </xsd:attribute>
               <xsd:attribute name="defaultTransition" type="xsd:boolean" default="false"/>
               <xsd:attribute name="approvals" type="xsd:int" default="1"/>
               <xsd:attribute name="allowAllRoles" type="xsd:boolean" default="true"/>
            </xsd:extension>
         </xsd:complexContent>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="PSWorkflow">
      <xsd:annotation>
         <xsd:documentation>Describes a complete workflow definition.</xsd:documentation>
      </xsd:annotation>
      <xsd:complexType>
         <xsd:complexContent>
            <xsd:extension base="com:DesignObject">
               <xsd:sequence>
                  <xsd:element name="States" minOccurs="0">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="syss:PSState" maxOccurs="unbounded"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="Roles" minOccurs="0">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="syss:PSWorkflowRole" maxOccurs="unbounded"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="Notifications" minOccurs="0">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="syss:PSNotificationDef" maxOccurs="unbounded"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:sequence>
               <xsd:attribute name="name" type="xsd:string" use="required">
                  <xsd:annotation>
                     <xsd:documentation>The workflow name.</xsd:documentation>
                  </xsd:annotation>
               </xsd:attribute>
               <xsd:attribute name="administratorRole" type="xsd:string" use="required">
                  <xsd:annotation>
                     <xsd:documentation>The name of the role with administrator rights to this workflow.</xsd:documentation>
                  </xsd:annotation>
               </xsd:attribute>
               <xsd:attribute name="initialStateId" type="com:Id" use="required">
                  <xsd:annotation>
                     <xsd:documentation>The id of the workflow state into which each item will go first.</xsd:documentation>
                  </xsd:annotation>
               </xsd:attribute>
            </xsd:extension>
         </xsd:complexContent>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="PSWorkflowRole">
      <xsd:complexType>
         <xsd:attribute name="id" type="com:Id" use="required">
            <xsd:annotation>
               <xsd:documentation>The id of the referenced role.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
         <xsd:attribute name="name" type="xsd:string" use="required">
            <xsd:annotation>
               <xsd:documentation>The name of the referenced role.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
         <xsd:attribute name="description" type="xsd:string" use="optional">
            <xsd:annotation>
               <xsd:documentation>The description for the referenced role.</xsd:documentation>
            </xsd:annotation>
         </xsd:attribute>
      </xsd:complexType>
   </xsd:element>
</xsd:schema>
