Checlist Data Storage and Access


Overview

From the storage point of view we make a distinction between a checklist template and a checklist instance. Additionally we store values and structure for reporting purpose and easier access via API in a separate DTO for checklist instance element data.


Checklist Template vs. Checklist Instance

Checklist Template

1 Represents the structure of the form and the element composing it (together with their static values for the titles etc.)
2 Is a ‘blank form’ that can be filled many times.
3 Is stored in the cloud as a ChecklistTemplate DTO object.
4 Is created and modified by Checklist Designer only.
4 Is versioned: each version is stored as a different object in the cloud.
5 Needed for supporting the evolution/development of the form.
6 Has statuses reflecting its lifecycle state (ready to be used for new checklists or still in construction).

Checklist Instance

1 Represents the values typed by the user to fill the template (see above).
2 Is stored in the cloud as ChecklistInstance DTO.
3 Contains link to the template on which it was created.
4 Can be read by any mobile client.

Checklist Instance Element Data

Checklist instance element data represents the values typed by the user to fill the template including the structural information from the template required to build a report or do analytics. This information is stored in the cloud in the ChecklistInstanceElement DTO.

This information contains all relevant information for:

  • creating reports and the values in a table view
  • filling in checklist instances via the Web Application
  • all content can be queried via Query API

Data Storage

Checklist Template

A checklist template is stored in the ChecklistTemplate data transfer object in the cloud.

The content field holds the elements of the template and is stored as a binary zip file formatted as follows:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.coresuite.net/schemas/checklists/common_types_version1"
           xmlns="http://www.coresuite.net/schemas/checklists/common_types_version1"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">
      
    <xs:simpleType name="emptyStringType">
        <xs:restriction base="xs:string">
            <xs:enumeration value=""></xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
      
    <xs:simpleType name="guidType">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"></xs:pattern>
        </xs:restriction>
    </xs:simpleType>
      
    <xs:simpleType name="cloudGuidType">
        <xs:restriction base="xs:string">
            <xs:pattern value="cloud\([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\)"></xs:pattern>
        </xs:restriction>
    </xs:simpleType>
      
    <xs:simpleType name="booleanInputContentType">
        <xs:restriction base="xs:string">
            <xs:enumeration value=""/>
            <xs:enumeration value="true"/>
            <xs:enumeration value="false"/>
        </xs:restriction>
    </xs:simpleType>
      
    <xs:simpleType name="dateInputContentType">
        <xs:union memberTypes="xs:date xs:dateTime xs:time emptyStringType"></xs:union>
    </xs:simpleType>
      
    <xs:simpleType name="numberInputContentType">
        <xs:union memberTypes="emptyStringType xs:decimal"></xs:union>
    </xs:simpleType>
      
    <xs:simpleType name="elementIdType">
        <xs:restriction base="xs:string">
            <xs:pattern value="_?[a-zA-Z]{1}[a-zA-Z0-9\-_]*"/>
        </xs:restriction>
    </xs:simpleType>
      
    <xs:simpleType name="elementIdPath">
        <xs:restriction base="xs:string">
            <xs:pattern value="(_?[a-zA-Z]{1}[a-zA-Z0-9\-_]*\.)+[a-zA-Z]+"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

Checklist Instance

The data entered by a user to fill in a checklist is referred to as a checklist instance.

This data is stored in XML files which are archived in a zip file, which is then encoded as binary data in the content field of the ChecklsitInstance cloud object.

The zip file will contain the following:

  • A file with the name pattern: values-x-yy.xml in which the checklist instance data was entered
  Notes
1 The x in the name pattern represents the version number of the checklist instance. Now this is always 1 in the past we supported several versions, see note below.
2 The yy represents the language code in which the checklist instance data was entered. In the past it was possible to have several files per language which is not anymore relevant.