Browse Source

Update XSDs for branch feature/ci-publish-xsd - Build 6

feature/ci-publish-xsd
Jenkins CI 1 day ago
commit
b8be6e73b7
19 changed files with 5271 additions and 0 deletions
  1. +105
    -0
      vitruvio-base-form.xsd
  2. +270
    -0
      vitruvio-form-basic-components.xsd
  3. +1029
    -0
      vitruvio-form-common-attrs.xsd
  4. +543
    -0
      vitruvio-form-containers.xsd
  5. +619
    -0
      vitruvio-form-db-components.xsd
  6. +57
    -0
      vitruvio-form-field-events.xsd
  7. +35
    -0
      vitruvio-form-field-validators.xsd
  8. +34
    -0
      vitruvio-form-script-components.xsd
  9. +62
    -0
      vitruvio-form-scripting.xsd
  10. +152
    -0
      vitruvio-form-specific-components.xsd
  11. +1057
    -0
      vitruvio-form-widgets.xsd
  12. +85
    -0
      vitruvio-form.xsd
  13. +402
    -0
      vitruvio-mobile-base-form.xsd
  14. +163
    -0
      vitruvio-mobile-form.xsd
  15. +35
    -0
      vitruvio-mobile-panel-form.xsd
  16. +106
    -0
      vitruvio-mobile-widgets.xsd
  17. +33
    -0
      vitruvio-panel-form.xsd
  18. +72
    -0
      vitruvio-report-form.xsd
  19. +412
    -0
      vitruvio-subform-base.xsd

+ 105
- 0
vitruvio-base-form.xsd View File

@ -0,0 +1,105 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<!-- Componentes padrao -->
<xs:include schemaLocation="vitruvio-form-basic-components.xsd" />
<!-- Componentes para uso com bancos de dados -->
<xs:include schemaLocation="vitruvio-form-db-components.xsd" />
<!-- Componentes especificos ao contexto da aplicacao -->
<xs:include schemaLocation="vitruvio-form-specific-components.xsd" />
<!-- Form containers -->
<xs:include schemaLocation="vitruvio-form-containers.xsd" />
<!-- Scripting defs -->
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Suporte a Widgets -->
<xs:include schemaLocation="vitruvio-form-widgets.xsd" />
<!-- Base Form para implementacoes especificas -->
<xs:complexType name="form-definition">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="formKey" type="xs:string" use="required" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="windowWidth" type="xs:string" />
<xs:attribute name="windowHeight" type="xs:string" />
<xs:attribute name="backgroundColor" type="xs:string" />
<xs:attribute name="customCss" type="xs:string" />
<xs:attribute name="composer" type="xs:string" />
<xs:attribute name="debugMode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="OFF" />
<xs:enumeration value="ALL" />
<xs:enumeration value="RENDER" />
<xs:enumeration value="INIT_SCRIPTS" />
<xs:enumeration value="FORM_LOAD" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="debugOutput">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="UI_MESSAGEBOX" />
<xs:enumeration value="UI_DEBUG" />
<xs:enumeration value="DATABASE" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="debugFormat">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="HTML" />
<xs:enumeration value="FORMATED_TEXT" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<!-- Subformularios que podem ser anexados dentro de Forms RAIZ (ROOT) -->
<xs:complexType name="vitruvio-base-form">
<xs:complexContent>
<xs:extension base="form-definition">
<xs:sequence>
<xs:element name="afterFormRenderScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="preInitScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="components" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="Panel" type="Panel" />
<xs:element name="TabLayout" type="TabLayout" />
<xs:element name="AbsoluteLayout" type="AbsoluteLayout" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>

+ 270
- 0
vitruvio-form-basic-components.xsd View File

@ -0,0 +1,270 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!--
Componentes basicos para uso nos formularios do Vitruvio
-->
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<xs:include schemaLocation="vitruvio-form-field-validators.xsd" />
<xs:include schemaLocation="vitruvio-form-field-events.xsd" />
<!-- Container de dados para campos de selecao com entradas predefinidas -->
<xs:complexType name="entry">
<xs:attribute name="key" type="xs:string" />
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
<!-- Definicao de elementos para campos -->
<xs:complexType name="Label">
<xs:choice>
<xs:element name="value" />
<xs:element name="formValue">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="valueWhenNull" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attributeGroup ref="basicFieldAttrs" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="contentMode" default="PLAIN_TEXT">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="PLAIN_TEXT"/>
<xs:enumeration value="PRE_FORMATED"/>
<xs:enumeration value="HTML"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="expandRatio" type="xs:decimal" />
</xs:complexType>
<xs:complexType name="Ativo">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="textFieldEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
</xs:complexType>
<xs:complexType name="TextField">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="textFieldEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="sizeBasedFieldAttrs" />
<xs:attributeGroup ref="textFieldAttrs" />
<xs:attribute name="multivalue" type="xs:boolean" />
<xs:attribute name="allowDuplicate" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="PasswordField">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="textFieldEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="sizeBasedFieldAttrs" />
<xs:attributeGroup ref="textFieldAttrs" />
</xs:complexType>
<xs:complexType name="TextArea">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="textFieldEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="sizeBasedFieldAttrs"/>
<xs:attributeGroup ref="fieldAttrs"/>
<xs:attributeGroup ref="textFieldAttrs" />
<xs:attribute name="rows" type="xs:positiveInteger" />
<xs:attribute name="showCount" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="RichTextArea">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="sizeBasedFieldAttrs" />
</xs:complexType>
<xs:complexType name="NumericField">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="textFieldEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="sizeBasedFieldAttrs" />
<xs:attributeGroup ref="textFieldAttrs" />
<xs:attributeGroup ref="numericTextFieldAttrs" />
</xs:complexType>
<xs:complexType name="DecimalField">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="textFieldEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="sizeBasedFieldAttrs" />
<xs:attributeGroup ref="textFieldAttrs" />
<xs:attributeGroup ref="numericTextFieldAttrs" />
<xs:attribute name="format" type="xs:string"/>
<xs:attribute name="decimalSeparator" type="xs:string"/>
<xs:attribute name="groupingSeparator" type="xs:string"/>
<xs:attribute name="selectTextOnFocus" type="xs:boolean"/>
<xs:attribute name="currencyField" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="MaskedField">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element name="prefixed-masks">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="value">
<xs:complexType>
<xs:attribute name="prefix" type="xs:string" use="required" />
<xs:attribute name="mask" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="events" type="textFieldEvents" minOccurs="0" maxOccurs="1" />
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="sizeBasedFieldAttrs" />
<xs:attributeGroup ref="textFieldAttrs" />
<xs:attribute name="mask" type="xs:string" use="required" />
<xs:attribute name="preservMask" type="xs:boolean" />
<xs:attribute name="adaptForMobileBrowser" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="DateField">
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attribute name="format" type="xs:string"/>
<xs:attribute name="resolution">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="MINUTE"/>
<xs:enumeration value="HOUR"/>
<xs:enumeration value="DAY"/>
<xs:enumeration value="MONTH"/>
<xs:enumeration value="YEAR"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="ComboBox">
<xs:sequence>
<xs:element name="entry" type="entry" minOccurs="1" maxOccurs="unbounded" />
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="selectFieldAttr" />
</xs:complexType>
<xs:complexType name="ListSelect">
<xs:sequence>
<xs:element name="entry" type="entry" minOccurs="1" maxOccurs="unbounded" />
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="selectFieldAttr" />
<xs:attribute name="rows" type="xs:positiveInteger" />
</xs:complexType>
<xs:complexType name="OptionGroup">
<xs:sequence>
<xs:element name="entry" type="entry" minOccurs="1" maxOccurs="unbounded" />
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="selectFieldAttr" />
<xs:attributeGroup ref="companyDefinitionAttrs" />
<xs:attribute name="disposition" default="horizontal">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="horizontal"/>
<xs:enumeration value="vertical"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="CheckBox">
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="valueOverride" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="forTrue" type="xs:string" use="required" />
<xs:attribute name="forFalse" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="basicFieldAttrs" />
<xs:attribute name="expandRatio" type="xs:decimal" />
<xs:attribute name="initialValue" type="xs:boolean" />
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="boolean" />
<xs:enumeration value="string" />
<xs:enumeration value="number" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="size" default="SMALL">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SMALL"/>
<xs:enumeration value="MEDIUM"/>
<xs:enumeration value="LARGE" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="RatingStarsCaptions">
<xs:attribute name="value" type="xs:integer" use="required" />
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="RatingStars">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="captions">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="caption" type="RatingStarsCaptions" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="valueEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="decimalTypefieldAttrs" />
<xs:attribute name="maxValue" type="xs:positiveInteger" />
<xs:attribute name="animated" type="xs:boolean" />
<xs:attribute name="setProcessRating" type="xs:boolean" />
</xs:complexType>
</xs:schema>

+ 1029
- 0
vitruvio-form-common-attrs.xsd
File diff suppressed because it is too large
View File


+ 543
- 0
vitruvio-form-containers.xsd View File

@ -0,0 +1,543 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<!-- Componentes padrao -->
<xs:include schemaLocation="vitruvio-form-basic-components.xsd" />
<!-- Componentes para uso com bancos de dados -->
<xs:include schemaLocation="vitruvio-form-db-components.xsd" />
<!-- Componentes especificos ao contexto da aplicacao -->
<xs:include schemaLocation="vitruvio-form-specific-components.xsd" />
<!-- Componentes flexiveis, orientados a script -->
<xs:include schemaLocation="vitruvio-form-script-components.xsd" />
<!-- Suporte a Widgets -->
<xs:include schemaLocation="vitruvio-form-widgets.xsd" />
<!-- Parametros comuns nos layouts ordenados -->
<xs:attributeGroup name="layoutMandatoryAttr">
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="isLayout" fixed="true" />
<xs:attribute name="expandRatio" type="xs:decimal" />
<xs:attribute name="caption" use="optional" type="xs:string" />
<xs:attribute name="backgroundColor" use="optional" type="xs:string" />
<xs:attributeGroup ref="elementAlign" />
</xs:attributeGroup>
<xs:attributeGroup name="orderedLayoutAttr">
<xs:attribute name="margin" type="xs:boolean" default="false" />
<xs:attribute name="spacing" type="xs:boolean" default="false" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="visible" type="xs:boolean" />
</xs:attributeGroup>
<!-- Grupo de campos -->
<xs:group name="fieldGroup">
<xs:choice>
<!-- Components basicos -->
<xs:element name="Label" type="Label" />
<xs:element name="TextField" type="TextField" />
<xs:element name="Ativo" type="Ativo" />
<xs:element name="PasswordField" type="PasswordField" />
<xs:element name="TextArea" type="TextArea" />
<xs:element name="NumericField" type="NumericField" />
<xs:element name="DecimalField" type="DecimalField" />
<xs:element name="MaskedField" type="MaskedField" />
<xs:element name="DateField" type="DateField" />
<xs:element name="ComboBox" type="ComboBox" />
<xs:element name="ListSelect" type="ListSelect" />
<xs:element name="OptionGroup" type="OptionGroup" />
<xs:element name="CheckBox" type="CheckBox" />
<xs:element name="RichTextArea" type="RichTextArea" />
<xs:element name="RatingStars" type="RatingStars" />
<xs:element name="GoogleMapsField" type="GoogleMapsField" />
<!-- Componentes DB -->
<xs:element name="DBComboBox" type="DBComboBox" />
<xs:element name="DBSearchField" type="DBSearchField" />
<xs:element name="DBFilter" type="DBFilter" />
<xs:element name="DBTable" type="DBTable" />
<xs:element name="DBTwinColSelect" type="DBTwinColSelect" />
<xs:element name="DBPropertyField" type="DBPropertyField" />
<!-- Componentes Especificos -->
<xs:element name="UserField" type="UserField" />
<xs:element name="UserComboBox" type="UserComboBox" />
<xs:element name="RoleComboBox" type="RoleComboBox" />
<xs:element name="UserPropertyField" type="UserPropertyField" />
<xs:element name="ProcessInstanceIdField" type="ProcessInstanceIdField" />
<xs:element name="ContextDateTimeField" type="ContextDateTimeField" />
<xs:element name="MarcadorField" type="MarcadorField" />
<xs:element name="UserMultiSelect" type="UserMultiSelect" />
<xs:element name="RoleMultiSelect" type="RoleMultiSelect" />
<!-- Componentes via Script -->
<xs:element name="ScriptComboBox" type="ScriptComboBox" />
</xs:choice>
</xs:group>
<!-- Grupo de layouts -->
<xs:group name="layoutGroup">
<xs:choice>
<!-- Elementos visuais e containers -->
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="Panel" type="Panel" />
<xs:element name="ScrollPanel" type="ScrollPanel" />
<xs:element name="TabLayout" type="TabLayout" />
<xs:element name="LayoutGroup" type="LayoutGroup" />
<xs:element name="ComplexPanel" type="ComplexPanel" />
<xs:element name="AbsoluteLayout" type="AbsoluteLayout" />
<xs:element name="WindowLayout" type="WindowLayout" />
<xs:element name="CrudPanel" type="CrudPanel" />
<xs:element name="LegendInfo" type="LegendInfo" />
<xs:element name="Section" type="CrudSession" />
<xs:element name="DbTableFilter" type="DbTableFilter" />
</xs:choice>
</xs:group>
<!-- Definicao de elementos possiveis por padrao num container de componentes -->
<xs:group name="componentContainer">
<xs:choice>
<!-- Layouts -->
<xs:group ref="layoutGroup" />
<xs:element name="PopupButtonLayout" type="PopupButtonLayout" />
<!-- Componentes reutilizaveis da biblioteca -->
<xs:element name="ComplexComponent" type="LibraryComplexComponent" />
<xs:element name="FieldComponent" type="LibraryFieldComponent" />
<!-- Suporte a definicao de widgets -->
<xs:group ref="CoreWidgets" />
<xs:element name="CustomWidget" type="CustomWidget" />
<!-- Campos -->
<xs:group ref="fieldGroup" />
</xs:choice>
</xs:group>
<!-- Layouts -->
<xs:complexType name="VerticalLayout">
<xs:sequence>
<xs:group ref="componentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="layoutMandatoryAttr"/>
<xs:attributeGroup ref="orderedLayoutAttr"/>
</xs:complexType>
<xs:complexType name="HorizontalLayout">
<xs:sequence>
<xs:group ref="componentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="layoutMandatoryAttr"/>
<xs:attributeGroup ref="orderedLayoutAttr"/>
<xs:attribute name="wrapping" type="xs:boolean" />
</xs:complexType>
<!-- Tabs -->
<xs:complexType name="TabComponent">
<xs:sequence>
<xs:group ref="componentContainer" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="caption" type="xs:string" use="required" />
<xs:attribute name="visible" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="TabLayout">
<xs:sequence>
<xs:element name="TabChangeScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="Tab" type="TabComponent" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="framed" type="xs:boolean" />
<xs:attribute name="compact" type="xs:boolean" />
<xs:attribute name="centerTabs" type="xs:boolean" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attributeGroup ref="layoutMandatoryAttr"/>
</xs:complexType>
<xs:complexType name="LayoutGroup">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
</xs:choice>
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
</xs:complexType>
<xs:complexType name="BasePanel">
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="margin" type="xs:boolean" />
<xs:attribute name="expandRatio" type="xs:decimal" />
<xs:attribute name="backgroundColor" type="xs:string" use="optional" />
<xs:attribute name="visible" type="xs:boolean" />
<xs:attributeGroup ref="elementAlign" />
</xs:complexType>
<xs:complexType name="Panel">
<xs:complexContent>
<xs:extension base="BasePanel">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="AbsoluteLayout" type="AbsoluteLayout" />
<xs:element name="TabLayout" type="TabLayout" />
<xs:element name="CrudPanel" type="CrudPanel" />
<xs:element name="Section" type="CrudSession" />
<xs:element name="LegendInfo" type="LegendInfo" />
<xs:element name="ScriptWidget" type="ScriptWidget" />
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ScrollPanel">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="AbsoluteLayout" type="AbsoluteLayout" />
<xs:element name="TabLayout" type="TabLayout" />
</xs:choice>
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="expandRatio" type="xs:decimal" />
<xs:attribute name="visible" type="xs:boolean" />
<xs:attribute name="backgroundColor" type="xs:string" use="optional" />
</xs:complexType>
<xs:complexType name="WindowLayout">
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="AbsoluteLayout" type="AbsoluteLayout" />
<xs:element name="TabLayout" type="TabLayout" />
<xs:element name="CrudPanel" type="CrudPanel" />
<xs:element name="Section" type="CrudSession" />
<xs:element name="LegendInfo" type="LegendInfo" />
</xs:choice>
<xs:element name="Config" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="ControlButton" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="onClickScript" type="script" minOccurs="1" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="description" type="xs:string" />
<xs:attributeGroup ref="basicElement" />
<xs:attributeGroup ref="formButtonAttrs" />
</xs:complexType>
</xs:element>
<xs:element name="onChangeVisibilityScript" type="script" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="windowWidth" type="xs:string" />
<xs:attribute name="windowHeight" type="xs:string" />
<xs:attribute name="windowTitle" type="xs:string" />
<xs:attribute name="windowClosable" type="xs:boolean" />
<xs:attribute name="windowResizable" type="xs:boolean" />
<xs:attribute name="windowModal" type="xs:boolean" />
<xs:attributeGroup ref="layoutMandatoryAttr"/>
</xs:complexType>
<xs:complexType name="ComplexPanelActionItem">
<xs:sequence>
<xs:element name="clickScript" type="script" minOccurs="1" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
<xs:attributeGroup ref="font-awesome-icons" />
</xs:complexType>
<xs:complexType name="CrudSession">
<xs:sequence>
<xs:element name="Filter" type="CrudSessionFilter" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
</xs:choice>
</xs:sequence>
<xs:attribute name="subCaption" type="xs:string" />
<xs:attribute name="colorSeparator" type="xs:string" />
<xs:attribute name="subCaptionColor" type="xs:string" />
<xs:attribute name="captionColor" type="xs:string" />
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="showHeader" type="xs:boolean" />
<xs:attributeGroup ref="basicElement" />
<xs:attribute name="titleOrientation" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="HORIZONTAL" />
<xs:enumeration value="VERTICAL" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="CrudSessionFilter">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
</xs:choice>
</xs:complexType>
<xs:complexType name="DbTableFilter">
<xs:attribute name="dbtableId" type="xs:string" />
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
<xs:complexType name="LegendInfo">
<xs:attribute name="title" type="xs:string" />
<xs:attribute name="message" type="xs:string" />
<xs:attribute name="type" use="required" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="GRAY" />
<xs:enumeration value="GREEN" />
<xs:enumeration value="YELLOW" />
<xs:enumeration value="RED" />
<xs:enumeration value="BLUE" />
<xs:enumeration value="PURPLE" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="orderedLayoutAttr"></xs:attributeGroup>
<xs:attributeGroup ref="layoutMandatoryAttr"></xs:attributeGroup>
</xs:complexType>
<xs:complexType name="CrudPanel">
<xs:sequence>
<xs:element name="BackGroundImage" type="ResourceLibraryDataSource" minOccurs="0" maxOccurs="1" />
<xs:element name="Header" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="1" minOccurs="0">
<xs:element name="Caption"/>
<xs:element name="htmlCaption" />
</xs:choice>
<xs:choice maxOccurs="1" minOccurs="0">
<xs:element name="SubCaption"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="align" use="optional" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="TOP_RIGHT" />
<xs:enumeration value="TOP_LEFT" />
<xs:enumeration value="TOP_CENTER" />
<xs:enumeration value="MIDDLE_RIGHT" />
<xs:enumeration value="MIDDLE_LEFT" />
<xs:enumeration value="MIDDLE_CENTER" />
<xs:enumeration value="BOTTOM_RIGHT" />
<xs:enumeration value="BOTTOM_LEFT" />
<xs:enumeration value="BOTTOM_CENTER" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="colorSeparator" use="optional" type="xs:string" />
<xs:attribute name="subCaptionColor" use="optional" type="xs:string" />
<xs:attribute name="captionColor" use="optional" type="xs:string" />
<xs:attribute name="backgroundColor" use="optional" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="Section" type="CrudSession" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attributeGroup ref="orderedLayoutAttr"></xs:attributeGroup>
<xs:attributeGroup ref="layoutMandatoryAttr"></xs:attributeGroup>
</xs:complexType>
<xs:complexType name="ComplexPanel">
<xs:complexContent>
<xs:extension base="BasePanel">
<xs:sequence>
<xs:element name="Config" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="1" minOccurs="0">
<xs:element name="caption"/>
<xs:element name="htmlCaption" />
</xs:choice>
<xs:element name="buttons" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="button" type="ComplexPanelActionItem" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="menu" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="item" type="ComplexPanelActionItem" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
</xs:choice>
</xs:sequence>
<xs:attribute name="captionSize" use="optional" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="LIGHT" />
<xs:enumeration value="H4" />
<xs:enumeration value="H3" />
<xs:enumeration value="H2" />
<xs:enumeration value="H1" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Poupup Layout -->
<xs:complexType name="PopupButtonLayoutFilterTemplate">
<xs:sequence>
<xs:element name="SearchButton" type="ButtonWidget" minOccurs="1" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="renderCloseButton" type="xs:boolean" />
<xs:attribute name="keepDefaultButtonStyle" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="PopupButtonLayoutEvents">
<xs:all>
<xs:element name="onPopupShow" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="onPopupHide" type="script" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="PopupButtonBaseLayout">
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="visible" type="xs:boolean" />
<xs:attribute name="description" type="xs:string" />
<xs:attribute name="closePopupOnOutsideClick" type="xs:boolean" />
<xs:attributeGroup ref="layoutMandatoryAttr"/>
</xs:complexType>
<xs:complexType name="PopupButtonLayout">
<xs:complexContent>
<xs:extension base="PopupButtonBaseLayout">
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="AbsoluteLayout" type="AbsoluteLayout" />
<xs:element name="TabLayout" type="TabLayout" />
</xs:choice>
<xs:element name="Template" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:choice>
<xs:element name="Filter" type="PopupButtonLayoutFilterTemplate" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="events" type="PopupButtonLayoutEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="AbsoluteBaseLayout">
<xs:attribute name="dragAndDropEnabled" type="xs:boolean" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attributeGroup ref="layoutMandatoryAttr"/>
</xs:complexType>
<xs:complexType name="AbsoluteLayout">
<xs:complexContent>
<xs:extension base="AbsoluteBaseLayout">
<xs:sequence>
<xs:group ref="componentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- BIBLIOTECA DE ELEMENTOS -->
<!-- Definicao de um componente da biblioteca -->
<xs:complexType name="complex-component">
<xs:sequence>
<!-- <xs:group ref="layoutGroup" minOccurs="0" maxOccurs="1"/> -->
<xs:any processContents="skip" minOccurs="1" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="field-component">
<xs:sequence>
<xs:group ref="fieldGroup" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
<!-- Definicao de uma biblitoeca de componentes, para reuso na aplicacao -->
<xs:complexType name="library">
<xs:sequence>
<xs:element name="complex-component" type="complex-component" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="field-component" type="field-component" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- Elemento pare referenciar um item complexo da biblioteca -->
<xs:complexType name="LibraryComplexComponent">
<xs:attribute name="ref" type="xs:string" use="required" />
</xs:complexType>
<!-- Elemento para referenciar um campo especifico da biblioteca, com a possibilidade de sobrescrever seus atributos -->
<xs:complexType name="LibraryFieldComponent">
<xs:attribute name="ref" type="xs:string" use="required" />
<xs:anyAttribute processContents="skip" />
</xs:complexType>
<!-- Elementos para lidar com anexos dos processos -->
<xs:complexType name="FormAttachments">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="attachment">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="allowed-mimetypes">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="value" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="description" type="xs:string" use="required" />
<xs:attribute name="required" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="allowUndefinedAttachments" type="xs:boolean" />
</xs:complexType>
</xs:schema>

