| <?xml version="1.0" encoding="UTF-8"?> |
| |
| <xs:schema xmlns= "urn:jbpm.org:jpdl-3.1" |
| targetNamespace="urn:jbpm.org:jpdl-3.1" |
| xmlns:xs="http://www.w3.org/2001/XMLSchema" |
| elementFormDefault="qualified"> |
| |
| <!-- PROCESS-DEFINITION --> |
| <!-- ################## --> |
| <xs:element name="process-definition"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element ref="swimlane" /> |
| <xs:element ref="start-state" /> |
| <xs:group ref="node-elements"/> |
| <xs:group ref="action-elements" /> |
| <xs:element ref="event" /> |
| <xs:element ref="exception-handler" /> |
| <xs:element ref="task" /> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" use="required" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- SWIMLANE --> |
| <!-- ######## --> |
| <xs:element name="swimlane"> |
| <xs:complexType> |
| <xs:sequence minOccurs="0" maxOccurs="1"> |
| <xs:element ref="assignment"/> |
| </xs:sequence> |
| <xs:attribute name="name" type="xs:string" use="required" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- NODES --> |
| <!-- ##### --> |
| <xs:element name="start-state"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element ref="task"/> |
| <xs:element ref="transition"/> |
| <xs:element ref="event"/> |
| <xs:element ref="exception-handler"/> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string"/> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="end-state"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element ref="event"/> |
| <xs:element ref="exception-handler"/> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="decision"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element name="handler" type="delegation" /> |
| <xs:element ref="event"/> |
| <xs:element ref="exception-handler"/> |
| <xs:element name="transition"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element name="condition"> |
| <xs:complexType mixed="true"> |
| <xs:sequence minOccurs="0" maxOccurs="unbounded"> |
| <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> |
| </xs:sequence> |
| <xs:attribute name="expression" type="xs:string" /> |
| </xs:complexType> |
| </xs:element> |
| <xs:group ref="action-elements"/> |
| <xs:element ref="exception-handler"/> |
| </xs:choice> |
| <xs:attribute name="to" type="xs:string" use="required" /> |
| <xs:attribute name="name" type="xs:string" /> |
| </xs:complexType> |
| </xs:element> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="expression" type="xs:string" /> |
| <xs:attribute name="async" type="xs:string" default="false" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="fork"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element ref="script" /> |
| <xs:group ref="node-content-elements" /> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="async" type="xs:string" default="false" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="join"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:group ref="node-content-elements" /> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="async" type="xs:string" default="false" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="node"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:choice minOccurs="0"> |
| <xs:group ref="action-elements" /> |
| </xs:choice> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:group ref="node-content-elements" /> |
| </xs:choice> |
| </xs:sequence> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="async" type="xs:string" default="false" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="process-state"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element name="sub-process"> |
| <xs:complexType> |
| <xs:attribute name="name" type="xs:string" use="required" /> |
| <xs:attribute name="version" type="xs:integer" /> |
| </xs:complexType> |
| </xs:element> |
| <xs:element ref="variable" /> |
| <xs:group ref="node-content-elements" /> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="async" type="xs:string" default="false" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="state"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:group ref="node-content-elements"/> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="async" type="xs:string" default="false" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="super-state"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:group ref="node-elements"/> |
| <xs:group ref="node-content-elements"/> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="async" type="xs:string" default="false" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="task-node"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element ref="task" /> |
| <xs:group ref="node-content-elements" /> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="create-tasks" type="booleanType" default="true" /> |
| <xs:attribute name="end-tasks" type="booleanType" default="false" /> |
| <xs:attribute name="signal" default="last"> |
| <xs:simpleType> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="unsynchronized"/> |
| <xs:enumeration value="never"/> |
| <xs:enumeration value="first"/> |
| <xs:enumeration value="first-wait"/> |
| <xs:enumeration value="last"/> |
| <xs:enumeration value="last-wait"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| <xs:attribute name="async" type="xs:string" default="false" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- TRANSITION --> |
| <!-- ########## --> |
| <xs:element name="transition"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:group ref="action-elements"/> |
| <xs:element ref="exception-handler" /> |
| </xs:choice> |
| <xs:attribute name="to" type="xs:string" use="required" /> |
| <xs:attribute name="name" type="xs:string" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- ACTIONS --> |
| <!-- ####### --> |
| <xs:element name="action"> |
| <xs:complexType mixed="true"> |
| <xs:sequence> |
| <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> |
| </xs:sequence> |
| <xs:attribute name="class" type="xs:string" /> |
| <xs:attribute name="config-type" default="field"> |
| <xs:simpleType> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="field"/> |
| <xs:enumeration value="bean"/> |
| <xs:enumeration value="constructor"/> |
| <xs:enumeration value="configuration-property"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| <xs:attribute name="name" type="xs:string" /> |
| <xs:attribute name="ref-name" type="xs:string" /> |
| <xs:attribute name="accept-propagated-events" type="booleanType" default="true" /> |
| <xs:attribute name="expression" type="xs:string" /> |
| <xs:attribute name="async" type="xs:string" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="cancel-timer"> |
| <xs:complexType> |
| <xs:attribute name="name" type="xs:string" use="required" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="create-timer"> |
| <xs:complexType> |
| <xs:choice> |
| <xs:element ref="action"/> |
| <xs:element ref="script"/> |
| </xs:choice> |
| <xs:attribute name="duedate" type="xs:string" use="required" /> |
| <xs:attribute name="name" type="xs:string" /> |
| <xs:attribute name="repeat" type="xs:string" /> |
| <xs:attribute name="transition" type="xs:string" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="script"> |
| <xs:complexType mixed="true"> |
| <xs:sequence> |
| <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> |
| </xs:sequence> |
| <xs:attribute name="name" type="xs:string" /> |
| <xs:attribute name="accept-propagated-events" type="booleanType" default="true" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- EVENT --> |
| <!-- ##### --> |
| <xs:element name="event"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:group ref="action-elements"/> |
| </xs:choice> |
| <xs:attribute name="type" use="required"> |
| <xs:simpleType> |
| <xs:union> |
| <xs:simpleType> |
| <xs:restriction base="xs:string"/> |
| </xs:simpleType> |
| <xs:simpleType> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="node-enter"/> |
| <xs:enumeration value="node-leave"/> |
| <xs:enumeration value="process-start"/> |
| <xs:enumeration value="process-end"/> |
| <xs:enumeration value="task-create"/> |
| <xs:enumeration value="task-assign"/> |
| <xs:enumeration value="task-start"/> |
| <xs:enumeration value="task-end"/> |
| <xs:enumeration value="before-signal"/> |
| <xs:enumeration value="after-signal"/> |
| <xs:enumeration value="superstate-enter"/> |
| <xs:enumeration value="superstate-leave"/> |
| <xs:enumeration value="timer-create"/> |
| <xs:enumeration value="subprocess-created"/> |
| <xs:enumeration value="subprocess-end"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:union> |
| </xs:simpleType> |
| </xs:attribute> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- EXCEPTION-HANDLER --> |
| <!-- ################# --> |
| <xs:element name="exception-handler"> |
| <xs:complexType> |
| <xs:choice minOccurs="1" maxOccurs="unbounded"> |
| <xs:element ref="action"/> |
| <xs:element ref="script"/> |
| </xs:choice> |
| <xs:attribute name="exception-class" type="xs:string"/> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- TASK --> |
| <!-- #### --> |
| <xs:element name="task"> |
| <xs:complexType> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element ref="assignment"/> |
| <xs:element ref="controller"/> |
| <xs:element ref="event"/> |
| <xs:element ref="timer"/> |
| </xs:choice> |
| <xs:attribute name="name" type="xs:string" /> |
| <xs:attribute name="blocking" type="booleanType" default="false"/> |
| <xs:attribute name="signalling" type="booleanType" default="true"/> |
| <xs:attribute name="description" type="xs:string" /> |
| <xs:attribute name="duedate" type="xs:string" /> |
| <xs:attribute name="swimlane" type="xs:string" /> |
| <xs:attribute name="priority" type="priorityType" default="normal" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="controller" type="delegation" /> |
| |
| <xs:element name="assignment"> |
| <xs:complexType> |
| <xs:complexContent> |
| <xs:extension base="delegation"> |
| <xs:attribute name="expression" type="xs:string" /> |
| <xs:attribute name="actor-id" type="xs:string" /> |
| <xs:attribute name="pooled-actors" type="xs:string" /> |
| </xs:extension> |
| </xs:complexContent> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- TIMER --> |
| <!-- ##### --> |
| <xs:element name="timer"> |
| <xs:complexType> |
| <xs:choice> |
| <xs:element ref="action"/> |
| <xs:element ref="script"/> |
| </xs:choice> |
| <xs:attribute name="duedate" type="xs:string" use="required" /> |
| <xs:attribute name="name" type="xs:string" /> |
| <xs:attribute name="repeat" type="xs:string" /> |
| <xs:attribute name="transition" type="xs:string" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="variable"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> |
| </xs:sequence> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="access" type="xs:string" default="read,write"/> |
| <xs:attribute name="mapped-name" type="xs:string" /> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- TYPES AND GROUPS --> |
| <!-- ################ --> |
| <xs:complexType name="delegation" mixed="true"> |
| <xs:sequence> |
| <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> |
| </xs:sequence> |
| <xs:attribute name="class" type="xs:string" /> |
| <xs:attribute name="config-type" default="field"> |
| <xs:simpleType> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="field"/> |
| <xs:enumeration value="bean"/> |
| <xs:enumeration value="constructor"/> |
| <xs:enumeration value="configuration-property"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| </xs:complexType> |
| |
| <xs:simpleType name="configType"> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="field"/> |
| <xs:enumeration value="bean"/> |
| <xs:enumeration value="constructor"/> |
| <xs:enumeration value="configuration-property"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <xs:simpleType name="booleanType"> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="yes"/> |
| <xs:enumeration value="no"/> |
| <xs:enumeration value="true"/> |
| <xs:enumeration value="false"/> |
| <xs:enumeration value="on"/> |
| <xs:enumeration value="off"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <xs:simpleType name="priorityType"> |
| <xs:union> |
| <xs:simpleType> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="highest"/> |
| <xs:enumeration value="high"/> |
| <xs:enumeration value="normal"/> |
| <xs:enumeration value="low"/> |
| <xs:enumeration value="lowest"/> |
| </xs:restriction> |
| </xs:simpleType> |
| <xs:simpleType> |
| <xs:restriction base="xs:int"/> |
| </xs:simpleType> |
| </xs:union> |
| </xs:simpleType> |
| |
| <xs:group name="node-elements"> |
| <xs:choice> |
| <xs:element ref="node"/> |
| <xs:element ref="state"/> |
| <xs:element ref="task-node"/> |
| <xs:element ref="super-state"/> |
| <xs:element ref="process-state"/> |
| <xs:element ref="fork"/> |
| <xs:element ref="join"/> |
| <xs:element ref="decision"/> |
| <xs:element ref="end-state"/> |
| </xs:choice> |
| </xs:group> |
| |
| <xs:group name="action-elements"> |
| <xs:choice> |
| <xs:element ref="action"/> |
| <xs:element ref="script"/> |
| <xs:element ref="create-timer"/> |
| <xs:element ref="cancel-timer"/> |
| </xs:choice> |
| </xs:group> |
| |
| <xs:group name="node-content-elements"> |
| <xs:choice> |
| <xs:element ref="event"/> |
| <xs:element ref="exception-handler"/> |
| <xs:element ref="timer"/> |
| <xs:element ref="transition"/> |
| </xs:choice> |
| </xs:group> |
| |
| </xs:schema> |