Progress map 'dynamic property selection'
Progress map 'dynamic property selection' or 'token replacement' functionality applies to all applications/objects that are progress-map-enabled. This includes the Change, Release, Service Request, Incident, and Problem applications.
The progressmap control accepts a 'flowseqmaxproperty' attribute; from the application definition (xml):
- <progressmap flowseqattribute="PMCOMFLOWSEQ" flowseqmaxproperty="pmchg.progressmap.change.seq" flowstatusattribute="STATUS" id="progressmap" width="100%"/>
This attribute refers to the system property used to render the progressmap: in this example the name of the system property is 'pmchg.progressmap.change.seq'. This system property contains a string of comma-delimited values that will be rendered as progressmap nodes. There may be situations were the progressmap should display a different set of nodes based on object data. To facilitate this behavior, the progressmap control accepts the following replacement tokens:
- [CONDITION|string]
- {field}
- (field)
and are processed as follows:
- [CONDITION|string] will be replaced with string if CONDITION evaluates to true. CONDITION is just a regular TPAE condition created in the Conditional Expression Manager application.
- {field} will be replaced by the value of field from the current object. If field is associated with a domain, then {field} will be replaced by the internal value of field according to the rules of the domain.
- (field) will be replaced by the value of field from the current object (as-is, without domain conversion).
For example for a Ticket, with the following system property: flowseqmaxproperty="pmcom.progressmap.[SCTICKET|sc].{class}.ticket.seq", the substitution tokens [] and {} will be processed by the control in the following order:
- Replace {class} with the current value
of the current object's 'CLASS' field.
For example, if CLASS=SR then the string becomes:
- flowseqmaxproperty="pmcom.progressmap.[SCTICKET|sc].SR.ticket.seq"
- [SCTICKET|sc] is processed as follows:
SCTICKET is the name of a condition (defined in the conditional expression manager application). If the expression evaluates to "true" then the text between, and including the brackets, will be replaced with 'sc'. flowseqmaxproperty="pmcom.progressmap.sc.SR.ticket.seq"
If the expression evaluates to "false" then the text between, and including the brackets, will be removed from the string: flowseqmaxproperty="pmcom.progressmap.SR.ticket.seq"
For example for a Change with PMCHGTYPE field = 'Test'. The PMCHGTYPE field is backed by a SYNONYMDOMAIN in which the value 'Test' is associated with the internal value 'Normal'.
- <progressmap flowseqattribute="PMCOMFLOWSEQ" flowseqmaxproperty="pmchg.progressmap.(pmchgtype).change.seq" flowstatusattribute="STATUS" id="progressmap4" width="100%/>
- flowseqmaxproperty="pmchg.progressmap.(pmchgtype).change.seq"
In this case, given that PMCHGTYPE field value = 'test' the progressmap control code will look for a system property by the name: pmchg.progressmap.test.change.seq
If you were to change the flowseqmaxproperty string to (braces instead of parentheses):
- flowseqmaxproperty="pmchg.progressmap.{pmchgtype}.change.seq"
In this case, given that PMCHGTYPE field value = 'test' the progressmap control code will look for a system property by the name: pmchg.progressmap.normal.change.seq, because the internal domain value for 'test' is 'normal'.