+ 619
- 0
vitruvio-form-db-components.xsd View File

@ -0,0 +1,619 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<xs:include schemaLocation="vitruvio-form-field-validators.xsd" />
<xs:include schemaLocation="vitruvio-form-field-events.xsd" />
<!--
Componentes com datasources sql
-->
<!-- Datasource para uso de Querys Livres, com Input local -->
<xs:complexType name="freeDataSource">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="connection-key" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Datasource para uso de Querys mapeadas pre cadastradas no Vitruvio -->
<xs:complexType name="queryDataSource">
<xs:attribute name="key" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="sqlBuilderScript">
<xs:complexContent>
<xs:extension base="base-script">
<xs:attribute name="connection-key" type="xs:string" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:attributeGroup name="value-caption-attrs">
<xs:attribute name="key-field" use="required" type="xs:string" />
<xs:attribute name="caption-field" type="xs:string" />
</xs:attributeGroup>
<!-- Datasource comum aos objetos DB -->
<xs:attributeGroup name="datasource-basic-attrs">
<xs:attribute name="pagination-strategy">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SUB_QUERY_COUNT" />
<xs:enumeration value="IN_MEMORY" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="fetchSize" type="xs:positiveInteger" use="optional" />
<xs:attribute name="maxFetchSize" type="xs:positiveInteger" use="optional" />
</xs:attributeGroup>
<xs:complexType name="datasource">
<xs:choice>
<xs:element name="freeQuery" type="freeDataSource" />
<xs:element name="query" type="queryDataSource" />
</xs:choice>
<xs:attributeGroup ref="datasource-basic-attrs" />
</xs:complexType>
<!-- SQLBuilder DataSource -->
<xs:complexType name="datasource-with-builder">
<xs:choice>
<xs:element name="freeQuery" type="freeDataSource" />
<xs:element name="query" type="queryDataSource" />
<xs:element name="sqlBuilderDataSource" type="sqlBuilderScript" />
</xs:choice>
<xs:attributeGroup ref="datasource-basic-attrs" />
</xs:complexType>
<!-- Full datasource, incluindo datasource via script -->
<xs:complexType name="fullDatasource">
<xs:choice>
<xs:element name="freeQuery" type="freeDataSource" />
<xs:element name="query" type="queryDataSource" />
<xs:element name="scriptDataSource" type="script" />
</xs:choice>
</xs:complexType>
<!-- DB Property Field -->
<xs:complexType name="DBPropertyField">
<xs:sequence>
<xs:element name="loadQuery" type="freeDataSource" minOccurs="1" maxOccurs="1" />
<xs:element name="caption-field" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="bind" type="bindInfo" />
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="modelMember" type="xs:boolean" fixed="false" use="required" />
<xs:attribute name="rows" type="xs:positiveInteger" />
<xs:attributeGroup ref="fieldAttrs" />
</xs:complexType>
<!-- Componentes DB suportam multiplos Binds -->
<xs:complexType name="DBMultiBind">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="field">
<xs:complexType>
<xs:attribute name="ref" type="xs:string" use="required" />
<xs:attribute name="propertyName" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="parameter">
<xs:complexType>
<xs:attribute name="field-ref" type="xs:string" use="optional" />
<xs:attribute name="context-value" use="optional" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="PROCESS_INSTANCE_ID" />
<xs:enumeration value="PROCESS_BUSINESS_KEY" />
<xs:enumeration value="TASK_ID" />
<xs:enumeration value="USER_LOGIN" />
<xs:enumeration value="USER_COMPANYS" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="parameterName" type="xs:string" use="required" />
<xs:attribute name="defaultValue" type="xs:string" use="required" />
<xs:attributeGroup ref="value-type-enum" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="refreshOnChange" type="xs:boolean" />
</xs:complexType>
<!-- Database combobox -->
<xs:complexType name="DBComboBox">
<xs:sequence>
<xs:element name="datasource" type="datasource-with-builder" minOccurs="1" maxOccurs="1" />
<xs:element name="key-field" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="caption-field" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="bind" type="DBMultiBind" minOccurs="0" maxOccurs="1" />
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="multivalue" type="xs:boolean" />
<xs:attribute name="multivalue-show-clear-button" type="xs:boolean" />
<xs:attribute name="multivalue-clear-button-caption" type="xs:boolean" />
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="selectFieldAttr" />
<xs:attributeGroup ref="companyDefinitionAttrs" />
<xs:attributeGroup ref="personDefinitionAttrs" />
<xs:attributeGroup ref="tagFieldAttrs" />
</xs:complexType>
<xs:complexType name="DBTwinColSelect">
<xs:sequence>
<xs:element name="datasource" type="datasource-with-builder" minOccurs="1" maxOccurs="1" />
<xs:element name="key-field" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="caption-field" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="bind" type="DBMultiBind" minOccurs="0" maxOccurs="1" />
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="multivalue" type="xs:boolean" fixed="true" use="required" />
<xs:attribute name="leftCaption" type="xs:string" />
<xs:attribute name="rightCaption" type="xs:string" />
<xs:attribute name="allowFilter" type="xs:boolean" />
<xs:attribute name="rows" type="xs:positiveInteger" />
<xs:attribute name="requireFilter" type="xs:boolean" />
<xs:attribute name="maxSelectedItens" type="xs:positiveInteger" />
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="selectFieldAttr" />
</xs:complexType>
<xs:complexType name="DBTableColumns">
<xs:sequence>
<xs:element name="column" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="expand-ratio" type="xs:double" />
<xs:attribute name="format" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DBSortColumn">
<xs:sequence>
<xs:element name="column" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="order">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ASC" />
<xs:enumeration value="DESC" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- Tipo reutilizavel que representa uma coluna de um dbfilter dinamico -->
<xs:complexType name="DBFilterColumn">
<xs:attribute name="caption" type="xs:string" use="required" />
<xs:attribute name="filterBy" type="xs:string" />
<xs:attribute name="typeFilterBy">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="string"/>
<xs:enumeration value="number"/>
<xs:enumeration value="decimal"/>
<xs:enumeration value="date"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="filterType" type="xs:string" />
<xs:attribute name="connectionKey" type="xs:string" />
</xs:complexType>
<!-- Tipo reutilizavel que representa uma coluna de uma tabela -->
<xs:complexType name="DBTableColumn">
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="expand-ratio" type="xs:double" />
<xs:attribute name="format" type="xs:string" />
<xs:attribute name="filter" type="xs:boolean" />
<xs:attribute name="decimalSeparator" type="xs:string" />
<xs:attribute name="groupingSeparator" type="xs:string" />
<xs:attribute name="useGroupingSeparator" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="DBTableEvents">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="valueChange" type="ScriptEvent" />
<xs:element name="itemChange" type="ScriptEvent" />
<xs:element name="itemClick">
<xs:complexType>
<xs:sequence>
<xs:element name="script" type="script" />
</xs:sequence>
<xs:attribute name="allowDoubleClick" type="xs:boolean" />
</xs:complexType>
</xs:element>
<xs:element name="editFieldCreateListener">
<xs:complexType>
<xs:sequence>
<xs:element name="script" type="script" />
</xs:sequence>
<xs:attribute name="allowItemChangeEvent" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:attributeGroup name="DBTableDefaultColumnAttrs">
<xs:attribute name="expand-ratio" type="xs:double" />
<xs:attribute name="width" type="xs:positiveInteger" />
<xs:attribute name="hidable" type="xs:boolean" />
<xs:attribute name="filter" type="xs:boolean" />
<xs:attribute name="filterType" type="xs:string" />
<xs:attribute name="align" use="optional" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="LEFT" />
<xs:enumeration value="CENTER" />
<xs:enumeration value="RIGHT" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="DBTableValueColumnBase">
<xs:attribute name="format" type="xs:string" />
<xs:attribute name="editable" type="xs:boolean" />
<xs:attribute name="editMask" type="xs:string" />
<xs:attribute name="editFormat" type="xs:string" />
<xs:attribute name="editValueRequired" type="xs:boolean" />
<xs:attribute name="commitOnEnter" type="xs:boolean" />
<xs:attribute name="commitOnValueChange" type="xs:boolean" />
<xs:attribute name="decimalSeparator" type="xs:string" />
<xs:attribute name="groupingSeparator" type="xs:string" />
<xs:attribute name="focusGroup" type="xs:string" />
<xs:attribute name="aggregate">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SUM" />
<xs:enumeration value="AVG" />
<xs:enumeration value="MAX" />
<xs:enumeration value="MIN" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="aggregatePrefix" type="xs:string" />
<xs:attribute name="sortable" type="xs:boolean" />
</xs:attributeGroup>
<!-- Componente de selecao representado por uma tabela (GRID) -->
<xs:complexType name="DBTable">
<xs:sequence>
<xs:element name="datasource" type="datasource-with-builder" minOccurs="1" maxOccurs="1" />
<xs:element name="key-field" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="header-caption" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="header-css-style" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="columns" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="column">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="caption" type="xs:string" />
<xs:attributeGroup ref="DBTableValueColumnBase" />
<xs:attributeGroup ref="DBTableDefaultColumnAttrs" />
</xs:complexType>
</xs:element>
<xs:element name="dynamicColumn">
<xs:complexType>
<xs:attribute name="matchColumnTag" type="xs:string" use="required" />
<xs:attribute name="removeTagInCaption" type="xs:boolean" />
<xs:attribute name="matchColumnBy">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="STARTS_WITH" />
<xs:enumeration value="ENDS_WITH" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="DBTableValueColumnBase" />
<xs:attributeGroup ref="DBTableDefaultColumnAttrs" />
</xs:complexType>
</xs:element>
<xs:element name="generated">
<xs:complexType>
<xs:choice>
<xs:element name="scriptColumnGenerator" type="script" minOccurs="1" maxOccurs="1"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="cache" type="xs:boolean" />
<xs:attribute name="columnForExport" type="xs:string" />
<xs:attributeGroup ref="DBTableDefaultColumnAttrs" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="fixed-order-by" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="prefix" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="column" type="DBSortColumn" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="suffix" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="column" type="DBSortColumn" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="bind" type="DBMultiBind" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="DBTableEvents" minOccurs="0" maxOccurs="1" />
<xs:element name="styleGenerator" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:choice>
<xs:element name="scriptGenerator" type="script" minOccurs="1" maxOccurs="1"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="editableFieldsGenerator" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:choice>
<xs:element name="scriptGenerator" type="script" minOccurs="1" maxOccurs="1"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="cellDescriptionGenerator" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:choice>
<xs:element name="scriptGenerator" type="script" minOccurs="1" maxOccurs="1"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="menuGenerator" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="1">
<xs:element name="staticMenuGenerator" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="menuItem" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="clickScript" type="script" minOccurs="1" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="caption" type="xs:string" use="required" />
<xs:attribute name="icon" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="scriptMenuGenerator" type="script" minOccurs="1" maxOccurs="1" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attribute name="rows" type="xs:integer" />
<xs:attribute name="rowHeight" type="xs:string" />
<xs:attribute name="multivalue" type="xs:boolean" default="false" />
<xs:attribute name="selectable" type="xs:boolean" />
<xs:attribute name="alwaysSelectable" type="xs:boolean" />
<xs:attribute name="gridSelectable" type="xs:boolean" />
<xs:attribute name="requireFilter" type="xs:boolean" />
<xs:attribute name="maxSelectedItens" type="xs:positiveInteger" />
<xs:attribute name="editable" type="xs:boolean" />
<xs:attribute name="editAsync" type="xs:boolean" />
<xs:attribute name="allowHideColumns" type="xs:boolean" />
<xs:attribute name="editDisposition">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="INLINE" />
<xs:enumeration value="MODAL" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="showRowCount" type="xs:boolean" />
<xs:attribute name="exportXLS" type="xs:boolean" />
<xs:attribute name="exportCSV" type="xs:boolean" />
<xs:attribute name="drawRefreshButton" type="xs:boolean" />
<xs:attribute name="drawFilterButton" type="xs:boolean" />
<xs:attribute name="autoRefreshSeconds" type="xs:positiveInteger" />
<xs:attribute name="keepState" type="xs:boolean" />
<xs:attribute name="keepOldStateDays" type="xs:integer" />
<xs:attribute name="compact" type="xs:boolean" />
<xs:attribute name="borderless" type="xs:boolean" />
<xs:attribute name="debugSQL" type="xs:boolean" />
<xs:attribute name="useGridComponent" type="xs:boolean" />
<xs:attribute name="stateScope" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="PROCESS_KEY"/>
<!-- <xs:enumeration value="PROCESS_VERSION"/> -->
<xs:enumeration value="INSTANCE"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="frozenColumns" type="xs:positiveInteger" />
<xs:attribute name="rowCacheRate" type="xs:integer" />
<xs:attribute name="columnSortMode" use="optional" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="FORCE_ENABLED" />
<xs:enumeration value="FORCE_DISABLED" />
<xs:enumeration value="DEFAULT_ENABLED" />
<xs:enumeration value="DEFAULT_DISABLED" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="scrollEditableGridOnUserFocus" type="xs:boolean" />
<xs:attribute name="autoSelectTextInEditableFieldFocus" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="columnFilter">
<xs:attribute name="name" type="xs:string" use="required" />
<!-- Possiveis operadores de comparacao. Devem ser separados por ",". Valores: eq, ne, gt, ge, lt, le, lk -->
<xs:attribute name="compareWith" type="xs:string" />
</xs:complexType>
<xs:complexType name="bindParameter">
<xs:choice minOccurs="0" maxOccurs="1">
<xs:element name="subquery-as-exists" type="xs:string" />
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="parameterType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="string"/>
<xs:enumeration value="number"/>
<xs:enumeration value="date"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<!-- Componente de pesquisa baseado em um datasource dinamico -->
<xs:complexType name="DBFilter">
<xs:sequence>
<xs:element name="onFilter" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="notify-script" type="columnFilter" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="columns" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="column" type="DBFilterColumn" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="dbtableId" type="xs:string" />
<xs:attribute name="filterLayoutId" type="xs:string" />
<xs:attribute name="hideOnEmpty" type="xs:boolean" />
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="showSelected" type="xs:boolean" />
<xs:attribute name="dynamicColumns" type="xs:boolean" />
<xs:attribute name="automaticFilter" type="xs:boolean" />
<xs:attribute name="renderType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="BUTTON" />
<xs:enumeration value="INLINE" />
<xs:enumeration value="TARGET" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="width" type="xs:string" />
</xs:complexType>
<!-- Componente de pesquisa baseado em um datasource dinamico -->
<xs:complexType name="DBSearchField">
<xs:sequence>
<xs:element name="datasource" type="datasource-with-builder" minOccurs="1" maxOccurs="1" />
<xs:element name="loadItemQuery" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="key-field" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="caption-field" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="columns" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="column" type="DBTableColumn" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Propriedades de filtragem -->
<xs:element name="filterProperties" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="value">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="inputMask" type="xs:string" />
<xs:attribute name="resolution">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SECOND"/>
<xs:enumeration value="MINUTE"/>
<xs:enumeration value="HOUR"/>
<xs:enumeration value="DAY"/>
<xs:enumeration value="MONTH"/>
<xs:enumeration value="YEAR"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="filterRequired" type="xs:boolean" />
</xs:complexType>
</xs:element>
<!-- Componentes customizados para filtragem -->
<xs:element name="customFilterComponents" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="component" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:any processContents="skip" />
<xs:element name="initialValue" type="userInfoInitialValue" minOccurs="0" maxOccurs="1"/>
<xs:element name="valuePrefix" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="valueSuffix" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:choice>
<xs:element name="column" type="columnFilter" />
<xs:element name="parameter" type="bindParameter" />
</xs:choice>
</xs:sequence>
<xs:attribute name="filterOnChange" type="xs:boolean" />
<xs:attribute name="displayOnTableColumn" type="xs:string" />
<xs:attribute name="allowNullSettingByFilter" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="componentsPerRow" type="xs:positiveInteger" />
</xs:complexType>
</xs:element>
<xs:element name="bind" type="DBMultiBind" minOccurs="0" maxOccurs="1" />
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="companyDefinitionAttrs" />
<xs:attributeGroup ref="tagFieldAttrs" />
<xs:attributeGroup ref="personDefinitionAttrs" />
<xs:attribute name="searchViewRows" type="xs:positiveInteger" />
<xs:attribute name="searchViewWidth" type="xs:string" />
<xs:attribute name="searchViewHeight" type="xs:string" />
<xs:attribute name="searchViewResizable" type="xs:boolean" />
<xs:attribute name="searchViewTitle" type="xs:string" />
<xs:attribute name="searchViewDescription" type="xs:string" />
<xs:attribute name="key-field-search-enabled" type="xs:boolean" />
<xs:attribute name="key-field-search-visible" type="xs:boolean" />
<xs:attribute name="key-field-search-width" type="xs:string" />
</xs:complexType>
</xs:schema>

