I've recently been in a project, that is using YAWL to capture workflows and make them executable via YAWL's dynamic form generation. YAWL was very useful to build a prototype of the system. We had to capture an comparative large amount data that is always redisplayed (and edited) throughout the whole workflow. We used XML Schema to define different structured data types. These data types were very useful as we need to save/load from/to a database.
Unfortunately it is not possible to provide a label for each element of the XML Schema or a description that is displayed above the generated field in a dynamic form. Of course it is possible to specify this information in the extended attributes of a task decomposition variable. But this means that we're loosing the advantage of mapping only one variable with a complex type. Additionally we've to specify the label and description in each task that is using our variable.
We needed a way to customize the appearance of the dynamic form (generated by the YAWL Resource Service) if using complex types defined in XSD.
From my point of view there are two ways to achieve this:
1. Define additional attributes (e.g. label, description) in a YAWL namespace that may be used to customize the appearance in the dynamic form. For example:
<xs:complexType name="placeOfBirthType"> <xs:sequence> <xs:element name="place" type="xs:string" yawl:label="City of Birth" yawl:description="The city of birth as it appears in your passport." /> <xs:element name="country" type="xs:string" yawl:label="Country of Birth" yawl:description="The country of birth as it appears in your passport." /> </xs:sequence> </xs:complexType>
A complex type would be displayed in the same layout everywhere.
2. Extend the YAWL Editor with a feature that allow me to specify extended attributes for each element contained in a XSD complex type. Not only the whole complex type.
What is your opinion on this matter?