Advanced Topics


Working with Workflows

Workflows are a fundamental part of examination. They organize any number of separate tests and checks in a hierarchy of steps. This document is a more detailed discussion of the backing data model and options to create workflows, or adjust them as needed. They are fully customizable by the jurisdiction.

Imported data contains properties that define the type of plan or submission. Depending on the type, the associated workflow is loaded and is visible in the Workflow Control window. An overview and operational details of the workflow use in the application UI is available here.

Data Model

The data model for the workflows used in PlanTest is our first concern. The XML schema, which is addressed at the end of the document, is best represented in the XSD file. There are a few differences between the data model terminology and the XML implementation.

Workflow


A workflow is collection of steps for a particular plan (data set) type. It is always associated with a particular purpose and data set type (plan type).

Workflow Properties

  1. Name – simple name for workflow.
  2. DatasetType – one of the enumerated types in custom schema. (enumWorkflow) usually as a list of plan types for the jurisdiction.
  3. Description – sentence or paragraph describing the workflow.
  4. Steps – a hierarchical collection of steps.

Step


A step is a documented unit of analysis. In our framework, each step is independent. Workflows reference steps. Steps can have UI components, or rely only on core reporting. Steps with UI components are not suitable for reuse in batch processing of an analysis. Each step may have both an automated pass/fail result, related to a specific automated test, and a user decision pass/fail if the step is run interactively.

Step Properties

  1. Name (string). A simple descriptive name, such as ‘Boundary Marks’.
  2. Tip (string). Short text description shown when cursor hovers over the tree node for the step.
  3. Description (string). A sentence / paragraph describing the step or giving instructions to the user.
  4. Test (string). Name of automated test module (class from TestBase).
  5. Auto (Boolean). True if analytic test can be used in batch run.
  6. Views (string). A collection of zero or more visualization objects, for now these are layer files.
  7. Messages (string). A collection of zero or more message objects.
  8. Children (step). A collection of zero or more steps grouped under the step.

View


A view is a collection of visualization parameters for specific data types in the subject data set. Currently, they are ArcGIS layer files that are read and modified dynamically.

View Properties

  1. Name – name of the layer file.

Creating Workflows


Workflows are defined in special XML files. The best way to create a new workflow is to modify an existing workflow, especially if there is a core of steps that must be followed for all plans.

Solution Architecture


The following is a technical description of the analysis and workflow objects used in PlanTest. If you are involved in the business processes analysis and implementation of PlanTest in your organization, these notes will be essential reading.

A core concept of PlanTest is the ability to easily create custom workflows. These are built through simple edits of the standard workflow template XML. This approach can easily set steps, documentation, messages, map visualization and automated tests for specific types of data. The control over the workflows empowers continued refinement and adaptation of business processes.

PlanTest workflows specialize in spatial visualization and numerical analysis. This section clarifies the objects and relationships central to the sequencing of steps in the analysis. The Object Model Diagram below shows the objects and relationships of PlanTest's analysis models.


Analysis Objects
PlanTest Analysis Objects Model Diagram.

Example Workflow Document


The following is an excerpt of a workflow file showing only a few steps. In practice, there are usually more than one hundred steps, depending on the jurisdiction.

<Exam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Identifier>Registered</Identifier>
   <Description>Registered Plan Workflow</Description>
   <Owner>Jason Argonaut</Owner>
   <Version>4.0</Version>
   <LastModified>20/03/2019</LastModified>
   <DataSetType>SIdata</DataSetType>
   <RootStep>
      <Name>Registered</Name>
      <Tip>All tests for Registered Plans</Tip>
      <Description>Registered Plan Workflow</Description>
      <Test>NoCheck</Test>
      <Auto>false</Auto>
      <Decide>false</Decide>
      <Children>
         <Step>
            <Name>1 Diagnostic Reports</Name>
            <Tip>Reports relevant diagnostic results</Tip>
            <Test>NoCheck</Test>
            <Auto>false</Auto>
            <Decide>false</Decide>
            <Children>
               <Step>
                  <Name>1.1 Load Report</Name>
                  <Tip>Reports any load issues</Tip>
                  <Description>Reports any errors or important information generated during the Extract Translate Load (ETL) modules processing the CEXML fabric.</Description>
                  <Test>ETL_Messages</Test>
                  <Auto>true</Auto>
                  <Decide>false</Decide>
                  <Views>
                     <View>Parcels_Standard.lyr</View>
                     <View>Lines_Standard.lyr</View>
                     <View>Points_Standard.lyr</View>
                     <View>Control_Standard.lyr</View>
                  </Views>
                  <Children />
               </Step>
               <Step>
                  <Name>1.2 Burdened Land</Name>
                  <Tip>Establish relationship between lots and easements.</Tip>
                  <Description>Sets parcel property to indicate parcel burdened by easement.</Description>
                  <Test>Fabric_BurdenedLand</Test>
                  <Auto>true</Auto>
                  <Decide>false</Decide>
                  <Views>
                     <View>Parcels_EasementName.lyr</View>
                     <View>Lines_Standard.lyr</View>
                     <View>Points_Standard.lyr</View>
                     <View>Control_Standard.lyr</View>
                  </Views>
                  <Children />
               </Step>
            </Children>
         </Step>
      </Children>
   </RootStep>
</Exam>