XPDL Representation of Structured Data

Structured data are stored in the TypeDeclarations section of an XPDL file according to the XPDL standard.

<xpdl:TypeDeclaration Id="Address" Name="Address">
   <xpdl:SchemaType>
        <xsd:schema xmlns:Cou="http://www.infinity.com/bpm/model/NewWorkflowModel/Country"
            xmlns:tns="http://www.infinity.com/bpm/model/NewWorkflowModel/Address" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                targetNamespace="http://www.infinity.com/bpm/model/NewWorkflowModel/Address">
            <xsd:complexType name="Address">
                <xsd:sequence>
                    <xsd:element name="Street" type="xsd:string"/>
                    <xsd:element name="Number" type="xsd:string"/>
                    <xsd:element name="City" type="xsd:string"/>
                    <xsd:element name="Country" type="xsd:string"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:element name="Address" type="tns:Address"/>
        </xsd:schema>
    </xpdl:SchemaType>
</xpdl:TypeDeclaration>

XSD Schema Validation

Per default, a strict xpath validation will be performed on XSD schemas. To change the validation behavior, you can set the property XPath.StrictEvaluation in your carnot.properties file.

If this property is set to true, which is the default value, strict XPath evaluation will be performed. Set to false, dereferentiation paths on structured data are invoked, even if the XSD schema has changed, provided the path is still compatible with the new schema. Otherwise invocation fails.

XPDL/XSD Representation of Annotations

Global annotations are stored as XSD annotations in the following structure:

<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:infinity="...">
   <xsd:element name="customer" type="Customer"> <xsd:annotation>
   <xsd:complexType>
    <xsd:sequence minOccurs="0">
     <xsd:element name="someString" type="xsd:string" maxOccurs="unbounded">
      <xsd:annotation>
       <xsd:appinfo>
        <infinity:storage>
         <infinity:indexed>false/infinity:indexed>
         <infinity:persistent>false</infinity:persistent>
        </infinity:storage>
       </xsd:appinfo>
      </xsd:annotation>
     </xsd:element>
    </xsd:sequence>
   </xsd:complexType>
  </xsd:element>
</xsd:schema>

Other formats may specify how to store their annotations in a corresponding XSD structure in the implementation of the Message Format extension point. For example combining upcoming SWIFT standards and global annotations from the Process Workbench, an XSD representation of a data structure definition would look like:

<xs:annotation>
   <xs:appinfo>
      <info:FinFormat value="16c"/>
   </xs:appinfo>
</xs:annotation>

<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:infinity="http://www.carnot.ag/xpdl/3.1">
   <xsd:element name="customer" type="Customer">
   <xsd:complexType>
    <xsd:sequence minOccurs="0">
     <xsd:element name="someString" type="xsd:string" maxOccurs="unbounded">
      <xsd:annotation>
       <xsd:appinfo>

     <!--Stardust global annotations-->
        <infinity:storage> 
         <infinity:indexed>false</infinity:indexed>
         <infinity:persistent>false</infinity:persistent>
        </infinity:storage>
       </xsd:appinfo>
      </xsd:annotation>
     </xsd:element>
    </xsd:sequence>
   </xsd:complexType>
  </xsd:element>
</xsd:schema>

Adding Annotations and Categories via Extension Points

Annotations and categories can be dynamically added to the modeling environment with an Eclipse extension point, which: