Analysis Agent Input and Output Types
UDRs entering an Analysis agent are referred to as input  types, while UDRs leaving the agent are referred to as output  types. The input types must be specified, while the output types are calculated from the input types and the APL code.
Example - Input and Output types
Suppose there is a workflow with one Analysis agent, one input route streaming two different input types (typeA and typeB), and two output routes. The two output routes take two different UDR types - the first equaling one of the input types (typeA), and the second is a new UDR type (typeC) which is created out of information fetched from the other input type (typeB).
The APL code:
if (instanceOf(input, typeA)) { udrRoute((typeA)input,"r_2"); } else { typeC newUDR = udrCreate(typeC); newUDR.field = ((typeB)input).field; // Additional field assignments... udrRoute(newUDR, ,"r_3"); }
The first udrRoute
 statement explicitly typecasts to the typeA type, while there is no typecasting at all for the second udrRoute
 statement. This is because the input
 variable does not have a known type (it can be either typeA or typeB), while newUDR
is known by the compiler to be of typeC.
Without any typecasting, the output type on r_2 would have been reported as an undefined UDR, drudr, and the workflow would not have been valid.