PostitApply node


The PostitApply node icon

This page contains information on:

The PostitCreate and PostitApply nodes are co-operating nodes that together are responsible for the processing of a virtual postit.  For those not familiar with the term, a postit is a piece of paper (the original ones were yellow in colour) on which notes can be written.  It is sticky-backed, enabling it to be attached to most surfaces.)

The PostitApply node is responsible for searching the global postit chain looking for any postits which match the input message based on the search criteria specified on the node.  The stored data from any matching postits is then applied to the input message under the syntax tree element specified by the node.

The PostitApply node has one input terminal called in and three output terminals, out, noMatch and failure.  When a message is received in the input terminal, the node extracts both the MsgId and CorrelId values and performs a search of the global chain (the chain is visible to all Message Flows within the the Execution Group) based on the search criteria specified by the MatchOn property.  The data stored in an matching postits is then applied to the input message at the location specified by the CopyDataTo property.  The modified message is then propagated to the out terminal.  If no matching postits are found, the message is propagated to the noMatch terminal.

If the specified syntax element cannot be found or created within the input message, or the data cannot be copied from the postit(s), the message is propagated to the failure terminal and a message logged to the MQSI V2 message log.

Node terminals

The PostitApply node provides the following terminals:
 
 
in The input terminal that accepts a message for processing by the node.
out
The output terminal to which the modified message (message + postit(s)) is propagated.
noMatch The output terminal to which the message is sent if no matching postits can be found.
failure The output terminal to which the message is propagated if any other errors are encountered.

Configuring the PostitApply node

When you have put an instance of the PostitApply node into a message flow you can configure it. Right click on the node in the Message Flow Definition pane and select Properties. Click on the Basic tab and (optionally) enter the name that you wish to give the postit. By giving the postit a name you can associate this PostitApply node with postits created by a PostitCreate node with a matching name.  You must also specify further matching criteria that will match existing postits with the input message.  You must specify the name of the syntax element into which the postit data should be copied (the name must begin with 'Root.').

PostitApply node properties

PostitName   Additional value used to identify the postit.  The value enables the PostitApply node to restrict matching postits to those created with a specified name.  This is useful in situations where it is required to save and restore multiple data items from a single message, e.g. ReplyToQ and ReplyToQMgr.  In this case, two separate PostitCreate nodes could be used, one to save the queue name and the other to save the queue manager name.  Subsequently, two PostitApply nodes would be used to restore the values.  To associate each PostitCreate node with its corresponding PostitApply node, the PostitName property would be used, for example 'saveRTQ' and 'saveRTQM' might reasonable values.
CopyDataTo   Specifies the name of the syntax element within the message into which the stored postit data should be copied.  The data will be copied into the element as a Last Child element, i.e. it will become a right-hand child of the element.  The name must begin with 'Root.'.
MatchOn  CorrelId=OldMsgId
    Enumerated value indicating how the input message attributes should be used to find matching postits.  The possible values are
     
  • CorrelId=OldMsgId – the CorrelId value of the input message must match the MsgId value of the original message that created the postit (this is the default value)
  • MsgId=OldMsgId – the MsgId value of the current message must match the MsgId value of the original message that created the postit
  • CorrelId=OldCorrelId – the CorrelId value of the current message must match the CorrelId value of the original message that created the postit
  • MsgId =OldCorrelId – the MsgId value of the current message must match the CorrelId value of the original message that created the postit
  • MsgId+CorrelId=OldMsgId+OldCorrelId – the combined MsgId and CorrelId values of the current message must match the combined MsgId and CorrelId values of the original message that created the postit

Click on the Advanced tab and (optionally) modify the scope of the postit.
 
PostitScope Execution Group The value set for this property determines the scope of the postit instance.  It can take 3 possible values 
  • ExecutionGroup – only the local indexes, i.e. those indexes that refer to postits created with PostitScope=ExecutionGroup will be searched.
  • Broker - both the local indexes, i.e. those indexes that refer to postits created with PostitScope=ExecutionGroup, and the global indexes, i.e. those indexes that refer to postits created with PostitScope=Broker will be searched.
  • Platform - both the local indexes, i.e. those indexes that refer to postits created with PostitScope=ExecutionGroup, and the global indexes, i.e. those indexes that refer to postits created with PostitScope=Platform will be searched.


© IBM Corporation 2001. All Rights Reserved