Generate routes

The system use generate routes to determine message routing at run-time. In Network Configurator, configure generate routes with one or more TPS procedures. Messages entering these procedures have a representation of the remaining routes attached to them. The procedures can query and modify these routes. CONTINUE disposition messages returned by the generate procedures are translated and routed according to the route configurations that are attached to them.

A system route-detail is described by a keyed list. The keys that are used in the keyed list depend on the route-detail type. For example, generate, raw, or xlate. The route-detail type determines the remaining keys:

  • Generate: PROCS
  • Raw: DEST, PROCS
  • Xlate: DEST, XLATE, PREPROCS, POSTPROCS

PROCS, PREPROCS, and POSTPROCS are all TPS configurations, each having two sub-keys:

  • PROCS: This is the ordered list of procedures making up the TPS.
  • ARGS: This is the list of user-supplied arguments for each entry on the PROCS list.

These keys involve nested keyed lists.

  • The value of DEST is a list of destination threads where the translated message is sent. Specify any number of thread names, although each element of the list must be shorter than 64 characters.
  • The XLATE key gives the name of the XLT file which controls the translation.

Examples

  • An example of generate routes is this list that describes a pass-through raw route:
    { TYPE raw } { PROCS {{ PROCS {} } { ARGS {} }}}
  • This raw route uses two TPS procedures; the first takes one user-supplied argument and the second takes two:
    {DEST somedest}
    
    { TYPE raw } {PROCS {f
               { ARGS { arg1 { arg2-1 arg2-2 } } }
               { PROCS { proc1 proc2 } }
    } }  
  • A route configuration is a list of these route detail lists.

    This route configuration has two details: raw and xlate.

    {
                 { PROCS {
                 { ARGS { } }
                 { PROCS { } }
                 } }
                 { TYPE raw }
    }            {
                 { PREPROCS {
                 { ARGS postproc-arg }
                 { PROCS postproc }
                 } }
                 { DEST somedest }
                 { POSTPROCS {
                 { ARGS preproc-arg }
                 { PROCS preproc }
                 } }
                 { TYPE xlate }
                 { XLATE some.xlt }
    }