+ 57
- 0
vitruvio-form-field-events.xsd View File

@ -0,0 +1,57 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!--
Definicao dos principais eventos que ocorrem em fields e
possibilidade e suas possibilidades de scripting
-->
<!-- Scripting defs -->
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Eventos de Fields -->
<xs:complexType name="ScriptEvent">
<xs:sequence>
<xs:element name="script" type="script" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="valueEvents">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="valueChange" type="ScriptEvent" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="allEvents">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="valueChange" type="ScriptEvent" />
<xs:element name="blur" type="ScriptEvent" />
<xs:element name="focus" type="ScriptEvent" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="textFieldEvents">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="valueChange" type="ScriptEvent" />
<xs:element name="blur" type="ScriptEvent" />
<xs:element name="focus" type="ScriptEvent" />
<xs:element name="action" type="ScriptEvent" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="calendarEvents">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="dateSelected" type="ScriptEvent" />
<xs:element name="itemSelected" type="ScriptEvent" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:schema>

+ 35
- 0
vitruvio-form-field-validators.xsd View File

@ -0,0 +1,35 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Especificacao de estrutura de validadores -->
<!-- Tipos de validadores aceitos -->
<xs:complexType name="regexValidation">
<xs:sequence>
<xs:element name="expr" type="xs:string" />
<xs:element name="message" type="xs:string" />
</xs:sequence>
</xs:complexType>
<!-- Todos os validadores -->
<xs:complexType name="fieldValidators">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="regex" type="regexValidation" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="script" type="script" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<!-- Validacao por script -->
<xs:complexType name="scriptValidators">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="script" type="script" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:schema>

