Fautore - Configuration Management
This is a document to describe the structure of the Fautore configuration management strategy and how it is used.
Overview
The strategy in brief is to have system configuration values updated via CGI generated screens presented through the Fautore application. All characteristics of the configuration item is stored in a table. The table will store a value key, its associated value, the CGI display characteristics for the value, the CGI validation specification for the value, a grouping value by which similar configuration items will be related, and the metadata tracking information around value changes.
Table Structure
The below table defines the database table columns and their purpose.
Table Name: SystemSettings
Primary key: CfgItem
Column | Type | Purpose |
---|---|---|
CfgItem | varchar(64) | The configuration item name as referenced within the application code. |
CfgValue | varchar(128) | The member defined value for the configuration item |
CfgDef | varchar(128) | System default value to use to reset configuration items or in the case an individual configuration item value is made unusable somehow. |
Permission | varchar(128) | Value used to define tribe members capable of changing a particular configuration item. Default to Chieftain only. |
Group | varchar(64) | Value used to group configuration items supporting similar functionality together for convenient display. |
ChangedBy | varchar(45) | Username of member that last changed the value |
ChangedDate | Date | Date the configuration item value last changed the value |
DisplaySpec | varchar(1024) | Specification to define how the field should be displayed. (See "Display Specification" below.) |
ValidateSpec | varchar(1024) | Specification to define how configuration item value should be validated. (See "Validate Specification" below.) |
HelpText | varchar(256) | Descriptive text used to explain the configuration item purpose in the data entry form. |
Display Specification
The display specification is made up of 3 double tilde (~~) delimited fields.
Field | Purpose | Description |
---|---|---|
Type | Define input type | This field defines the type of form field to be used collecting configuration data from the tribe member. Field types may have subfields to further define their use. (See "Display Types" below for details.) |
Label | Field label (or prompt) | The field label to use for the value being collected. This could also be considered the "prompt." |
Detail | Define field details | This field could have any of several format definitions dependent on the provided "Type" value. (See "Display Types" below for details.) |
Display Types
The display types listed below are valid for use in the "Type" field to the data value of the "DisplaySpec" column of the "SystemSettings" database table.
Type | Description | Detail |
---|---|---|
text | Simple text field. | DxMThe Detail specification is an 'x' delimited definition of "Display Size" (D) and "Maximum Size" (M). The Display size is trimmed to "Max Size" if it is larger than that value. A single undelimited value indicates a display size of unlimited size. A delimited single value indicates "Display Size" and "Max Size" are the same.. Examples: text~~Name~~24 Field labelled as "Name" with display length 24 and unlimited length. text~~Name~~24x Field labelled as "Name" with display length 24 and 24 character max length. text~~Name~~24x48 Field labelled as "Name" with display length 24 and a max length of 48. |
textarea | Multi-line text area | RxCThe Detail specification is an 'x' delimited definition of "Rows" (R) and "Columns" (C). The row default is "3" and the column default is 60. Specifying only a single number with no delimiter will set the number of columns (width). The context of a single number with the 'x' delimiter depends on which side of the delimiter the number is on.. Examples: textarea~~Notes~~x42 Field labelled as "Notes" with display width of 42 and the default 3 rows (depth). This is the same as specifying "x42". textarea~~Notes~~7x Field labelled as "Notes" with display length of the default 60 column (width) and 7 rows deep. |
select | Selection field | dispval:selval,dispval:selval,dispval:selvalA comma separated pairing of select field "Display Value" (dispval) and "Selected Value" (selval) The dispval's are displayed in a dropdown list. The associated selval is saved to the database when that item is selected. Any item listed twice is considered the default value when displayed.. Examples: select~~Treat~~Soda:S,Candy:C,Nuts:N Present three treats in a dropdown list with associated acronym being saved out when a choice it made. select~~Option~~A:1,B:2,B:2,C:3 Present three options in a dropdown list with associated numeric value being saved out when a choice it made. The "B" option is the default choice. |
radio | Radio field set | dispval:selval,dispval:selval,dispval:selvalA comma separated pairing of radio field "Display Value" (dispval) and "Selected Value" (selval) The dispval's are displayed in a radio button configuration. The associated selval is saved to the database when that item is selected. Any item listed twice is considered the default value when displayed.. Examples: radio~~Broadcast~~Radio:r,TV:t,Stream:s Present three treats in a radio button set with associated acronym being saved out representing the choice made. radio~~Broadcast~~Radio:r,Radio:r,TV:t,Stream:s Present three treats in a radio button set with associated acronym being saved out representing the choice made. "Radio is the default choice. |
checkbox | Checkbox field | x:y The label is displayed with only a checkbox for entry. The 'x' parameter defines the unselected state. The 'y' parameter defines the selected state. The 'x' and 'y' parameters must be defined as a complete set, or not at all. A complete absence of x/y parameters defaults to x=0 and y=1. Examples: checkbox~~Hidden Display a checkbox with a label of "Hidden". The unchecked value will be recorded as the default of "0". The checked value will be recorded as the default value of "1". checkbox~~Hidden~~false:true Display a checkbox with a label of "Hidden". The unchecked value will be recorded as of "false". The checked value will be recorded as value of "true". |
Validate Specification
The validation functionality is boolean in its result. The runtime value provided to the field being defined will be evaluated to either pass or fail the defined specification. There is no "sort of."
The specification entered to this field is a label value specifying the "Type" of validation separated by double tilde's (~~) from the actual verification definition. Multiple verification definitions can be specified by separating them with a hash tilde (#~) combination.
Type | Description | Detail |
---|---|---|
minval | No less than | Single numeric value specifying the lowest number acceptable in the field. This number is inclusive. If "minval~~3" is specified in this field then a runtime value of "3" will pass, "2.9999" will fail. Non-numeric characters will also fail. |
maxval | No greater than | Single numeric value specifying the highest number acceptable in the field. This number is inclusive. If "max~~42" is specified in this field then a runtime value of "42" will pass, "42.0001" will fail. Non-numeric characters will also fail. |
minmaxval | Between these values | A colon separated set of two values. The left hand value indicates the low end of the range, the right hand side of the colon indicates the high end of the range. With a setting of "minmaxval~~3:42" a value of 3 will pass, 21 will pass, 42 will pass, 2 and 43 will both fail. Non-numeric characters will also fail. |
minlen | No smaller than | Single numeric value specifying the shortest acceptable length of value in the field. |
maxlen | No larger than | Single numeric value specifying the longest acceptable length of value in the field. |
minmaxlen | Between these values in length | A colon separated set of two values. The left hand value indicates the shortest acceptable length, the right hand side of the colon indicates the high end of the range. With a setting of "minmaxlen~~7:64" a value of length 7 will pass, and of length 64 will pass. Anything outside that range will fail. |
regex | Regular expression | Any valid regular expression for use in verifying the runtime data value entry. The regex need not be bracketed by slashes. A regex that might be written as "/(?!\w)/" to verify a value is numeric in other circumstances should be written as "(?!\w)" for use in this field. |