PostitCreate node


The PostitCreate 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 PostitCreate node is responsible for creating a virtual postit by copying data from the input message into memory.  The configuration of the PostitCreate node determines from which syntax tree element in the message the data will be copied from.  The resulting postit exists in memory and is available to be applied to a new message based on matching criteria specified by a PostitApply node.

The PostitCreate node has one input terminal called in and three output terminals, out, noDataCopied and failure.  When a message is received in the input terminal, the node extracts both the MsgId and CorrelId values and locates the syntax element from which to copy the postit data.  The data is copied from the input message and a new postit is created containing this data.  The postit is added to the global postit chain (the chain is visible to all Message Flows within the the Execution Group) and is indexed by both the MsgId and CorrelId values.  The input message is then propagated unchanged to the out terminal.  If the specified syntax element cannot be found within the input message, or no data is copied from the element, the message is propagated to the noDataCopied terminal.  All other errors result in the message being propagated to the failure terminal and a message logged to the MQSI V2 message log.

Node terminals

The PostitCreate 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 message is propagated if a message is added to the flow.
noDataCopied The output terminal to which the message is propagated if either the syntax element cannot be located, or it contains no data.
failure The output terminal to which the message is propagated if an error is encountered while attempting to propagate the new message.

Configuring the PostitCreate node

When you have put an instance of the PostitCreate 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 PostitCreate node with a PostitApply node and restrict matching to postits created by this node.  You must specify the name of the syntax element from which to copy data into the postit (the name must begin with 'Root.').  The lifetime of the postit can be specified either as an expiry time using the TimeoutSeconds property, or as the maximum number of times the postit can be applied to subsequent messages.  Of course, both TimeoutSeconds and NumberOfApplications may be specified, in which case the postit will be deleted whenever the first of these criteria is satisfied.

PostitCreate node properties

Property Default Description
PostitName   Additional value used to identify the postit.  The value enables a 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.
CopyDataFrom   Specifies the name of the syntax element within the message from which the stored postit data should be copied.  The name can specify a simple data value, e.g. Root.MQMD.ReplyToQ, or it can refer to a sub-tree within the message, e.g. Root.MQMD.  The name must be either 'Root' or it must begin with 'Root.'.
TimeoutSeconds 0 Specifies the lifetime (in seconds) of the postit.  A value of 0 indicates an INFINITE lifetime, i.e. the postit will never timeout.  If a non-zero value is specified, an alarm is set to the timeout value and, if the postit still exists when the timer expires, it is automatically deleted.  It is suggested that a timeout be specified in situations where it is possible that a match may not occur in order to avoid unwanted postits accumulating in memory.
NumberOfApplications 1 Specifies the maximum number of times the postit can be matched to a message in a PostitApply node.  This can be thought of as the number of copies of the postit created.  When the number of copies is exhausted, the postit is removed from memory.

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 – the postit will visible to other nodes within the same Execution Group (this is the default value).  In this case, postits will be stored in process memory.
  • Broker - the postit will be visible to nodes in any Execution Group running within the Broker.  In this case, postits will be stored in a shared memory segment.
  • Platform - the postit will be visible to nodes in any Execution Group running within any Broker on the current platform.  In this case, postits will be stored in a shared memory segment.


(C) IBM Corporation 2001. All Rights Reserved