+ 34
- 0
vitruvio-form-script-components.xsd View File

@ -0,0 +1,34 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<xs:include schemaLocation="vitruvio-form-field-validators.xsd" />
<xs:include schemaLocation="vitruvio-form-field-events.xsd" />
<!--
Componentes com DataSources gerados dinamicamente, via Script
-->
<xs:complexType name="field-descriptor">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="field-type-enum" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Script combobox -->
<xs:complexType name="ScriptComboBox">
<xs:sequence>
<xs:element name="loadScript" type="script" minOccurs="1" maxOccurs="1" />
<xs:element name="key-field" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="caption-field" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="validation" type="scriptValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="selectFieldAttr" />
</xs:complexType>
</xs:schema>

+ 62
- 0
vitruvio-form-scripting.xsd View File

@ -0,0 +1,62 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!--
Esquemas de escripting para formularios do vitruvio
-->
<!-- Definicao basica de um Script -->
<xs:complexType name="base-script">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="language" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="JavaScript"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="producedObject" type="xs:string" />
<xs:attribute name="provideVariables" type="xs:boolean" default="false" />
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="script">
<xs:complexContent>
<xs:extension base="base-script">
<xs:attribute name="id" type="xs:string" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="script-id-required">
<xs:complexContent>
<xs:extension base="base-script">
<xs:attribute name="id" type="xs:string" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Definicao de um script de validacao -->
<xs:complexType name="form-validation-script">
<xs:simpleContent>
<xs:extension base="script">
<xs:attribute name="execution">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SAVE" />
<xs:enumeration value="COMPLETE" />
<xs:enumeration value="AFTER_CONFIRM_COMPLETE" />
<xs:enumeration value="BOTH" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="supressMessages" type="xs:boolean" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>

+ 152
- 0
vitruvio-form-specific-components.xsd View File

@ -0,0 +1,152 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<xs:include schemaLocation="vitruvio-form-field-validators.xsd" />
<xs:include schemaLocation="vitruvio-form-field-events.xsd" />
<!--
Componentes de aplicacao especifica, geralmente associados a dados internos do Vitruvio
-->
<!-- Atribute groups -->
<xs:attributeGroup name="usercontext-attrs">
<xs:attribute name="load" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="none"/>
<xs:enumeration value="processInitiator"/>
<xs:enumeration value="taskAssignee"/>
<xs:enumeration value="loggedUser"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="loadInfo">
<xs:attributeGroup ref="usercontext-attrs" />
</xs:complexType>
<xs:complexType name="loadOrBind">
<xs:choice>
<xs:element name="load" type="loadInfo" />
<xs:element name="bind" type="bindInfo" />
</xs:choice>
</xs:complexType>
<!-- Campo para selecionar/visualizar usuarios do Vitruvio -->
<xs:complexType name="UserField">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="usercontext-attrs" />
<xs:attribute name="modelMember" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="UserComboBox">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attributeGroup ref="usercontext-attrs" />
<xs:attribute name="modelMember" type="xs:boolean" />
<xs:attribute name="onlyActiveUsers" type="xs:boolean" />
<xs:attribute name="bindTagField" type="xs:string" />
</xs:complexType>
<xs:complexType name="UserMultiSelect">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="multivalue" type="xs:boolean" fixed="true" use="required" />
<xs:attribute name="modelMember" type="xs:boolean" />
<xs:attributeGroup ref="fieldAttrs" />
</xs:complexType>
<xs:complexType name="RoleMultiSelect">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="multivalue" type="xs:boolean" fixed="true" use="required" />
<xs:attribute name="modelMember" type="xs:boolean" />
<xs:attributeGroup ref="fieldAttrs" />
</xs:complexType>
<xs:complexType name="RoleComboBox">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attribute name="modelMember" type="xs:boolean" />
</xs:complexType>
<!-- Campo para exibir propriedades do usuario -->
<xs:complexType name="UserPropertyField">
<xs:sequence>
<xs:choice>
<xs:element name="load" type="loadInfo" />
<xs:element name="bind" type="bindInfo" />
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="fieldAttrs" />
<xs:attribute name="propertyKey" type="xs:string" use="required" />
<xs:attribute name="modelMember" type="xs:boolean" fixed="false" use="required" />
</xs:complexType>
<!-- Campo para exibir o codigo do processo -->
<xs:complexType name="ProcessInstanceIdField">
<xs:attributeGroup ref="fieldAttrs" />
<xs:attribute name="modelMember" type="xs:boolean" fixed="false" use="required"/>
<xs:attribute name="value" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="businessKey"/>
<xs:enumeration value="processInstanceId"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<!-- Campo para exibir informacoes de data e hora -->
<xs:complexType name="ContextDateTimeField">
<xs:attributeGroup ref="fieldAttrs" />
<xs:attribute name="modelMember" type="xs:boolean" fixed="false" use="required"/>
<xs:attribute name="value" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="currentDate"/>
<xs:enumeration value="taskStartDate"/>
<xs:enumeration value="taskEndDate"/>
<xs:enumeration value="processStartDate"/>
<xs:enumeration value="processFinishDate"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="MarcadorField">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="validation" type="fieldValidators" minOccurs="0" maxOccurs="1" />
<xs:element name="events" type="allEvents" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="numberTypefieldAttrs" />
<xs:attribute name="setProcessTag" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="GoogleMapsField">
<xs:attributeGroup ref="stringFieldAttrs" />
<xs:attribute name="mapDraggable" type="xs:boolean" />
<xs:attribute name="zoom" type="xs:integer" />
<xs:attribute name="minZoom" type="xs:integer" />
<xs:attribute name="maxZoom" type="xs:integer" />
<xs:attribute name="disableDefaultUI" type="xs:boolean" />
</xs:complexType>
</xs:schema>

+ 1057
- 0
vitruvio-form-widgets.xsd
File diff suppressed because it is too large
View File


+ 85
- 0
vitruvio-form.xsd View File

