<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (C) 2000 - 2024 Silverpeas This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. As a special exception to the terms and conditions of version 3.0 of the GPL, you may redistribute this Program in connection with Free/Libre Open Source Software ("FLOSS") applications as described in Silverpeas's FLOSS exception. You should have received a copy of the text describing the FLOSS exception, and it is also available here: "https://www.silverpeas.org/legal/floss_exception.html" This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <!-- .......................................... DEFINITION DE MODÈLE DE PROCEDURE --> <xs:element name="processModel"> <xs:complexType> <xs:sequence> <xs:element ref="label" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="description" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="roles"/> <xs:element ref="presentation" minOccurs="0"/> <xs:element ref="participants" minOccurs="0"/> <xs:element ref="states"/> <xs:element ref="actions" minOccurs="0"/> <xs:element ref="userInfos" minOccurs="0" /> <xs:element ref="dataFolder"/> <xs:element ref="forms" minOccurs="0"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> </xs:complexType> </xs:element> <!-- ................................................................. DEFINITION D'UN ROLE --> <xs:element name="role"> <xs:complexType> <xs:sequence> <xs:element ref="label" maxOccurs="unbounded"/> <xs:element ref="description" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:ID" use="required"/> </xs:complexType> </xs:element> <!-- ................................................................. DEFINITION D'UN PARTICIPANT --> <xs:element name="participant"> <xs:complexType> <xs:sequence> <xs:element ref="label" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="description" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:ID" use="required"/> <xs:attribute name="resolvedState" type="xs:IDREF"/> </xs:complexType> </xs:element> <!-- ................................................................. DEFINITION D'UNE ACTION --> <xs:element name="action"> <xs:complexType> <xs:sequence> <xs:element ref="label" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="description" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="allowedUsers" minOccurs="0"/> <xs:element ref="consequences" minOccurs="0"/> </xs:sequence> <xs:attribute name="name" type="xs:ID" use="required"/> <xs:attribute name="form" type="xs:string" use="optional"/> <!-- can't use IDREF, no ID in form --> <xs:attribute name="kind" type="xs:string" default="update"/> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UN LABEL --> <xs:element name="label"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="lang" type="xs:string" default="default"/> <xs:attribute name="role" type="xs:string" default="default"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UNE ACTIVITE--> <xs:element name="activity"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="lang" type="xs:string" default="default"/> <xs:attribute name="role" type="xs:string" default="default"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UNE DESCRIPTION--> <xs:element name="description"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="lang" type="xs:string" default="default"/> <xs:attribute name="role" type="xs:string" default="default"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UN TITRE--> <xs:element name="title"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="lang" type="xs:string" default="default"/> <xs:attribute name="role" type="xs:string" default="default"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UN ETAT --> <xs:element name="state"> <xs:complexType> <xs:sequence> <xs:element ref="label" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="activity" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="description" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="workingUsers" minOccurs="0"/> <xs:element ref="interestedUsers" minOccurs="0"/> <xs:element ref="allowedActions" minOccurs="0"/> <xs:element ref="preconditions" minOccurs="0"/> <xs:element ref="timeOutActions" minOccurs="0"/> </xs:sequence> <xs:attribute name="name" type="xs:ID" use="required"/> <xs:attribute name="timeoutInterval" type="xs:integer"/> <xs:attribute name="timeoutNotifyAdmin" type="xs:boolean" default="false"/> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UN FORMULAIRE --> <xs:element name="form"> <xs:complexType> <xs:sequence> <xs:element ref="title" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="input" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element ref="label" minOccurs="0"/> </xs:sequence> <xs:attribute name="item" type="xs:IDREF"/> <xs:attribute name="value" type="xs:string"/> <xs:attribute name="readonly" type="xs:boolean" default="false"/> <xs:attribute name="displayerName" type="xs:string"/> <xs:attribute name="mandatory" type="xs:boolean" default="false"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> <!-- name is not an id (not solenly) --> <xs:attribute name="role" type="xs:IDREFS"/> <xs:attribute name="HTMLFileName" type="xs:string"/> </xs:complexType> </xs:element> <!-- ........................................................... DEFINITION DES DONNEES UTILISATEUR --> <xs:element name="userInfos"> <xs:complexType> <xs:sequence> <xs:element ref="item" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UN DOSSIER --> <xs:element name="dataFolder"> <xs:complexType> <xs:sequence> <xs:element ref="item" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UN ITEM --> <xs:element name="formula" type="xs:string"/> <xs:element name="readonly" type="xs:boolean"/> <xs:element name="type" type="xs:string"/> <xs:element name="item"> <xs:complexType> <xs:sequence> <xs:element ref="label" minOccurs="0"/> <xs:element ref="description" minOccurs="0"/> <xs:element ref="type" minOccurs="0"/> <xs:element ref="readonly" minOccurs="0"/> <xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="formula" minOccurs="0"/> </xs:sequence> <xs:attribute name="name" type="xs:ID" use="required"/> <xs:attribute name="computed" type="xs:boolean" default="false"/> <xs:attribute name="mapTo" type="xs:IDREF"/> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UN PARAMETRE --> <xs:element name="param"> <xs:complexType> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="value" type="xs:string" use="required"/> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION DES IMPACTS --> <xs:element name="consequences"> <xs:complexType> <xs:sequence> <xs:element ref="consequence" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="kill" type="xs:boolean"/> <xs:element name="consequence"> <xs:complexType> <xs:sequence> <xs:element ref="kill" minOccurs="0"/> <xs:choice maxOccurs="unbounded"> <xs:element name="set"> <xs:complexType> <xs:attribute name="state" type="xs:IDREF" use="required"/> </xs:complexType> </xs:element> <xs:element name="unset"> <xs:complexType> <xs:attribute name="state" type="xs:IDREF" use="required"/> </xs:complexType> </xs:element> <xs:element ref="notifiedUsers" minOccurs="0"/> </xs:choice> <xs:element ref="notify" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="triggers" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="item" type="xs:IDREF" /> <xs:attribute name="operator" type="xs:string"/> <xs:attribute name="value" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="triggers"> <xs:complexType> <xs:sequence> <xs:element ref="trigger" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="trigger"> <xs:complexType> <xs:sequence> <xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:string" /> <xs:attribute name="handler" type="xs:string" /> </xs:complexType> </xs:element> <xs:element name="notify"> <xs:complexType> <xs:sequence> <xs:element ref="relatedUser" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="userInRole" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="message" type="xs:string" /> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION DES UTILISATEURS CALCULES --> <xs:element name="relatedUser"> <xs:complexType> <xs:attribute name="participant" type="xs:IDREF" use="optional"/> <xs:attribute name="folderItem" type="xs:IDREF" use="optional"/> <xs:attribute name="relation" type="xs:IDREF" use="optional"/> <xs:attribute name="role" type="xs:IDREF" use="required"/> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION DES UTILISATEURS NOTIFIES --> <xs:element name="notifiedUsers"> <xs:complexType> <xs:sequence> <xs:element ref="relatedUser" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="message" type="xs:string"/> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION DES UTILISATEURS AFFECTES --> <xs:element name="workingUsers"> <xs:complexType> <xs:sequence> <xs:element ref="relatedUser" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="userInRole" minOccurs="0" maxOccurs="unbounded"/> <!-- plusieurs possible --> </xs:sequence> <xs:attribute name="role" type="xs:string" /> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION DES UTILISATEURS IMPACTES --> <xs:element name="interestedUsers"> <xs:complexType> <xs:sequence> <xs:element ref="relatedUser" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="userInRole" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="role" type="xs:string"/> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION D'UNE PRESENTATION --> <xs:element name="presentation"> <xs:complexType> <xs:sequence> <xs:element ref="title" maxOccurs="unbounded"/> <xs:element ref="columns" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <!-- ...................................................................... DEFINITION DES PRE-REQUIS A UNE ACTION --> <xs:element name="preconditions"> <xs:complexType/> </xs:element> <!-- ...................................... DEFINITION D'UNE LISTE DE PERSONNES AYANT UN ROLE DONNE --> <xs:element name="userInRole"> <xs:complexType> <xs:attribute name="name" type="xs:IDREF" use="required"/> </xs:complexType> </xs:element> <!-- .................................................... DEFINITION D'UNE LISTE D'ETATS --> <xs:element name="states"> <xs:complexType> <xs:sequence> <xs:element ref="state" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <!-- .................................................... DEFINITION D'UNE LISTE DE PARTICIPANTS --> <xs:element name="participants"> <xs:complexType> <xs:sequence> <xs:element ref="participant" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <!-- .................................................... DEFINITION D'UNE LISTE DE COLONNES --> <xs:element name="columns"> <xs:complexType> <xs:sequence> <xs:element name="column" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="item" type="xs:IDREF" use="required"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="role" type="xs:string" use="optional"/> </xs:complexType> </xs:element> <!-- .................................................... DEFINITION D'UNE LISTE DE FORMULAIRES --> <xs:element name="forms"> <xs:complexType> <xs:sequence> <xs:element ref="form" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <!-- .................................................... DEFINITION D'UNE LISTE D'ACTIONS AUTORISEES --> <xs:element name="roles"> <xs:complexType> <xs:sequence> <xs:element ref="role" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <!-- .................................................... DEFINITION D'UNE LISTE D'ACTIONS --> <xs:element name="actions"> <xs:complexType> <xs:sequence> <xs:element ref="action" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <!-- .................................................... DEFINITION D'UNE LISTE D'ACTIONS AUTORISEES --> <xs:element name="allowedActions"> <xs:complexType> <xs:sequence> <xs:element name="allow" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="action" type="xs:IDREF" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <!-- .................................................... DEFINITION D'UNE LISTE D'ACTIONS RETARDEES --> <xs:element name="timeOutActions"> <xs:complexType> <xs:sequence> <xs:element name="timeOutAction" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="action" type="xs:IDREF" use="required"/> <xs:attribute name="delay" type="xs:string" use="required"/> <xs:attribute name="order" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <!-- .................................................... DEFINITION D'UNE LISTE DUTILISATEURS AUTORISES --> <xs:element name="allowedUsers"> <xs:complexType> <xs:sequence> <xs:element ref="relatedUser" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="userInRole" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>