blob: 63cf9508c5f3ba2ff13fbd9fbcb49d99d55d130e [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<ref name="workflow"/>
</start>
<define name="workflow">
<element name="workflow">
<attribute name="name">
<data type="string"/>
</attribute>
<attribute name="version">
<data type="integer"/>
</attribute>
<zeroOrMore>
<ref name="node"/>
</zeroOrMore>
<zeroOrMore>
<ref name="variableHandler"/>
</zeroOrMore>
</element>
</define>
<define name="node">
<element name="node">
<attribute name="id">
<data type="integer"/>
</attribute>
<attribute name="type">
<data type="string"/>
</attribute>
<optional>
<attribute name="serviceObjectClass">
<data type="string"/>
</attribute>
</optional>
<optional>
<attribute name="subWorkflowName">
<data type="string"/>
</attribute>
</optional>
<optional>
<element name="in">
<oneOrMore>
<element name="variable">
<attribute name="name">
<data type="string"/>
</attribute>
<attribute name="as">
<data type="string"/>
</attribute>
</element>
</oneOrMore>
</element>
<element name="out">
<oneOrMore>
<element name="variable">
<attribute name="name">
<data type="string"/>
</attribute>
<attribute name="as">
<data type="string"/>
</attribute>
</element>
</oneOrMore>
</element>
</optional>
<optional>
<attribute name="variable">
<data type="string"/>
</attribute>
</optional>
<optional>
<attribute name="operand">
<data type="string"/>
</attribute>
</optional>
<optional>
<ref name="arguments"/>
</optional>
<optional>
<oneOrMore>
<ref name="condition"/>
</oneOrMore>
</optional>
<optional>
<oneOrMore>
<element name="variable">
<attribute name="name">
<data type="string"/>
</attribute>
<optional>
<ref name="condition"/>
</optional>
<optional>
<ref name="variable"/>
</optional>
</element>
</oneOrMore>
</optional>
<optional>
<oneOrMore>
<ref name="outNode"/>
</oneOrMore>
</optional>
</element>
</define>
<define name="outNode">
<element name="outNode">
<attribute name="id">
<data type="integer"/>
</attribute>
</element>
</define>
<define name="condition">
<element name="condition">
<attribute name="type">
<data type="string"/>
</attribute>
<optional>
<attribute name="a">
<data type="string"/>
</attribute>
</optional>
<optional>
<attribute name="b">
<data type="string"/>
</attribute>
</optional>
<optional>
<attribute name="name">
<data type="string"/>
</attribute>
</optional>
<optional>
<attribute name="value">
<data type="string"/>
</attribute>
</optional>
<optional>
<attribute name="variable">
<data type="string"/>
</attribute>
</optional>
<optional>
<ref name="array"/>
</optional>
<optional>
<oneOrMore>
<ref name="condition"/>
</oneOrMore>
</optional>
<optional>
<ref name="outNode"/>
</optional>
<optional>
<ref name="else"/>
</optional>
</element>
</define>
<define name="else">
<element name="else">
<ref name="outNode"/>
</element>
</define>
<define name="variableHandler">
<element name="variableHandler">
<attribute name="variable">
<data type="string"/>
</attribute>
<attribute name="class">
<data type="string"/>
</attribute>
</element>
</define>
<define name="arguments">
<element name="arguments">
<zeroOrMore>
<ref name="variable"/>
</zeroOrMore>
</element>
</define>
<define name="variable">
<choice>
<ref name="array"/>
<ref name="boolean"/>
<ref name="double"/>
<ref name="integer"/>
<ref name="null"/>
<ref name="object"/>
<ref name="string"/>
</choice>
</define>
<define name="array">
<element name="array">
<zeroOrMore>
<ref name="element"/>
</zeroOrMore>
</element>
</define>
<define name="element">
<element name="element">
<attribute name="key">
<data type="string"/>
</attribute>
<ref name="variable"/>
</element>
</define>
<define name="boolean">
<element name="boolean">
<data type="string"/>
</element>
</define>
<define name="double">
<element name="double">
<data type="double"/>
</element>
</define>
<define name="integer">
<element name="integer">
<data type="integer"/>
</element>
</define>
<define name="null">
<element name="null">
<text/>
</element>
</define>
<define name="object">
<element name="object">
<attribute name="class">
<data type="string"/>
</attribute>
<optional>
<ref name="arguments"/>
</optional>
</element>
</define>
<define name="string">
<element name="string">
<data type="string"/>
</element>
</define>
</grammar>