@ -0,0 +1,85 @@
<?xml version="1.0"?>
<xs:schema xmlns="http://www.davinti.com.br/vitruvio/form" xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.davinti.com.br/vitruvio/form"
elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-subform-base.xsd" />
<xs:complexType name="vitruvio-form-default-button">
<xs:sequence>
<xs:element name="description" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="caption" type="xs:string" use="required" />
<xs:attribute name="visible" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="vitruvio-form-custom-button">
<xs:sequence>
<xs:element name="onClickScript" type="script" minOccurs="1" maxOccurs="1" />
<xs:element name="description" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="caption" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="vitruvio-process-end-rules">
<xs:all>
<xs:element name="preConfirmCancelValidationScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="afterConfirmCancelValidationScript" type="script" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<!-- Componente de Form ROOT -->
<xs:complexType name="vitruvio-form">
<xs:complexContent>
<xs:extension base="vitruvio-subform-enabled-form">
<xs:sequence>
<xs:element name="buttons" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="save" type="vitruvio-form-default-button" minOccurs="0" maxOccurs="1" />
<xs:element name="complete" type="vitruvio-form-default-button" minOccurs="0" maxOccurs="1" />
<xs:element name="rollback" type="vitruvio-form-default-button" minOccurs="0" maxOccurs="1" />
<xs:element name="customButton" type="vitruvio-form-custom-button" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="loadWithPreviousForm" type="xs:boolean" />
<xs:attribute name="hideWhenFinished" type="xs:boolean" />
<xs:attribute name="requiredDurationNotes" type="xs:boolean" />
<xs:attribute name="shouldDisplayNextTask" type="xs:boolean" />
<xs:attribute name="shouldDisplayNextTaskWithoutConfirmation" type="xs:boolean" />
<xs:attribute name="preventAttach" type="xs:boolean" />
<xs:attribute name="minimumVersion" type="xs:string" />
<xs:attribute name="minimumVersionNotMeetMessage" type="xs:string" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Por fim, a definicao dos elementos principais -->
<xs:element name="forms">
<xs:complexType>
<xs:sequence>
<xs:element name="library" type="library" minOccurs="0" maxOccurs="1" />
<xs:element name="descriptorScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="ProcessEndRules" type="vitruvio-process-end-rules" minOccurs="0" maxOccurs="1" />
<xs:element name="form" type="vitruvio-form" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="processKey" type="xs:string" />
<xs:attribute name="allowAttachments" type="xs:boolean" />
<xs:attribute name="allowDeleteAttachments" type="xs:boolean" />
<!-- Determina se as notas e anexos devem ser exibidas dentro do mesmo form, ou atraves de formularios externos -->
<xs:attribute name="embeddedNotes" type="xs:boolean" />
<xs:attribute name="embeddedNotesOrder" type="xs:positiveInteger" />
<xs:attribute name="embeddedAttachments" type="xs:boolean" />
<xs:attribute name="embeddedAttachmentsOrder" type="xs:positiveInteger" />
<xs:attribute name="showOnlyActiveTasks" type="xs:boolean" />
<xs:attribute name="showOnlyLastHistoricTask" type="xs:boolean" />
<xs:attribute name="requiredDurationNotes" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:schema>

+ 402
- 0
vitruvio-mobile-base-form.xsd View File

@ -0,0 +1,402 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<!-- Componentes padrao -->
<xs:include schemaLocation="vitruvio-form-basic-components.xsd" />
<!-- Componentes para uso com bancos de dados -->
<xs:include schemaLocation="vitruvio-form-db-components.xsd" />
<!-- Componentes especificos ao contexto da aplicacao -->
<xs:include schemaLocation="vitruvio-form-specific-components.xsd" />
<!-- Form containers -->
<xs:include schemaLocation="vitruvio-form-containers.xsd" />
<!-- Scripting defs -->
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Suporte a Widgets -->
<xs:include schemaLocation="vitruvio-form-widgets.xsd" />
<!-- Suporte a Widgets -->
<xs:include schemaLocation="vitruvio-mobile-widgets.xsd" />
<!-- Base Form para implementacoes especificas -->
<xs:complexType name="vitruvio-mobile-basic-form-structure">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="formKey" type="xs:string" use="required" />
</xs:complexType>
<!-- Images para biblioteca de recursos -->
<xs:complexType name="images-library">
<xs:sequence>
<xs:element name="library" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="file-id" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="static" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="file" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="by-field-value" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="ref" use="required" />
<xs:attribute type="xs:string" name="searchExtensions" use="required" />
<xs:attribute name="searchPattern" use="optional" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="FILE_NAME_STARTS_WITH" />
<xs:enumeration value="FILE_NAME_EXACT_MATCH" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="key" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="vitruvio-mobile-base-form">
<xs:complexContent>
<xs:extension base="vitruvio-mobile-basic-form-structure">
<xs:sequence>
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="discoveryScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
<xs:element name="ServerValidator" type="server-side-validation" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="images" minOccurs="0" maxOccurs="1" type="images-library"/>
<xs:element name="components" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="Panel" type="SubFormPanel" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ServerSide" type="MobileServerSide" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="server-side-validation">
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="ref" type="xs:string" use="required" />
<xs:attribute name="execution">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SAVE" />
<xs:enumeration value="COMPLETE" />
<xs:enumeration value="BOTH" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<!-- Subformularios que podem ser anexados dentro de Forms RAIZ (ROOT) -->
<xs:complexType name="vitruvio-subform">
<xs:complexContent>
<xs:extension base="vitruvio-mobile-basic-form-structure">
<xs:sequence>
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
<xs:element name="ServerValidator" type="server-side-validation" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ItemList">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="property">
<xs:complexType>
<xs:attribute name="id" use="required" type="xs:string" />
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="expand-ratio" type="xs:float" />
<xs:attribute name="useCaptionValue" type="xs:boolean" />
<xs:attribute name="format" type="xs:string" />
<xs:attribute name="decimalSeparator" type="xs:string" />
<xs:attribute name="groupingSeparator" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="addItemButtonCaption" type="xs:string" />
<xs:attribute name="removeItemConfirmationMessage" type="xs:string" />
<xs:attribute name="rows" type="xs:positiveInteger" />
<xs:attribute name="minItens" type="xs:positiveInteger" />
<xs:attribute name="maxItens" type="xs:positiveInteger" />
</xs:complexType>
</xs:element>
<xs:element name="components" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="Panel" type="Panel" />
<xs:element name="TabLayout" type="TabLayout" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="images" minOccurs="0" maxOccurs="1" type="images-library"/>
<xs:element name="events" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="crud">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="script" type="script" maxOccurs="1" minOccurs="1" />
</xs:sequence>
<xs:attribute name="allowedEvents" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Extensao dos containers de layout padrao para inclusao de subforms especiais -->
<!-- Grupo de layouts -->
<xs:group name="FormLayoutGroup">
<xs:choice>
<!-- Elementos visuais e containers -->
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="Panel" type="SubFormPanel" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
</xs:choice>
</xs:group>
<!-- Definicao de elementos possiveis por padrao num container de componentes -->
<xs:group name="FormComponentContainer">
<xs:choice>
<!-- Layouts -->
<xs:group ref="FormLayoutGroup" />
<!-- Subforms -->
<xs:element name="SubForm" type="vitruvio-subform" minOccurs="0" maxOccurs="unbounded" />
<!-- Componentes reutilizaveis da biblioteca -->
<xs:element name="ComplexComponent" type="LibraryComplexComponent" />
<xs:element name="FieldComponent" type="LibraryFieldComponent" />
<!-- Suporte a definicao de widgets -->
<xs:group ref="CoreWidgets" />
<xs:element name="GridEditorWidget" type="GridEditorWidget" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ProgressBarLinear" type="ProgressBarLinear" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="CustomWidget" type="CustomWidget" />
<!-- Campos -->
<xs:group ref="fieldGroup" />
</xs:choice>
</xs:group>
<xs:complexType name="SubFormVerticalLayout">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="layoutMandatoryAttr"/>
<xs:attributeGroup ref="orderedLayoutAttr"/>
</xs:complexType>
<xs:complexType name="SubFormHorizontalLayout">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="layoutMandatoryAttr"/>
<xs:attributeGroup ref="orderedLayoutAttr"/>
</xs:complexType>
<!-- Tabs -->
<xs:complexType name="SubFormTabComponent">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="caption" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="SubFormTabLayout">
<xs:sequence>
<xs:element name="Tab" type="SubFormTabComponent" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="framed" type="xs:boolean" />
<xs:attribute name="compact" type="xs:boolean" />
<xs:attribute name="centerTabs" type="xs:boolean" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attributeGroup ref="layoutMandatoryAttr"/>
</xs:complexType>
<xs:complexType name="SubFormPanel">
<xs:complexContent>
<xs:extension base="BasePanel">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Componente de Form ROOT -->
<xs:complexType name="vitruvio-subform-enabled-form">
<xs:complexContent>
<xs:extension base="vitruvio-mobile-basic-form-structure">
<xs:sequence>
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="discoveryScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
<xs:element name="ServerValidator" type="server-side-validation" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="attachments" type="FormAttachments" minOccurs="0" maxOccurs="1" />
<xs:element name="components" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="Panel" type="SubFormPanel" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:attributeGroup name="mobileDataSourceAttrs">
<xs:attribute name="connection-key" type="xs:string" />
<xs:attribute name="autoSyncOnInit" type="xs:boolean" />
<xs:attribute name="autoSyncOnDiscovery" type="xs:boolean" />
<xs:attribute name="refreshInSeconds" type="xs:int" />
<xs:attribute name="validForSeconds" type="xs:int" />
<xs:attribute name="workOnline" type="xs:boolean" />
<xs:attribute name="scope">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="PROCESS_DEFINITION"/>
<xs:enumeration value="PROCESS_INSTANCE"/>
<xs:enumeration value="TASK_INSTANCE"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="mobile-script-data-source">
<xs:complexContent>
<xs:extension base="script-id-required">
<xs:attributeGroup ref="mobileDataSourceAttrs" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="mobile-free-query-datasource">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
<xs:attributeGroup ref="mobileDataSourceAttrs" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Datasource para uso de Querys mapeadas pre cadastradas no Vitruvio -->
<xs:complexType name="mobie-query-datasource">
<xs:attribute name="key" type="xs:string" use="required" />
<xs:attributeGroup ref="mobileDataSourceAttrs" />
</xs:complexType>
<xs:complexType name="MobileServerSide">
<xs:sequence>
<xs:element name="Validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Validator" type="script-id-required" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DataSources" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="ScriptDataSource" type="mobile-script-data-source" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="SQLBuilderScriptDataSource" type="mobile-script-data-source" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="FreeQueryDataSource" type="mobile-free-query-datasource" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="QueryDataSource" type="mobie-query-datasource" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Bridges" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Bridge" type="script-id-required" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

+ 163
- 0
vitruvio-mobile-form.xsd View File

