Blueworks Live BPMN 2.0 Extension Schema

There are an number of additional elements in Blueworks Live process blueprints that not part of the standard BPMN 2.0 specification. These elements are supported by means of the Blueworks Live BPMN 2.0 Extension Schema.

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.ibm.com/bpm/Extensions"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com/bpm/Extensions" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL">

    <xsd:import schemaLocation="bpmn_20.xsd" namespace="http://www.omg.org/spec/BPMN/20100524/MODEL" />

    <xsd:element name="bpmAttributes" type="tBpmAttributes" substitutionGroup="bpmn:rootElement" />
    <xsd:complexType name="tBpmAttributes">
        <xsd:complexContent>
            <xsd:extension base="bpmn:tRootElement">
                <xsd:sequence>
                    <!-- glossaries is a BPMN extension to capture glossary values and types -->
                    <xsd:element ref="glossaries" minOccurs="0" maxOccurs="1" />
                    <!-- milestones is a BPMN extension to capture milestones information in a process. -->
                    <xsd:element ref="milestones" minOccurs="0" maxOccurs="1" />
                    <!-- properties is a BPMN extension to capture Blueworks Live properties. For instance, cycle time value. -->
                    <xsd:element ref="properties" minOccurs="0" maxOccurs="1" />
                    <!-- links is a BPMN extension to capture links. For instance, linked processes -->
                    <xsd:element ref="links" minOccurs="0" maxOccurs="1" />
                </xsd:sequence>
                <xsd:attribute name="version" type="xsd:string" use="optional" />
                <xsd:attribute name="targetNamespace" type="xsd:anyURI" use="optional" />
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <!-- Definitions for glossaries extension -->
    <xsd:element name="glossaries" type="tGlossaries" />
    <xsd:complexType name="tGlossaries">
        <xsd:complexContent>
            <xsd:extension base="bpmn:tBaseElement">
                <xsd:sequence>
                    <xsd:element ref="glossary" minOccurs="0" maxOccurs="unbounded" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="glossary" type="tGlossary" />
    <xsd:complexType name="tGlossary">
        <xsd:complexContent>
            <xsd:extension base="bpmn:tBaseElement">
                <xsd:sequence>
                    <xsd:element name="type" type="tGlossaryType" />
                    <xsd:element name="name" type="xsd:string" />
                    <xsd:element name="description" type="xsd:string" minOccurs="0" />
                </xsd:sequence>
                <xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="glossaryType" type="tGlossaryType" />
    <xsd:simpleType name="tGlossaryType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="InputOuput" />
            <xsd:enumeration value="Actor" />
            <xsd:enumeration value="System" />
            <xsd:enumeration value="Problem" />
            <xsd:enumeration value="CustomerSupplier" />
            <xsd:enumeration value="CustomText1" />
            <xsd:enumeration value="CustomText2" />
            <xsd:enumeration value="CustomText3" />
            <xsd:enumeration value="CustomText4" />
            <xsd:enumeration value="CustomText5" />
            <xsd:enumeration value="CustomText6" />
            <xsd:enumeration value="CustomText7" />
            <xsd:enumeration value="CustomText8" />
            <xsd:enumeration value="CustomText9" />
            <xsd:enumeration value="CustomText10" />
            <xsd:enumeration value="CustomText11" />
            <xsd:enumeration value="CustomText12" />
            <xsd:enumeration value="CustomText13" />
            <xsd:enumeration value="CustomText14" />
            <xsd:enumeration value="CustomText15" />
            <xsd:enumeration value="CustomText16" />
            <xsd:enumeration value="CustomText17" />
            <xsd:enumeration value="CustomText18" />
            <xsd:enumeration value="CustomText19" />
            <xsd:enumeration value="CustomText20" />
        </xsd:restriction>
    </xsd:simpleType>

    <!-- Definitions for milestones extension -->
    <xsd:element name="milestones" type="tMilestones" />
    <xsd:complexType name="tMilestones">
        <xsd:complexContent>
            <xsd:extension base="bpmn:tLaneSet" />
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="milestone" type="tMilestone" substitutionGroup="bpmn:lane" />
    <xsd:complexType name="tMilestone">
        <xsd:complexContent>
            <xsd:extension base="bpmn:tLane">
                <xsd:sequence>
                    <xsd:element ref="properties" minOccurs="0" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <!-- Definitions for properties extension -->
    <xsd:element name="properties" type="tProperties" />
    <xsd:complexType name="tProperties">
        <xsd:complexContent>
            <xsd:extension base="bpmn:tBaseElement">
                <xsd:sequence>
                    <xsd:element ref="property" minOccurs="0" maxOccurs="unbounded" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="property" type="tProperty" />
    <xsd:complexType name="tProperty">
        <xsd:complexContent>
            <xsd:extension base="bpmn:tBaseElement">
                <xsd:sequence>
                    <xsd:element ref="propertyName" minOccurs="1" maxOccurs="1" />
                    <xsd:element ref="propertyValue" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="tCustomProperty">
        <xsd:complexContent>
            <xsd:extension base="tProperty">
                <xsd:sequence>
                    <xsd:element name="label" type="xsd:string" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <!-- The list of supported properties -->
    <xsd:element name="propertyName" type="tPropertyName" />
    <xsd:simpleType name="tPropertyName">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="customers" />
            <xsd:enumeration value="businessOwners" />
            <xsd:enumeration value="suppliers" />
            <xsd:enumeration value="experts" />
            <xsd:enumeration value="systems" />
            <xsd:enumeration value="cost" />
            <xsd:enumeration value="risk" />
            <xsd:enumeration value="problems" />
            <xsd:enumeration value="valueAdd" />
            <xsd:enumeration value="cycleTime" />
            <xsd:enumeration value="workTime" />
            <xsd:enumeration value="waitTime" />
            <xsd:enumeration value="color" />
            <xsd:enumeration value="inputs" />
            <xsd:enumeration value="outputs" />
            <xsd:enumeration value="customText1" />
            <xsd:enumeration value="customText2" />
            <xsd:enumeration value="customText3" />
            <xsd:enumeration value="customText4" />
            <xsd:enumeration value="customText5" />
            <xsd:enumeration value="customText6" />
            <xsd:enumeration value="customText7" />
            <xsd:enumeration value="customText8" />
            <xsd:enumeration value="customText9" />
            <xsd:enumeration value="customText10" />
            <xsd:enumeration value="customText11" />
            <xsd:enumeration value="customText12" />
            <xsd:enumeration value="customText13" />
            <xsd:enumeration value="customText14" />
            <xsd:enumeration value="customText15" />
            <xsd:enumeration value="customText16" />
            <xsd:enumeration value="customText17" />
            <xsd:enumeration value="customText18" />
            <xsd:enumeration value="customText19" />
            <xsd:enumeration value="customText20" />
            <xsd:enumeration value="customNumber1" />
            <xsd:enumeration value="customNumber2" />
            <xsd:enumeration value="customNumber3" />
            <xsd:enumeration value="customNumber4" />
            <xsd:enumeration value="customNumber5" />
            <xsd:enumeration value="customNumber6" />
            <xsd:enumeration value="customNumber7" />
            <xsd:enumeration value="customNumber8" />
            <xsd:enumeration value="customNumber9" />
            <xsd:enumeration value="customNumber10" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:element name="propertyValue" type="tPropertyValue" />
    <xsd:complexType name="tPropertyValue" abstract="true" />

    <xsd:element name="referenceValue" type="tReferenceValue" substitutionGroup="propertyValue" />
    <xsd:complexType name="tReferenceValue">
        <xsd:complexContent>
            <xsd:extension base="tPropertyValue">
                <xsd:attribute name="valueRef" type="xsd:QName" use="required" />
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="problem" type="tProblem" substitutionGroup="propertyValue" />
    <xsd:complexType name="tProblem">
        <xsd:complexContent>
            <xsd:extension base="tReferenceValue">
                <xsd:sequence>
                    <xsd:element name="severity" type="tLevel" minOccurs="1" maxOccurs="1" />
                    <xsd:element name="frequency" type="tLevel" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="riskValue" type="tRisk" substitutionGroup="propertyValue" />
    <xsd:complexType name="tRisk">
        <xsd:complexContent>
            <xsd:extension base="tPropertyValue">
                <xsd:sequence>
                    <xsd:element name="level" type="tRiskLevel" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="cycleTime" type="tCycleTime" substitutionGroup="propertyValue" />
    <xsd:complexType name="tCycleTime">
        <xsd:complexContent>
            <xsd:extension base="tNumericLiteralValue">
                <xsd:sequence>
                    <xsd:element name="unit" type="tTimeUnit" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="workTime" type="tWorkTime" substitutionGroup="propertyValue" />
    <xsd:complexType name="tWorkTime">
        <xsd:complexContent>
            <xsd:extension base="tNumericLiteralValue">
                <xsd:sequence>
                    <xsd:element name="unit" type="tTimeUnit" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="waitTime" type="tWaitTime" substitutionGroup="propertyValue" />
    <xsd:complexType name="tWaitTime">
        <xsd:complexContent>
            <xsd:extension base="tNumericLiteralValue">
                <xsd:sequence>
                    <xsd:element name="unit" type="tTimeUnit" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="valueAdd" type="tValueAdd" substitutionGroup="propertyValue" />
    <xsd:complexType name="tValueAdd">
        <xsd:complexContent>
            <xsd:extension base="tPropertyValue">
                <xsd:sequence>
                    <xsd:element name="hasValue" type="tOption" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="numericliteralValue" type="tNumericLiteralValue" substitutionGroup="propertyValue" />
    <xsd:complexType name="tNumericLiteralValue">
        <xsd:complexContent>
            <xsd:extension base="tPropertyValue">
                <xsd:sequence>
                    <xsd:element name="value" type="xsd:decimal" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="stringliteralValue" type="tStringLiteralValue" substitutionGroup="propertyValue" />
    <xsd:complexType name="tStringLiteralValue">
        <xsd:complexContent>
            <xsd:extension base="tPropertyValue">
                <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="level" type="tLevel" />
    <xsd:simpleType name="tLevel">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Low" />
            <xsd:enumeration value="Medium" />
            <xsd:enumeration value="High" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:element name="timeUnit" type="tTimeUnit" />
    <xsd:simpleType name="tTimeUnit">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Minutes" />
            <xsd:enumeration value="Hours" />
            <xsd:enumeration value="Days" />
            <xsd:enumeration value="Weeks" />
            <xsd:enumeration value="Months" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:element name="rishLevel" type="tRiskLevel" />
    <xsd:simpleType name="tRiskLevel">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Controlled" />
            <xsd:enumeration value="Low" />
            <xsd:enumeration value="Medium" />
            <xsd:enumeration value="High" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:element name="option" type="tOption" />
    <xsd:simpleType name="tOption">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Yes" />
            <xsd:enumeration value="No" />
            <xsd:enumeration value="Required" />
        </xsd:restriction>
    </xsd:simpleType>

    <!-- Definitions for links extension -->
    <xsd:element name="links" type="tLinks" />
    <xsd:complexType name="tLinks">
        <xsd:complexContent>
            <xsd:extension base="bpmn:tBaseElement">
                <xsd:sequence>
                    <xsd:element ref="link" minOccurs="0" maxOccurs="unbounded" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="link" type="tLink" />
    <xsd:complexType name="tLink">
        <xsd:attribute name="linkedElement" type="xsd:QName" use="optional" />
    </xsd:complexType>
</xsd:schema>