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):

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:

and are processed as follows:

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:

  1. 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"
    If the value of class is empty, or the class attribute does not exist, {class} will be removed from the string flowseqmaxproperty="pmcom.progressmap.[SCTICKET|sc].ticket.seq"

  2. [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'.

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):

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'.

Note: A progress map is normally defined using a comma-delimited series of statuses, for example, NEW,APPLM,APPFM,INPROG. Each of these statuses will display as a separate nodes in the progress map. By separating statuses using a colon, it is now also possible to group statuses and display them as one node. For example, NEW:APPLM:APPFM,INPROG will group NEW, APPLM and APPFM as equivalent, so only NEW and INPROG will display as nodes in the progress map.


Feedback