@ -0,0 +1,163 @@
<?xml version="1.0"?>
<xs:schema xmlns="http://www.davinti.com.br/vitruvio/mobile-form" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.davinti.com.br/vitruvio/mobile-form" elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<!-- Componentes padrao -->
<xs:include schemaLocation="vitruvio-form-basic-components.xsd" />
<!-- Componentes para uso com bancos de dados -->
<xs:include schemaLocation="vitruvio-form-db-components.xsd" />
<!-- Componentes especificos ao contexto da aplicacao -->
<xs:include schemaLocation="vitruvio-form-specific-components.xsd" />
<!-- Form containers -->
<xs:include schemaLocation="vitruvio-form-containers.xsd" />
<!-- Scripting defs -->
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Suporte a Widgets -->
<xs:include schemaLocation="vitruvio-form-widgets.xsd" />
<!-- Scripting defs -->
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Base Form -->
<xs:include schemaLocation="vitruvio-mobile-base-form.xsd" />
<!-- Autoload support -->
<xs:attributeGroup name="autoload-base-attrs">
<xs:attribute name="autoPersist" type="xs:boolean" />
<xs:attribute name="autoOverride" type="xs:boolean" />
<xs:attribute name="autoInjectionVariableName" type="xs:string" />
<xs:attribute name="autoInjectionScope">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="NONE"/>
<xs:enumeration value="SCRIPT_SCOPE"/>
<xs:enumeration value="ENGINE_GLOBAL_SCOPE"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="autoload-variables">
<xs:sequence>
<xs:element name="variable" minOccurs="1" maxOccurs="unbounded" type="xs:string" />
</xs:sequence>
<xs:attributeGroup ref="autoload-base-attrs" />
</xs:complexType>
<xs:complexType name="autoload-form">
<xs:attribute name="formKey" type="xs:string" use="required" />
<xs:attribute name="taskDefinitionKey" type="xs:string" />
<xs:attribute name="onlyCompleteTask" type="xs:boolean" />
<xs:attributeGroup ref="autoload-base-attrs" />
</xs:complexType>
<xs:complexType name="autoload-bridge">
<xs:attribute name="bridgeId" type="xs:string" use="required" />
<xs:attributeGroup ref="autoload-base-attrs" />
</xs:complexType>
<xs:complexType name="MobileAutoloadInfo">
<xs:sequence>
<xs:element name="variables" type="autoload-variables" minOccurs="0" maxOccurs="1" />
<xs:element name="forms" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="form" type="autoload-form" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="bridges" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="bridge" type="autoload-bridge" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attributeGroup ref="autoload-base-attrs" />
</xs:complexType>
<xs:complexType name="MobileFormTaskPropertiesDisplaySettings">
<xs:attribute name="showCompleteItensCount" type="xs:boolean" />
<xs:attribute name="showStartUser" type="xs:boolean" />
<xs:attribute name="showDuedate" type="xs:boolean" />
<xs:attribute name="showExtendedProperties" type="xs:boolean" />
<xs:attribute name="extendedPropertiesVariableName" type="xs:string" />
</xs:complexType>
<xs:complexType name="MobileFormNavButton">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="clickScript" type="script" minOccurs="1" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="icon" type="xs:string" use="required" />
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
</xs:complexType>
<xs:complexType name="MobileFormNavButtonSettings">
<xs:sequence>
<xs:element name="customButtons" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="button" type="MobileFormNavButton" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="position">
<xs:simpleType id="test">
<xs:restriction base="xs:string">
<xs:enumeration value="TOP_RIGHT"></xs:enumeration>
<xs:enumeration value="TOP_LEFT"></xs:enumeration>
<xs:enumeration value="BOTTOM_RIGHT"></xs:enumeration>
<xs:enumeration value="BOTTOM_LEFT"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="showNavButton" type="xs:boolean" />
<xs:attribute name="showCompleteButton" type="xs:boolean" />
<xs:attribute name="startOpened" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="vitruvio-mobile-form">
<xs:complexContent>
<xs:extension base="vitruvio-subform-enabled-form">
<xs:sequence>
<xs:element name="Autoload" type="MobileAutoloadInfo" minOccurs="0" maxOccurs="1" />
<xs:element name="ServerSide" type="MobileServerSide" minOccurs="0" maxOccurs="1" />
<xs:element name="TaskPropertiesDisplaySettings" type="MobileFormTaskPropertiesDisplaySettings" minOccurs="0" maxOccurs="1" />
<xs:element name="NavButtonSettings" type="MobileFormNavButtonSettings" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="requiredDurationNotes" type="xs:boolean" />
<xs:attribute name="shouldDisplayNextTask" type="xs:boolean" />
<xs:attribute name="shouldDisplayNextTaskWithoutConfirmation" type="xs:boolean" />
<xs:attribute name="shouldRefreshTasksFromBackendAfterEnd" type="xs:boolean" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="mobile-forms">
<xs:complexType>
<xs:sequence>
<xs:element name="library" type="library" minOccurs="0" maxOccurs="1" />
<xs:element name="descriptorScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="form" type="vitruvio-mobile-form" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="processKey" type="xs:string" />
<xs:attribute name="allowAttachments" type="xs:boolean" />
<!-- Determina se as notas e anexos devem ser exibidas dentro do mesmo form, ou atraves de formularios externos -->
<xs:attribute name="embeddedNotes" type="xs:boolean" />
<xs:attribute name="embeddedAttachments" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:schema>

+ 35
- 0
vitruvio-mobile-panel-form.xsd View File

@ -0,0 +1,35 @@
<?xml version="1.0"?>
<xs:schema xmlns="http://www.davinti.com.br/vitruvio/form/mobile/panel" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.davinti.com.br/vitruvio/form/mobile/panel" elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<!-- Componentes padrao -->
<xs:include schemaLocation="vitruvio-form-basic-components.xsd" />
<!-- Componentes para uso com bancos de dados -->
<xs:include schemaLocation="vitruvio-form-db-components.xsd" />
<!-- Componentes especificos ao contexto da aplicacao -->
<xs:include schemaLocation="vitruvio-form-specific-components.xsd" />
<!-- Form containers -->
<xs:include schemaLocation="vitruvio-form-containers.xsd" />
<!-- Scripting defs -->
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Suporte a Widgets -->
<xs:include schemaLocation="vitruvio-form-widgets.xsd" />
<xs:include schemaLocation="vitruvio-mobile-base-form.xsd" />
<xs:element name="panel-form">
<xs:complexType>
<xs:sequence>
<xs:element name="form" type="vitruvio-mobile-base-form" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

+ 106
- 0
vitruvio-mobile-widgets.xsd View File

@ -0,0 +1,106 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!--
Componentes basicos para uso nos formularios do Vitruvio
-->
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<xs:include schemaLocation="vitruvio-form-db-components.xsd" />
<xs:complexType name="GridEditorWidgetDataSource">
<xs:choice>
<xs:element name="scriptLoader" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="query" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="key" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:complexType name="GridEditorEvents">
<xs:sequence>
<xs:element name="onChange" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="onRowCreated" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="onRowRemoved" type="script" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="GridEditorColumns">
<xs:sequence>
<xs:element name="column" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="string"/>
<xs:enumeration value="numeric"/>
<xs:enumeration value="decimal"/>
<xs:enumeration value="date"/>
<xs:enumeration value="boolean"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="format" type="xs:string" />
<xs:attribute name="width" type="xs:positiveInteger" />
<xs:attribute name="editable" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GridEditors">
<xs:sequence>
<xs:element name="field">
<xs:complexType>
<xs:sequence maxOccurs="1" minOccurs="1">
<xs:any />
</xs:sequence>
<xs:attribute name="key" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GridEditorWidget">
<xs:sequence>
<xs:element name="datasource" minOccurs="1" maxOccurs="1" type="GridEditorWidgetDataSource" />
<xs:element name="keyField" minOccurs="1" maxOccurs="1" />
<xs:element name="parentKeyField" minOccurs="1" maxOccurs="1" />
<xs:element name="freezeCount" minOccurs="1" maxOccurs="1" />
<xs:element name="events" minOccurs="0" maxOccurs="1" type="GridEditorEvents" />
<xs:element name="editorSelectorScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="cellStyleGeneratorScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="columns" type="GridEditorColumns" minOccurs="0" maxOccurs="1" />
<xs:element name="editors" type="GridEditors" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="basicElement" />
</xs:complexType>
<xs:complexType name="ProgressBarLinear">
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="enabled" type="xs:boolean" default="true" />
<xs:attribute name="value" type="xs:float" />
<xs:attribute name="maxValue" type="xs:float" />
<xs:attribute name="color" type="xs:string" />
<xs:attribute name="stroke" type="xs:int" />
<xs:attribute name="radius" type="xs:int" />
<xs:attribute name="resolution" default="">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="" />
<xs:enumeration value="TIMESTAMP" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="basicElement" />
</xs:complexType>
</xs:schema>

+ 33
- 0
vitruvio-panel-form.xsd View File

@ -0,0 +1,33 @@
<?xml version="1.0"?>
<xs:schema xmlns="http://www.davinti.com.br/vitruvio/form/panel" xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.davinti.com.br/vitruvio/form/panel"
elementFormDefault="qualified">
<!-- Form para base -->
<xs:include schemaLocation="vitruvio-base-form.xsd" />
<!-- Formulario de Paineis , herdando o formulario base do sistema -->
<xs:complexType name="panel">
<xs:complexContent>
<xs:extension base="vitruvio-base-form">
<xs:attribute name="target" use="optional" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="DEFAULT" />
<xs:enumeration value="NEW_WINDOW" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="panel-form">
<xs:complexType>
<xs:sequence>
<xs:element name="form" type="panel" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

+ 72
- 0
vitruvio-report-form.xsd View File

@ -0,0 +1,72 @@
<?xml version="1.0"?>
<xs:schema xmlns="http://www.davinti.com.br/vitruvio/form/report" xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.davinti.com.br/vitruvio/form/report"
elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<!-- Componentes padrao -->
<xs:include schemaLocation="vitruvio-form-basic-components.xsd" />
<!-- Componentes para uso com bancos de dados -->
<xs:include schemaLocation="vitruvio-form-db-components.xsd" />
<!-- Componentes especificos ao contexto da aplicacao -->
<xs:include schemaLocation="vitruvio-form-specific-components.xsd" />
<!-- Form containers -->
<xs:include schemaLocation="vitruvio-form-containers.xsd" />
<!-- Scripting defs -->
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Por fim, a definicao dos elementos principais -->
<xs:element name="report-form">
<xs:complexType>
<xs:sequence>
<xs:element name="form" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:sequence>
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="components" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="Panel" type="Panel" />
<xs:element name="TabLayout" type="TabLayout" />
<xs:element name="LayoutGroup" type="LayoutGroup" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:sequence>
<xs:attribute name="formKey" type="xs:string" use="required" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="windowWidth" type="xs:string" />
<xs:attribute name="windowHeight" type="xs:string" />
<xs:attribute name="saveLastState" type="xs:boolean" />
<xs:attribute name="composer" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

+ 412
- 0
vitruvio-subform-base.xsd View File

@ -0,0 +1,412 @@
<?xml version="1.0"?>
<xs:schema xmlns="http://www.davinti.com.br/vitruvio/form" xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.davinti.com.br/vitruvio/form"
elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<!-- Componentes padrao -->
<xs:include schemaLocation="vitruvio-form-basic-components.xsd" />
<!-- Componentes para uso com bancos de dados -->
<xs:include schemaLocation="vitruvio-form-db-components.xsd" />
<!-- Componentes especificos ao contexto da aplicacao -->
<xs:include schemaLocation="vitruvio-form-specific-components.xsd" />
<!-- Form containers -->
<xs:include schemaLocation="vitruvio-form-containers.xsd" />
<!-- Scripting defs -->
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Suporte a widgets -->
<xs:include schemaLocation="vitruvio-form-widgets.xsd" />
<!-- Base Form para implementacoes especificas -->
<xs:complexType name="vitruvio-base-form">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="formKey" type="xs:string" use="required" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="windowWidth" type="xs:string" />
<xs:attribute name="windowHeight" type="xs:string" />
<xs:attribute name="backgroundColor" type="xs:string" />
<xs:attribute name="customCss" type="xs:string" />
<xs:attribute name="debugMode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="OFF" />
<xs:enumeration value="ALL" />
<xs:enumeration value="RENDER" />
<xs:enumeration value="INIT_SCRIPTS" />
<xs:enumeration value="FORM_LOAD" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="debugOutput">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="UI_MESSAGEBOX" />
<xs:enumeration value="UI_DEBUG" />
<xs:enumeration value="DATABASE" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="debugFormat">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="HTML" />
<xs:enumeration value="FORMATED_TEXT" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<!-- Subformularios que podem ser anexados dentro de Forms RAIZ (ROOT) -->
<xs:complexType name="vitruvio-subform">
<xs:complexContent>
<xs:extension base="vitruvio-base-form">
<xs:sequence>
<xs:element name="afterFormRenderScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="preInitScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ItemList">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="property">
<xs:complexType>
<xs:attribute name="id" use="required" type="xs:string" />
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="expand-ratio" type="xs:float" />
<xs:attribute name="useCaptionValue" type="xs:boolean" />
<xs:attribute name="format" type="xs:string" />
<xs:attribute name="decimalSeparator" type="xs:string" />
<xs:attribute name="groupingSeparator" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="addItemButtonCaption" type="xs:string" />
<xs:attribute name="removeItemConfirmationMessage" type="xs:string" />
<xs:attribute name="deleteItemRule">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ALL_WHILE_ACTIVE" />
<xs:enumeration value="OWNER" />
<xs:enumeration value="NONE" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="rows" type="xs:positiveInteger" />
<xs:attribute name="minItens" type="xs:positiveInteger" />
<xs:attribute name="maxItens" type="xs:positiveInteger" />
</xs:complexType>
</xs:element>
<xs:element name="components" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="Panel" type="Panel" />
<xs:element name="TabLayout" type="TabLayout" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="events" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="crud">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="script" type="script" maxOccurs="1" minOccurs="1" />
</xs:sequence>
<xs:attribute name="allowedEvents" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Extensao dos containers de layout padrao para inclusao de subforms especiais -->
<!-- Grupo de layouts -->
<xs:group name="FormLayoutGroup">
<xs:choice>
<!-- Elementos visuais e containers -->
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="Panel" type="SubFormPanel" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
<xs:element name="AbsoluteLayout" type="SubFormAbsoluteLayout" />
<xs:element name="ComplexPanel" type="ComplexPanel" />
<xs:element name="CrudPanel" type="CrudPanel" />
<xs:element name="LegendInfo" type="LegendInfo" />
<xs:element name="Section" type="CrudSession" />
<xs:element name="WindowLayout" type="SubFormWindowLayout" />
</xs:choice>
</xs:group>
<!-- Definicao de elementos possiveis por padrao num container de componentes -->
<xs:group name="FormComponentContainer">
<xs:choice>
<!-- Layouts -->
<xs:group ref="FormLayoutGroup" />
<xs:element name="PopupButtonLayout" type="SubFormPopupButtonLayout" />
<!-- Subforms -->
<xs:element name="SubForm" type="vitruvio-subform" minOccurs="0" maxOccurs="unbounded" />
<!-- Componentes reutilizaveis da biblioteca -->
<xs:element name="ComplexComponent" type="LibraryComplexComponent" />
<xs:element name="FieldComponent" type="LibraryFieldComponent" />
<!-- Suporte a definicao de widgets -->
<xs:group ref="CoreWidgets" />
<xs:element name="CustomWidget" type="CustomWidget" />
<!-- Campos -->
<xs:group ref="fieldGroup" />
</xs:choice>
</xs:group>
<xs:complexType name="SubFormVerticalLayout">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="layoutMandatoryAttr"/>
<xs:attributeGroup ref="orderedLayoutAttr"/>
</xs:complexType>
<xs:complexType name="SubFormHorizontalLayout">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="layoutMandatoryAttr"/>
<xs:attributeGroup ref="orderedLayoutAttr"/>
</xs:complexType>
<xs:complexType name="SubFormAbsoluteLayout">
<xs:complexContent>
<xs:extension base="AbsoluteBaseLayout">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SubFormWindowLayout">
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="AbsoluteLayout" type="SubFormAbsoluteLayout" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
<xs:element name="CrudPanel" type="CrudPanel" />
<xs:element name="Section" type="CrudSession" />
</xs:choice>
<xs:element name="Config" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="ControlButton" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="onClickScript" type="script" minOccurs="1" maxOccurs="1" />
</xs:sequence>
<xs:attributeGroup ref="basicElement" />
<xs:attributeGroup ref="formButtonAttrs" />
</xs:complexType>
</xs:element>
<xs:element name="onChangeVisibilityScript" type="script" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="windowWidth" type="xs:string" />
<xs:attribute name="windowHeight" type="xs:string" />
<xs:attribute name="windowTitle" type="xs:string" />
<xs:attribute name="windowClosable" type="xs:boolean" />
<xs:attribute name="windowResizable" type="xs:boolean" />
<xs:attribute name="windowModal" type="xs:boolean" />
<xs:attributeGroup ref="layoutMandatoryAttr"/>
</xs:complexType>
<!-- SubformEnabled PopupButton -->
<xs:complexType name="SubFormPopupButtonLayout">
<xs:complexContent>
<xs:extension base="PopupButtonBaseLayout">
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="AbsoluteLayout" type="SubFormAbsoluteLayout" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
</xs:choice>
<xs:element name="Template" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:choice>
<xs:element name="Filter" type="PopupButtonLayoutFilterTemplate" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Tabs -->
<xs:complexType name="SubFormTabComponent">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="caption" type="xs:string" use="required" />
<xs:attribute name="visible" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="SubFormTabLayout">
<xs:sequence>
<xs:element name="TabChangeScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="Tab" type="SubFormTabComponent" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="framed" type="xs:boolean" />
<xs:attribute name="compact" type="xs:boolean" />
<xs:attribute name="centerTabs" type="xs:boolean" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attributeGroup ref="layoutMandatoryAttr"/>
</xs:complexType>
<xs:complexType name="SubFormPanel">
<xs:complexContent>
<xs:extension base="BasePanel">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
<xs:element name="AbsoluteLayout" type="SubFormAbsoluteLayout" />
<xs:element name="CrudPanel" type="CrudPanel" />
<xs:element name="Section" type="CrudSession" />
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SubFormScrollPanel">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
<xs:element name="AbsoluteLayout" type="SubFormAbsoluteLayout" />
</xs:choice>
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="expandRatio" type="xs:decimal" />
<xs:attribute name="visible" type="xs:boolean" />
<xs:attribute name="backgroundColor" type="xs:string" use="optional" />
</xs:complexType>
<xs:complexType name="user-list">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="role-list">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- Componente de Form ROOT -->
<xs:complexType name="vitruvio-subform-enabled-form">
<xs:complexContent>
<xs:extension base="vitruvio-base-form">
<xs:sequence>
<xs:element name="accessControl" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:choice>
<xs:element name="AuthorizationScript" type="script" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="historicAcessControl" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Allow" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Users" type="user-list" minOccurs="0" maxOccurs="1" />
<xs:element name="Roles" type="role-list" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Deny" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Users" type="user-list" minOccurs="0" maxOccurs="1" />
<xs:element name="Roles" type="role-list" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="afterFormRenderScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="preInitScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="persistScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
</xs:choice>
</xs:sequence>
<xs:attribute name="ignoreEmptyFieldsOnSave" type="xs:boolean" />
</xs:complexType>
</xs:element>
<xs:element name="attachments" type="FormAttachments" minOccurs="0" maxOccurs="1" />
<xs:element name="components" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="Panel" type="SubFormPanel" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
<xs:element name="ScrollPanel" type="SubFormScrollPanel" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>

Loading…
Cancel
Save