Documente Academic
Documente Profesional
Documente Cultură
MB node types
Amunt! Top Amunt!
Built-in nodes (v 6.1)
AggregateControl node
AggregateReply node
AggregateRequest node
Check node
Collector node
Compute node
Database node
DatabaseRetrieve node
DatabaseRoute node
DataDelete node
DataInsert node
DataUpdate node
EmailOutput node
EndpointLookup node
Extract node
FileInput node - retrieves data from a local or remote file system
FileOutput node - outputs data to a local or remote file system
Filter node
FlowOrder node
HttpInput node
HttpReply node
HttpRequest node
Input node
Java Compute node
JMSInput node
JMSMQTransform node
JMSOutput node
JMSReply node
Label node
Mapping node
MQeInput node
MQeOutput node
MQGet node
MQInput node
MQJMSTransform node
MQOptimizedFlow node
MQOutput node
MQReply node
Output node
Passthrough node
PeopleSoftInput node
PeopleSoftRequest node
Publication node
Real-timeInput node
Real-timeOptimizedFlow node
RegistryLookup node
ResetContentDescriptor node
Route node
RouteToLabel node
SAPInput node
SAPRequest node
SCADAInput node
SCADAOutput node
SiebelInput node
SiebelRequest node
SOAPAsyncRequest node
SOAPAsyncResponse node
SOAPEnvelope node
SOAPExtract node
SOAPInput node
SOAPReply node
SOAPRequest node
Throw node
TimeoutControl node
TimeoutNotification node
Trace node
TryCatch node
TwineballInput node
TwineballRequest node
Validate node
Warehouse node
XSLTransform node
New Web services nodes :
EndpointLookup
RegistryLookup
Routing :
PeopleSoftInput
PeopleSoftRequest
SAPInput
SAPRequest
SiebelInput
SiebelRequest
File nodes :
FileInput
FileOutput
Transport nodes
JMSReply
EmailOutput
New and enhanced nodes in MB V6.1
A Compute node takes as input a message tree (called InputRoot) and outputs a
different message tree (called OutputRoot). Notice that InputRoot is read-only and
therefore cannot be modified in place.
HTTPin & HTTPout nodes allow the CGI world to talk to "c" programs.
SOAPin & SOAPreply nodes allow to talk to the WebServices world - mind NameSpace(s)
and Encoding
Trace node : where to send its output ( diferent at Development and Production ).
When the BAR file is generated, select the "Configure" bottom flap and enter the
"File Path" property. If empty, does it mean "no trace" ?
Other nodes :
If the message flow gets the messages from the business application by means of a
WebSphere MQ queue, use an MQInput node.
El nico queue manager que el MQInput node puede usar es el que usa el Broker. Por
eso no se puede especificar otro. Gracias, Emir !
If the messages are sent to broker by an MQe application, use an MQeInput node.
If the messages are sent by a telemetry device, use a SCADAInput node.
If the messages are sent by a Web services client, use an HTTPInput node.
If the messages are sent by a JMS or multicast application, use a Real-timeInput
node or a Real-timeOptimizedFlow node.
If the message flow is to be reused as part of one or more other message flows, use
an Input node.
MQInput
JMSInput
HTTPInput
SOAPInput
SAPInput
Timer node
WBI-MB Basics, SG24-7090, page 125 [139 of 262]
If the incoming message has an MQRFH2 header, you do not have to set values for the
Default properties because the values can be derived from the <mcd> folder in the
MQRFH2 header.
If you set values, and those values differ from those in the MQRFH2 header, the
MQRFH2 header values take precedence.
messageBroker_Message_Flows, page 359 [369 of 556]
Message Domain
Message Set
Message Type
Message Format
Topic
Each input node in a message flow causes the broker to start a separate thread of
execution. Including more than one input node might improve the message flow
performance.
MRM
XML
XMLNS
XMLNSC
JMSMap
JMSStream
MIME
BLOB (same as blank)
IDOC
DFDL {mb v8}
Body is equivalent to Root followed by the parser name (for example, Root.XML),
which you can use if you prefer.
Domain errors
If there is a "domain" versus "received message format" mismatch, you can see in
trace:
UnknownParserName = 'MQSTR'
Invalid Wire format retreived
Message Set
Que es ? Que proporciona al fluxe ?
In older versions (WMB V7 and below), the primary way general text and binary
messages were modeled and parsed was through a container called a message set and
associated 'MRM' parser. Since WMB V8, and including IBM Integration Bus, such
messages are modeled and parsed using a new open technology called DFDL from the
Open Grid Forum. This is IBM's strategic technology for modeling and parsing
general text and binary data. The MRM parser and message sets remain a fully
supported part of the product; in order to use message sets, a developer must
enable them as they are disabled by default to encourage the adoption of the DFDL
technology.
wiki
Recuperaci d'errors
Quan en un fluxe, al que hem entrat mitjanant un node MQInput, hi ha un problema
(as THROW), es torna al node d'entrada, es recupera el missatge inicial, i es surt
pel pin Catch, mantenint l'entorn, on s'ha enmagatzemat la ra del error. Es posa
un "Trace" node i desprs
If the message flow puts the message to the application by means of a WebSphere MQ
queue, use an MQOutput node.
If you want the message flow to put different messages on different WebSphere MQ
queues, depending on the queue name in the Reply-to queue field of the message
header WebSphere MQ, use an MQReply node. Using the MQReply node means that the
name of the output queue is not hardcoded in the message flow.
If the messages are received by a telemetry device, use a SCADAOutput node.
If the messages are received by a Web services client, use an HTTPReply node.
If the message flow interacts with a Web services client, use an HTTPRequest node.
If the messages are received by a JMS or multicast application, use a Real-
timeOptimizedFlow node. This node performs as both an input and an output node.
If the message flow is to be reused as part of one or more other message flows, use
an Output node.
If you want to distribute the messages, using Publish/Subscribe, to many unknown
applications that have subscribed to receive the data, use a Publication node.
WBI-MB Basics, SG24-7090, page 126 [140 of 262]
Petit dubte :
Les propietats del nus de sortida tenen dos camps : queue manager name i queue
name. Que tinc que definir al qmgr local si vull que el missatge se'n vagi a un
qmgr remot (a una cua especifica) ?
O a l'inrevs : si vull que vagi a un qmgr remot, puc especificar aqui una local
"remota" ?
Soluci :
podem no-posar queue manager i posar com a cua una QUEUE REMOTE
podem posar queue manager (remot) i nom de cua (remota), pero llavors haurem de
definir al queue manager local una cua de transmissi que es digui com el queue
manager remot i que estigui assignada a un canal que porti cap al queue manager
remot on estigui la esmentada cua. [Emir, 26-07-2006]
( SAG_BRK.default )
Unable to open queue ''Qsale'' on WebSphere MQ queue manager ''QMEMIR'':
completion code 2; reason code 2087.
No usar nunca el campo QMN - permite movilidad de los flujos.
MQ Output node + "Advanced" settings :
Select the Destination Mode from the drop-down list. This identifies the queues to
which the output message is put.
Queue Name. The message is sent to the queue named in the Queue Name property. The
properties Queue Manager Name and Queue Name (on the Basic tab) are mandatory if
you select this option. This is the default.
Reply To Queue. The message is sent to the queue named in the ReplyToQ field in the
MQMD.
Destination List. The message is sent to the list of queues named in the
LocalEnvironment (also known as DestinationList) associated with the message.
MQoutput calculado
Si al nodo MQoutput (Properties, Advanced) le ponemos "Destination mode :=
Destination List", entonces podemos hacer este clculo :
SET OutputLocalEnvironment.Destination.MQ.DestinationData[I].queueName =
Environment.IMI.Query[I].ColaSalidaPet ;
Compte : el node "Compute" ha de tenir a les seves propietats Compute mode =
LocalEnvironment ! Otherwise veurem aquest missatge a la llista de Events:
-- An MQ output node with the "Destination Mode" property set to "list" received a
message
-- but there was no valid distribution list, that is, it did not contain a
"Destination" folder in turn containing an "MQ" folder.
Amunt! Top Amunt!
Dynamically routing messages
To verify that the structure of a message is correct for subsequent processing, use
the Check node.
To perform a Boolean filter on a message so that if it matches the rule the message
takes one route through the message flow, and if it does not match the rule the
message takes another route through the message flow, use the Filter node.
To force messages to be processed in one way and then processed in a second way,
use the FlowOrder node.
To define a number of alternative destinations to which messages can be sent,
depending on the message header, use a Label node for each destination, and a
RouteToLabel node to determine which Label node a message must be sent to.
To change the message properties before the message is parsed again by nodes
downstream in the message flow, use the ResetContentDescriptor node.
WBI-MB Basics, SG24-7090, page 129 [143 of 262]
A key component of the broker architecture will be the basis on which routing
decisions are made.
B2B Integration using MQ and MQSI, SG24-6010, page 210 [234 of 372]
RETURN FALSE ;
END ;
END MODULE ;
Para comparar en hexadecimal se usa:
IF ( MSG_SRC = X'41' ) THEN
RETURN TRUE ;
Pero hay que decir que escrito as el flow no funciona en EBCDIC. El cdigo
anterior (CAST con CCSID) asegura la portabilidad del cdigo.
Si el mensaje es <ab>A</ab>
Como BLOB, substring(Root.BLOB.BLOB FROM 5 FOR 1) da 'A' (char 5-a posicin).
Como XML, hay que usar IF Root.XMLNSC.ab = 'A'
Routing to a Label
in the Compute node, code :
CREATE COMPUTE MODULE DecideOnQuery
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
SET OutputRoot = InputRoot;
IF InputRoot.XML.PassengerQuery.ReservationNumber <> '' THEN
SET
OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname =
'SinglePassenger';
ELSE
SET
OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname =
'AllReservations';
END IF;
RETURN TRUE;
END;
END MODULE;
Compute.Out -> RouteToLabel node In
RouteToLabel is EMPTY
Label node 'Label Name := SinglePassenger ;'
Label node 'Label Name := AllReservations ;'
URL
When you use RouteToLabel and Label, you must include a Compute node that
determines, using some combination of message content, database content, and ESQL
logic, how messages are to be processed next. Configure the Compute node to create
a destination list (within the DestinationList folder in the LocalEnvironment
subtree) that contains the destination for each message, specified as the LabelName
of a Label node. The Compute node passes the message to the RouteToLabel node,
which reads the destination list and propagates the message to those destinations.
Runtime environment
Broker domain
Configuration Manager
Broker
Execution group
Execution model on page 57
You should also make sure you understand the following concepts:
message flows
the logical message tree
how the message tree is populated
messagebroker_User_Defined_Extensions.pdf, page 56 [64 of 212]
Parser
El parser construye un "syntax tree". Ejemplo simple con XML - si el mensaje que
llega al MQ Input node es:
<msg><a>11111</a><b>22222</b></msg>
El parser le permite al ESQL usar estas referencias:
<msg><a>11111</a><b>22222</b><c>33333</c></msg>
El parser hace dos cosas:
message modeling : Creating a DFDL CSV message model, also Creating a DFDL Text
(TDS) message model
Creating and testing message models for C and COBOL using DFDL
DFDL is not a data format - it is a language for describing data formats
Introduction to DFDL
Soluci : "New" + "Message Model" - Message model sirve tanto para xsd como para
dfdl.
Standard:
MRM- Proprietary standard
DFDL- Open standard (like WSDL)
Usage:
MRM - Used only in message broker
DFDL - Can be used any product as it is Open standard and Message Broker is the 1st
software product that supports DFDL in WebSphere family.
Testing message model:
MRM - Can't test the modeling without deploying message set and flow that uses it
DFDL - Can be tested without deploying the messaging model (WMB8 toolkit has DFDL
tester)
Performance:
Performance of DFDL parser is much better than MRM
Migration:
MRM - Can't migrate or share message modeling to any other software products.
DFDL - Can migrate or share message modeling to any other software products.
url
Variables
This subtree is optional. If you create local environment variables, you are
recommended to store them in a subtree called Variables. It provides a work area
that you can use to pass information between nodes. This subtree is never inspected
or modified by any supplied node.
Variables in the local environment can be changed by any subsequent message
processing node, and persist until the message flow goes out of scope and the node
that created it has completed its work and returns control to the previous node.
The variables in this subtree are only persistent within a single instance of a
message flow. If you have multiple instances of a message passing through the
message flow, and need to pass information between them, you must use an external
database.
Destination
Written destination
Para poder modificar el Local Environment, hay que copiarlo (de Input -read only -
a Output).
This tree is always present in the input message; an empty Environment tree is
created when a message is received and parsed by the input node. You can use this
tree as you choose, and create both its content and structure.
The Environment tree differs from the LocalEnvironment tree in that a single
instance of it is maintained throughout the message flow.
No hace falta copiarlo. Pero se recibe un Environment vacio con cada mensaje.
LocalEnvironment vs Environment
LocalEnvironment => MQ and MB.
Before you deploy the message flow that uses the UDP, you can change the value of
the UDP by using the Broker Archive editor. A deployment failure occurs if you try
to deploy a message flow that contains a UDP that has had no value assigned to it.
At run time, after the UDP has been declared its value can be queried by subsequent
program statements but it cannot be modified.
Using UDPs, configuration data can be set easily and used just like normal
constants.
Java : To access broker user-defined properties from a JavaCompute node, use the
getUserDefinedAttribute(name) method, where name is the name of the property that
you are accessing.
The shared varables are visible to all instances of the flow within the Execution
Group
The logical message tree
A logical message tree is a structure that is created by one or more parsers when
an input message bit stream is received by a message flow.
url
Correlation names
A correlation name is a field reference that identifies a well-defined starting
point in the logical message tree and is used in field references to describe a
standard part of the tree format.
When you access data in any of the four trees (message, environment, local
environment, or exception list), the correlation names that you can use depend on
the node for which you create ESQL or mappings, and whether the node creates an
output message. For example, a Trace node does not alter the content of the message
as it passes through the node, but a Compute node can construct a new output
message.
You can introduce new correlation names with SELECT expressions, quantified
predicates, and FOR statements. You can create non-correlation names in a node by
using reference variables.
url
The BLOB message body parser does not create a tree structure in the same way that
other message body parsers do. It has a root element BLOB, that has a child
element, also called BLOB, that contains the data.
You can refer to message content using substrings if you know the location of a
particular piece of information within the BLOB data. For example, the following
expression identifies the tenth byte of the message body:
InputBody.BLOB.BLOB[10]
url
You need to refer to the BLOB data as 'Root.BLOB.BLOB' or you could use
'Body.BLOB'.
url
Emir : Si pones 'XML' en el Domain, el mensaje deja de ser BLOB. El Filter node
deberia usar Root.XMLNSC.xxx
Mezcla : Si usas BLOB, y despues del filtro necesitas ver el mensaje como XML, usa
un "Reset Contents Descriptor" node (despues del filter node), que pone XML en el
Domain y tiene un TICK en "Reset Domain".
Schutz
(
(0x03000000):UnknownParserName = 'MQSTR'
(0x03000000):BLOB = X'706f6e676f2033'
)
url
Testing and debugging message flow applications url or Message Flows, page 489
[499/556]
It Trace Node has "User Trace" selected, then you have to process the usertrace
using mqsireadlog and mqsiformatlog commands to get the UserTrace information.
Three ways :
Use a filter before the trace which checks the broker name. If the name is the same
as your production broker, dont invoke the tracenode. If it isn't, go trough the
node and then the same path.
Here's an idea : no user trace nodes ; enable/disable trace
Have no trace nodes in the flow and use mqsichangetrace at runtime to trace the
flow. I've never had to use trace nodes in a flow to determine what it is doing. I
simply have a batch file (startTrace) to enable a trace and another (stopTrace) to
stop the tracing. Then I read the trace, everything you want to know is there.
Start :
rem %1 Broker
rem %2 EG
mqsichangetrace %1 -u -e %2 -r
mqsichangetrace %1 -u -e %2 -l debug -c 5000
Stop:
rem %1 Broker
rem %2 EG
mqsichangetrace %1 -u -e %2 -l none -c 5000
mqsireadlog %1 -e %2 -o readlog.out -u -f
mqsiformatlog -i readlog.out -o readlog.txt
start notepad readlog.txt
You can fine tune the script to trace just a flow as opposed to every flow in the
EG but you get the idea.
echo ------------------------------------------------------------------------
echo -- Usertrace Utility process started
IF "%2" == "" goto BADPARAM
IF "%3" == "" goto BADPARAM
:PROCESS
echo -- Executing command: mqsichangetrace %1 -u -e %2 -f %3 -l normal -r
mqsichangetrace %1 -u -e %2 -f %3 -l normal -r
echo -- Now test your Messageflow
pause
echo -- Executing command: mqsichangetrace %1 -u -e %2 -f %3 -l none
mqsichangetrace %1 -u -e %2 -f %3 -l none
echo -- Executing command: mqsireadlog %1 -u -e %2 -o %3.xml
mqsireadlog %1 -u -e %2 -o %3.xml
rem ------------------------------------------------------------------------
rem -- If the target file exists and REPLACE has not been specified then
rem -- do not overwrite the file. Report the error and end the process.
rem ------------------------------------------------------------------------
IF NOT EXIST %3.xml goto NOFILE
IF NOT EXIST %3.txt goto OK
IF "%4" == "REPLACE" goto REPLACEOK
IF "%4" == "replace" goto REPLACEOK
:NOREPLACE
echo -- ERROR !!!
echo -- Output file %3.txt exists. (REPLACE option not specified)
echo -- Specify replace option or delete the output file and try again.
goto SYNTAX
:REPLACEOK
del %3.txt
echo -- Output file %3.txt deleted (REPLACE option specified)
:OK
echo -- Executing command: mqsiformatlog -i %3.xml -o %3.txt
mqsiformatlog -i %3.xml -o %3.txt
del %2.xml
rem ------------------------------------------------------------------------
rem -- Make sure the output file exists before starting notepad
rem ------------------------------------------------------------------------
IF NOT EXIST %3.txt goto NOFILE
echo -- Output stored in file %3.txt
echo -- Starting the Notepad editor to view the file
echo -- Suggestion: Turn on word wrap in Notepad to easily view the output
start notepad %3.txt
goto FINISH
:NOFILE
echo -- ERROR !!!
echo -- The process did not produce any output. Look for error messages.
echo -- from previous commands. Check parameters and try again.
goto SYNTAX
:BADPARAM
echo -- Purpose:
echo -- start usertrace for a special messageflow (refresh the log)
echo -- then wait (user can test the messageflow in another window)
echo -- then dump the MQSI log to a file and use Notepad to view the results
echo -- at last usertrace is turned off again
:SYNTAX
echo ------------------------------------------------------------------------
echo -- Syntax: usertrace [BrokerName] [Execution Group] [Message Flow] [replace]
echo -- Remember, parameters are case sensitive!!!
echo ------------------------------------------------------------------------
:FINISH
echo -- Usertrace Utility process finished
echo ------------------------------------------------------------------------
:END
mqsichangetrace
[wbrkadm@dmqb261]:/home/wbrkadm> mqsichangetrace
BIP8104W: Changes a component's trace options.
Syntax (1):
mqsichangetrace componentName [-u | -t] -e egName [-f messageFlow] [-l level] [-m
mode] [-c size] [-r]
Syntax (2):
mqsichangetrace componentName -t -b [-l level] [-m mode] [-c size]
Command Options:
'componentName' Name of the component whose trace options are to be changed
'-u' indicates user trace (may only be used with '-e')
'-t' indicates service trace.
'-b' denotes tracing of a component other than an execution group
-b httplistener
valid values ?
agent
httplistener
'-e egName' Name of the execution group
'-f messageFlow' Name of the message flow
'-l level' specifies the trace level, 'none', 'normal' or 'debug'
'-m mode' specifies the trace mode, 'safe' or 'fast'
'-c size' specifies the trace file size in kilobytes [always 10240]
'-r' specifies that the log should be reset.
Exemple :
mqsichagetrace -u -e ExecutionGroupName -l debug -c 10240 -r
mqsireadlog
[wbrkadm@rcmqb272]:/home/wbrkadm> mqsireadlog
BIP8114W: Retrieves the trace log.
Syntax (1):
mqsireadlog componentName (-u | -t) -e executionGroupName [-f] [-o outputFileName]
Syntax (2):
mqsireadlog componentName -t -b subcomponent -f [-o outputFileName]
Command Options:
'-u' indicates user trace (may only be used with '-e')
'-t' indicates service trace
'-b subcomponent' name of the command or subcomponent (for example,
'agent')
'-e executionGroupName' name of the execution group
'-f' specifies that the log file is to be read directly from
the file system (mandatory for service trace)
'-o outputFileName' file name to write the trace log.
Display actual trace
mqsireporttrace WBRK_BROKER -u -e test
where
WBRK_BROKER = broker name
test = execution group name
Starting user trace
mqsichangetrace WBRK_BROKER -u -e test -l normal
Change user trace to debug
mqsichangetrace WBRK_BROKER -u -e test -l debug
Stopping user trace
mqsichangetrace WBRK_BROKER -u -e test -l none
Retrieving user trace
mqsireadlog WBRK_BROKER -u -e test -o trace.xml
Formatting trace
mqsiformatlog -i trace.xml -o formattrace.log
Tracing for all the components of MB
This is the com.ibm.etools.mft.util plug-in.
ODBC trace
Troubleshooting, pages 116-127 [124-135/188]
Nice command (from "db2cmd") : DB2 LIST SYSTEM ODBC DATA SOURCES
Writing ESQL
The message body is always the last child of root, and is identified by its parser
name, for example XML or MRM.
If you are referring to the input message to interrogate its contents in a Database
or Filter node, use correlation name Body to refer to the start of the message.
Body is equivalent to Root followed by the parser name, for example, Root.XML,
which you can use if you prefer.
Broker properties {from InfoCenter} that are accessible from ESQL and Java {mqJeff}
:
The only broker-defined properties that can be used in a Trace node are those in
the "General broker properties" group. See trace node
RETURN TRUE;
END;
END MODULE;
El Compute Node tiene varias salidas :
Also, to generate three copies of the input message, and not perform any further
action, include this code immediately before the RETURN TRUE statement:
Message
LocalEnvironment
LocalEnvironment and Message
Exception
Exception and Message
Exception and LocalEnvironment
All
Expiry (ESQL)
Per fer que un missatge no expiri mai, hi posarem :
RETURN TRUE;
END;
Amunt! Top Amunt!
Mapping node
Amunt! Top Amunt!
MQ Input node
The terminals of the MQInput node are:
Out
The output terminal to which the message is routed if it has been successfully put
to the output queue.
Failure
The output terminal to which the message is routed if a failure is detected when
the message is put to the output queue.
HTTPConnector
uuid='HTTPConnector'
userTraceLevel='none'
traceLevel='none'
userTraceFilter='none'
traceFilter='none'
port='7080'
address=''
maxPostSize=''
acceptCount=''
compressableMimeTypes=''
compression=''
connectionLinger=''
connectionTimeout=''
maxHttpHeaderSize=''
maxKeepAliveRequests=''
maxThreads=''
minSpareThreads=''
noCompressionUserAgents=''
restrictedUserAgents=''
socketBuffer=''
tcpNoDelay=''
explicitlySetPortNumber=''
enableLookups=''
enableMQListener=''
shutdownDelay=''
allowCrossConnectorPolling=''
autoRespondHTTPHEADRequests=''
Connector
port='7080'
type='Broker'
URLRegistration
url='/samplebrokerwshost'
UsedBySOAPNNodes='FALSE'
UsedByHTTPNNodes='TRUE'
nodeLabel='HTTP Input'
HttpRequest node
The HTTPRequest node determines the URL for the web service to which it sends a
request. Select one of the following three options; the node checks these in the
order shown (that is, the first always overrides the second, the second overrides
the third):
<q0:say_TOD>
<arg0>pepeta</arg0>
</q0:say_TOD>
</soapenv:Body>
</soapenv:Envelope>
Gateway mode - generic web service
SOAP Requets node has a Operation Mode checkbox.
Use this ESQL to create the namespace prefix definition for ns1:
SET OutputRoot.SOAP.Context.Namespace.(SOAP.NamespaceDecl)xmlns:ns1 =
'http://a/b/c/myNamespace';
developerWorks
Changing the default URL for a SOAPRequest node or a SOAPAsyncRequest node request
declare q1 CHARACTER ;
set q1 = 'http://tod.ws.com/' ; -- 1st param, namespace
declare operacion CHARACTER ;
set operacion = 'say_TOD' ; -- 2nd param, operation
SET OutputRoot.SOAP.Context.Namespace.(SOAP.NamespaceDecl)xmlns:q1 = q1
;
SET
OutputLocalEnvironment.Destination.SOAP.Request.Transport.HTTP.WebServiceURL =
'http://localhost:8181/TOD_server' ; -- 3rd param, url
SET OutputLocalEnvironment.Destination.SOAP.Request.Operation =
operacion ;
else
Amunt! Top Amunt!
Java compute node
Required classes, as mongo-java-driver-2.4.jar, have to go into
c:\MQSI\9.0.0.0\classes !
Input directory
File name or pattern
Your input file name will be in InputLocalEnvironment.File.Name. You could store in
environment to use it for your output files creation.
Action on successful processing
Move to Archive subdirectory (mqsiarchive)
Add Timestamp and Move to Archive subdirectory (mqsiarchive)
Delete
Replace duplicate archive files: Y/N
On the Input Message Parsing tab, set values for the properties that the node uses
to determine how to parse the incoming message.
Use the Records and Elements tab to specify how each file is interpreted as
records, as "Record detection := Whole File ; " - specifies that the whole file is
a single record
LocalEnvironment.File
LocalEnvironment.WrittenDestination.File
LocalEnvironment.Wildcard.WildcardMatch
Para ms detalles, Help -> Search: ac55410
FileInput
Trace
MQOutput
We get this trace:
If the file name contains no wildcard, the value of this property is the name of
the file created.
If the file name contains a single wildcard, the value of the element
LocalEnvironment.Wildcard.WildcardMatch in the current message replaces the
wildcard character, and the resulting value is the name of the file created.
The output directory path to be used can be overridden by values in the current
message. The name of the file can be overridden by values in the current message.
See the information relating to the Request tab for details about how to do this,
using $LocalEnvironment/Destination/File/Directory and
$LocalEnvironment/Destination/File/Name
EOF : in tab "Records and Elements", set "Record definition := Record is Whole File
;"
(s) FTP
If the output is to a remote filesystem, accessed using SFTP, we have to specify a
"security identity" in the node properties (here "sftp_id"), that has been defined
using the mqsisetdbparms command. The user identifier and password that are to be
used to log on to the FTP or SFTP server are obtained from this definition, the
name of which must have the prefix ftp:: :
TimeoutNotification node
The purpose of this node is to act as an alarm clock, initiating a message flow
when the timer goes off. The TimeoutNotification node would be the first node in a
timer-controlled message flow. It has no In terminal.
As always, wire the Catch terminal of the TimeoutNotification node so that you
avoid any unpleasant retry conditions.
The tree coming out of the node contains only a Properties and LocalEnvironment
subtree.
TimeoutControl node
The purpose of a TimeoutControl node is to let you set of the parameters of a
TimeoutNotification node.
The TimeoutNotification node in "Automatic" mode does not produce a message tree
suitable for sending to an MQOuput node (for example, there is no MQMD subtree).
The following ESQL code can be used to create an appropriate message (and would be
coded in the "BuildTimeoutMessage" node above).
How about using a JCN with Runtime.exec() instead of the Job Execution Node?
CALL CopyMessageHeaders();
-- Create a new message body, which will be sent as the main text of
the email.
SET OutputRoot.BLOB.BLOB = CAST( 'This is the new text for the body of
the email.' AS BLOB CCSID 1208 ) ;
RETURN TRUE;
END ;
tkt help
info center
Lets start with "New(Message Flow Project)" := 'ICS', with no referenced projects.
On the "ICS flow -> Flows", create a "New(Message Flow)" := 'first flow' ;
Identify the version by clicking on the canvas of the "msgflow" and filling the
"version" property at bottom. You can see this value in the message flow deployed
in the execution group, under the "Properties" tab.
To deploy the BAR file, right-click on the BAR file, and select "Deploy", and
select Execution Group "EG1".
If there is an error in the deployment, fix it, and then right click on BAR file,
and select "Build and Save BAR" to re-create the BAR file - icon disapears. Deploy
again.
If the deployment ends ok (and the Input Queue exists), there must be a thread
having opened the input queue for "input" - use MQ Explorer. And placing a message
in the intput queue shall trigger the writing into the trace file ; also, a message
is written into the output queue.
By example, this message goes fine thru the flow, and leaves this trace:
<mymsg><nom>Sebastia</nom></mymsg>
( ['xmlnsc' : 0x17808060]
(0x01000000:Folder):mymsg = (
(0x03000000:PCDataField):nom = 'Sebastia' (CHARACTER)
)
)
Amunt! Top Amunt!
A FileOutput sample, using Compute Node
We use these nodes :
RETURN TRUE;
END;
The result is a MQ message written into a file with timestamp in its name:
c:\temp\mb\fileout> dir
Directory of c:\temp\mb\fileout
RETURN FALSE ;
END;
END MODULE;
CALL CopyMessageHeaders();
RETURN TRUE;
END;
END MODULE;
Els resultats obtinguts son :
<msg><a>7777</a></msg>
Compute node:
CALL CopyEntireMessage();
RETURN TRUE;
Output (en caracter):
<msg>
<a>7777</a>
<chars>VIVA..ESPAA</chars>
</msg>
Output (en hexadecimal):
SAG sample
Tengo un flujo con un nodo MQ-IN, un nodo "COMPUTE" en medio y un nodo MQ-OUT a la
salida.
<msg><a>a</a><b>bb</b></msg>
Con un "compute node" con este codigo, obtenemos estos mensajes de salida
RETURN TRUE;
END;
Amunt! Top Amunt!
SHARED var
Shared variables (defined with the SHARED keyword) can be used to implement an in-
memory cache in the message flow; see Optimizing message flow response times.
Shared variables have a long lifetime and are visible to multiple messages that
pass through the flow; see Long-lived variables. They exist for the lifetime of the
integration server process, the lifetime of the flow or node, or the lifetime of
the node's SQL that declares the variable (whichever is the shortest). They are
initialized when the first message passes through the flow or node after each
broker startup.
See also the ATOMIC option of the BEGIN ... END statement. The BEGIN ATOMIC
construct is useful when a number of changes have to be made to a shared variable
and when it is important to prevent other instances seeing the intermediate states
of the data.
SHARED sample
{pend} I want to have a flow that receives messages and inserts a sequence number
in each one of them, keeping the value as a global variable in cache. {sag,
20131030}
-- input msg
BEGIN ATOMIC
set sebas = sebas + 1 ;
END ;
CALL CopyEntireMessage() ;
set OutputRoot.XMLNSC.cap = sebas ; --
set OutputRoot.XMLNSC.cul = cast(sebas as character) ; -- Output
RETURN TRUE;
END;
END MODULE;
Amunt! Top Amunt!
Global cache
"Global Cache allows a number of Brokers to be integrated for workload balancing.
Global Cache provides the ability to have a cache storing information about the
requester which would later be used to correlate the replies correctly. Using
Global cache gives the flexibility for different brokers to handle the request and
reply parts of an application. Using a global cache allows you to scale up the
number of clients, while maintaining predictable response time for each client."
D1.ID_ENT AS EntornoDst,
D1.QUEUE_DST_DFT AS ColaSalidaDft,
D1.QUEUE_DST_PET AS ColaSalidaPet,
D1.PATH_MOD_SVR AS PathModSvr,
D1.TIPO_MOD_SVR AS TipoSvr,
D1.NOMBRE_CLASE AS Nom_Clase,
D1.NOMBRE_METODO AS Nom_Metode
IF ( Environment.NumDestinos = 0 ) THEN
THROW USER EXCEPTION MESSAGE 2950
VALUES ( 'Not found Service Code (' || InputRoot.MQRFH2.usr.COD_SERVEI || ')
in table "DESTINOS_APLICACION".' ) ;
ELSE
MESSAGE is an optional clause; if you omit it, it defaults to the first message
number of the block of messages provided for using THROW statements in WebSphere
Message Broker catalog (2951). If you enter a message number in the THROW
statement, you can use message numbers 2951 to 2999.
ESQL, MB version 6, page 252
You can configure the nodes in your message flow to determine how the work taken by
each node participates in the message flow transaction. Most nodes for which
transactionality is relevant have one or more properties that you can configure to
dictate behavior. Therefore, you can decide for each individual node whether it
participates in the message flow transaction, or operates independently. Typically,
these properties include an option of Automatic, so that subsequent nodes in the
flow assume the characteristics set by the input node.
Commit or rollback
If the resource can participate in a transaction, you can configure it so that the
work it does is committed or rolled back only when the message flow completes, or
when the node completes. Databases and WebSphere MQ queues are examples of
resources that you can use in this way. If the resource does not have transactional
behavior, all the work that it does is committed immediately. For example, files
and HTTP connections do not support transactions.
Updates that are made by a message flow are committed when the flow processes the
input message successfully. The updates are rolled back if both of the following
conditions are met:
a node in the flow throws an exception that is not caught by a node other than the
input node (for example, the node itself, or a TryCatch node)
the Catch terminal of the input node is not connected
Read message flow transactions to understand how the broker handles transactions
The solution is to implement a message flow that provides a service entry point.
When a service request is received, the reply identifier is stored on an internal
queue and the request is forwarded to the provider application. When the response
is received from the provider application, the reply identifier is recovered and a
web services reply, which contains the provider response, is returned to the
requesting application.
.----------. .-------------------------------.
.----------.
| | (1) | | (2)
| |
| App | --------> Q1 | ... MB flow ... | Q2 -------->
| App |
| Origin | | |
| Server |
| | Q4 | msgID=nnn RQ=Q4 | Q3
| |
| | | |
| |
.----------. .-------------------------------.
.----------.
SET OutputRoot.MQRFH2.usr..ReplyIdentifier =
InputLocalEnvironment.Destination.SOAP.Reply.ReplyIdentifier ;
How to place user-data in "message properties" ?
An 18 minute Powerpoint presentation about message properties, including how it
relates to RFH2 headers: url
switch to the Flow Debug perspective (escarbat vermell que mira cap a la dreta del
menu lateral esquerre)
click the Attach to Flow Runtime icon on the Toolbar (escarbat vermell a dalt)
in the Hosts list box, select the host computer that the flow engine is running on.
in the listbox, select select the flow engine containing the flow you want to
debug.
in the Flow Debug view, double-click the message flow you want to debug.
in the Message Flow editor, add a breakpoint to a connection that leads out of the
input node. The breakpoint appears.
when the next message comes into the flow and arrives at the breakpoint, the flow
pauses and the breakpoint icon changes.
Message Flows, page 490 - url
In the Broker Application Development perspective, the Message Flow editor is used
to create, graphically display, and edit flows.
In the Flow Debug perspective, the Message Flow editor is used only to graphically
display and debug flows, as described in this topic.
Tip: From a single workbench, the debugger can attach to more than one execution
group, and debug multiple flows in different execution groups (and therefore
multiple messages) at the same time. However, a deployed flow in one execution
group can be debugged by only one user at a time, so if you attach your debugger to
it, another user cannot also attach a debugger at the same time.
Resum How to Debug
Hacer deploy como siempre.
Ir a la "Debug Perspective"
Right-click "Attach"
Select the host where the broker runs, click Next.
Select the Execution group, click Finish.
You're ready to debug.
Gracias, Lourdes !
Do Debug
install RAC ( without security )
start RAC at Port 10002 (RAService.exe @ Guindows)
add Breakpoint(s)
open perspective Debug
"New Configuration" :
escollir Flow Project
escollir Host
escollir Flow Engine
send messages and debug flow
Right-click on New Configuration + Terminate & Remove
Gracias, Mario !
<ExceptionList>
<RecoverableException>
<File>F:\build\S610_P\src\DataFlowEngine\ImbTraceNode.cpp</File>
<Line>334</Line>
<Function>ImbTraceNode::evaluate</Function>
<Type>ComIbmTraceNode</Type>
<Name>LAB9#FCMComposite_1_3</Name>
<Label>LAB9.Trace</Label>
<Catalog>BIPv610</Catalog>
<Severity>3</Severity>
<Number>2230</Number>
<Text>Caught exception and rethrowing</Text>
<ParserException>
<File>F:\build\S610_P\src\MTI\MTIforBroker\GenXmlParser4\ImbXMLNSCParser.cpp</File>
<Line>828</Line>
<Function>ImbXMLNSCParser::parseFirstChild</Function>
<Catalog>BIPv610</Catalog>
<Severity>3</Severity>
<Number>5009</Number>
<Text>XML Parsing Errors have occurred</Text>
<ParserException>
<File>F:\build\S610_P\src\MTI\MTIforBroker\GenXmlParser4\ImbXMLNSCDocHandler.cpp</F
ile>
<Line>507</Line>
<Function>ImbXMLNSCDocHandler::handleParseErrors</Function>
<Type>ComIbmMQInputNode</Type>
<Name>LAB9#FCMComposite_1_1</Name>
<Label>LAB9.MQInput LAB9_IN XMLNSC</Label>
<Catalog>BIPv610</Catalog>
<Severity>3</Severity>
<Number>5004</Number>
<Text>An XML parsing error has occurred while parsing the XML document</Text>
<Insert> <Type>2</Type> <Text>1504</Text> </Insert>
<Insert> <Type>2</Type> <Text>2</Text> </Insert>
</ParserException>
</ParserException>
</RecoverableException>
</ExceptionList>
Amunt! Top Amunt!
Deploy and MQ
The Deploy operation results in a message being put to MQ queue
SYSTEM.BROKER.ADMIN.QUEUE, which is then processed by the Broker.
The Broker should then put a message to MQ queue SYSTEM.BROKER.ADMIN.REPLY.
Qui hi ha escoltant:
display qstatus(SYSTEM.BROKER.ADMIN.QUEUE) type(handle) all
5 : display qstatus(SYSTEM.BROKER.ADMIN.QUEUE) type(handle) all
AMQ8450: Display queue status details.
QUEUE(SYSTEM.BROKER.ADMIN.QUEUE) TYPE(HANDLE)
APPLDESC( )
APPLTAG(:\MQSI\7.0\bin\bipbroker.exe)
APPLTYPE(USER) BROWSE(NO)
CHANNEL( ) CONNAME( )
ASTATE(NONE) HSTATE(ACTIVE)
INPUT(SHARED) INQUIRE(NO)
OUTPUT(NO) PID(3352)
QMURID(0.941) SET(NO)
TID(1)
URID(XA_FORMATID[00000000] XA_GTRID[] XA_BQUAL[])
URTYPE(QMGR) USERID(mbadmin@TTLCBA27)
Problemes :
PAGER
SURFWATCH
SURFWATCH_FAIL
TEXTMESSENGER
TEXTMESSENGER_FAIL
Ping responder
Input message
<Ping>
<Text>Hello There</Text>
</Ping>
Output message
<PingResponse>
<Text>Hello There</Text>
<ReceivedTime>current timestamp</ReceivedTime>
</PingResponse>
ESQL
You can run samples only when you use the information center that is integrated
with the WebSphere Message Broker Toolkit : Help -> Samples and Tutorials ->
Product = MB tkt - MB
sample App
The Application samples are small end-to-end Message Broker applications that show
how to transform and route messages through message flows.
airline reservations
Coordinated Request Reply
DatabaseInput Node
data warehouse
error handler
large messaging
message routing
pager
scribble
Solar Pattern Authoring
user-defined extension
video rental
WBI JDBC Adapter to DatabaseInput Node Migration
Web Service Aggregation
sample Tec
The Technology samples are small Message Broker applications that each show a
specific feature of WebSphere Message Broker.
c:\Documents &
Settings\Administrator\IBM\wmbt70\workspace\.metadata\SamplePreparationWizard.log
Qmgr = MB7QMGR:2414 ;
Broker name = MB7BROKER, qMgr = MB7MGR ;
projects in the workspace: FileBatchProcessingSampleFlowProject ;
new execution groups (to deploy): FileBatchProcessingSampleExecutionGroup ;
HealthCheck flow
Get it here.
<Response>
<BrokerName>MB7BROKER</BrokerName>
<BrokerVersion>7002</BrokerVersion>
<BrokerFamily>WINDOWS</BrokerFamily>
<ExecutionGroupName>default</ExecutionGroupName>
<MessageFlowName>httpHealthCheck</MessageFlowName>
<Timestamp>2011-07-04T13:19:37.583412</Timestamp>
<GMT_Timestamp>2011-07-04T11:19:37.583412</GMT_Timestamp>
</Response>
Lets run v7 samples - [1] batch processing sample
This sample shows how to use the FileInput and FileOutput nodes to read different
input files and append them to one output file. It also shows you how to read a
file "as is" from one local input directory and write the file to a different local
output directory.
Links : File processing -> batch -> run the sample.
c:\>set MQSI
MQSI_FILENODES_ROOT_DIRECTORY=c:\MQSIFileInput
mqsistart MB7BROKER
C:\Program Files\IBM\MQSI\7.0> mqsilist
BIP1284I: El intermediario 'MB7BROKER' en el gestor de colas 'MB7QMGR' se est
ejecutando.
BIP8071I: El mandato ha finalizado correctamente.
c:\MQSIFileInput>type c:\MQSIFileInput\hoffice_out\hoffice_out.txt
Southampton postage parcel 23 letter 56
Winchester postage parcel 27 letter 30
Portsmouth postage parcel 12 letter 84
Lets run v7 samples - [2] address book sample
This sample shows how to use the SOAPInput, SOAPReply and SOAPRequest nodes to
provide and consume a web service. Two sets of example input messages are provided:
one set to call the consumer flow which in turn calls the provide flow, and one set
to ocall the provider flow directly. This sample can also be extended too show how
to set up WS-Security for existing messages flows for both a provider and a
consumer.
The Web Services using HTTP nodes sample has two parts:
the Web Service Host sample, which demonstrates how to use a message broker to
provide an interface to a legacy application as a Web service.
the Web Service Client sample, which demonstrates how to call a Web service, and
how to process the reply from the Web service.
From WebSphere Message Broker v6.1 onwards, SOAP nodes are provided to implement
Web services.
C:\MQSI\9.0.0.0> mqsilist -r
===================================
BIP1284I: El intermediario 'IB9NODE' en el gestor de colas 'IB9QMGR' se est
ejecutando.
-----------------------------------
BIP1286I: El grupo de ejecucin 'WSHOST' en el intermediario 'IB9NODE' se est
ejecutando.
BIP1288I: El flujo de mensajes 'WSHOST_MFP1.WSHOST_WSHOST1' del grupo de ejecucin
'WSHOST' se est ejecutando.
BIP1288I: El flujo de mensajes 'WSCLIENT_MFP1.WSCLIENT_WSCLIENT1' del grupo de
ejecucin 'WSHOST' se est ejecutando.
BIP1290I: El archivo 'WSCLIENT_MFP1\WSCLIENT_WSCLIENT1.esql' est desplegado en el
grupo de ejecucin 'WSHOST'.
BIP1290I: El archivo 'WSHOST_MFP1\WSHOST_WSHOST1.esql' est desplegado en el grupo
de ejecucin 'WSHOST'.
BIP1290I: El archivo 'WSHOST_MS1.dictionary' est desplegado en el grupo de
ejecucin 'WSHOST'.
BIP1290I: El archivo 'WSCLIENT_MS1.dictionary' est desplegado en el grupo de
ejecucin 'WSHOST'.
BIP8071I: El mandato ha finalizado correctamente.
Now we can run the sample and also resolve problems when running samples
The broker takes data from this SOAP message, and generates a new message mapped to
a C header file. This new message is sent to a legacy application by using
WebSphere MQ. The legacy application responds, and data from this response is put
into the HTTP reply that is generated by the broker. The broker has fronted a
legacy application as a Web service.
Using wget:
set FN=WSHOST1IN.xml
set URL=http://localhost:7080/samplebrokerwshost
"c:\Program Files (x86)\GnuWin32\bin\wget.exe" "%URL%" --post-file="%FN%"
--header="Content-Type:text/xml"
Where have we said that our web-service has a bphttplistener at port 7800 ?
javascript:liveAction( "com.ibm.etools.mft.eou",
"com.ibm.etools.mft.eou.wizards.sampleprepwiz.SamplePrepWizActiveHelp",
"select, com.ibm.etools.mft.samples.WBMonitor.res,
0" )
It would be good to know how a MQ "runmqsc" command is issued from within a such a
link
2.127.930.397 IIB_TOOLKIT_V9.0_WINDOWS.zip
Start install by launching installToolkit.bat.
Shared directory (1,5 GB) = C:\Program Files (x86)\IBM\SDPShared ;
Installation Manager v 1.6.2 = C:\Program Files (x86)\IBM\Installation
Manager\eclipse ;
Product (262 MB) = C:\IntegrationToolkit90 ;
To establish why the task failed, examine this wizard's log file which can be found
in the workspace directory
[C:\Documents and
Settings\Administrator\IBM\IntegrationToolkit90\workspace\.metadata]
{bestp}Amunt! Top Amunt!
Toolkit Hints, Tips & Tricks
Prompt for workspace on startup
Windows -> Preferences -> Workbench -> Startup & Shutdown
Discovering the capabilities of WS MB Toolkit v 6 - Hints and Tips
-showlocation option
displays workspace path on top line
-clean option
rebuilds the cache of plugin (and other) information and extends the startup time.
[T430:\WS-BI-MB\ToolKit] Hints_and_Tips_for_WMB_Toolkit.pdf from here
Go to problems tab and select the error line that shows "This project needs to
migrate WTP metadata"
Right mouse click and select "Quick Fix". Select OK to "Migrate WTP metadata".
from here
Per instalar el TKT, primer hem de descomprimir els discs en directoris contigus:
/instbroker/disk1
/instbroker/disk2
/instbroker/disk3
Window -> Show View -> Other -> TCP/IP Monitor
display the TCP/IP monitor on the workbench
De tant en tant, ens conv fer
"Project" -> "Clean" !
"Window" -> "Reset Perspective" = restablir finestres
If we want to see the (XML) message we are handling with at some point of the flow,
put a wire to a MQInput node, and select "Advanced" + "Transaction Mode = none" ;
otherwise mq message can be lost if it is not commited.
flow does not work : what to do ?
mq input node : message domain is not XMLNSC
compute node : compute mode does not propagate LocalEnvironment
Best practices
do NOT use trace node - use "user" trace when needed
use node naming convention, as IC04
Posar el Toolkit en angls : c:\MBTKTv7\
Add the language to the eclipse.ini {yes}
-Duser.language=en
Or add the language to the mb.ini {no}
eclipse
-showlocation
-product com.ibm.etools.msgbroker.tooling.ide
-nl en_US
Configurable message flow properties
When you add a message flow to a BAR file in preparation for deploying it to a
broker, you can set additional properties that influence its run time operation.
These properties are available for review and update when you select the Manage and
Configure tab for the broker archive file.
Flow versioning
It is very important to be sure you are running the flow version you have in mind,
not a previous one.
To assign a flow version number and to verify you have it deployed, we can do:
on any flow, under "User Defined Properties", assign Properties -> Description ->
Version
on the Execution Group, verify you have the correct flow version deployed
Or
use $MQSI Author=Sebastia.Net MQSI$ and $MQSI Subflow 1 Version=v1.3.2 MQSI$ in
"Long Description" field at the "Properties" of the ".msgflow"
then use command
c:\> mqsireadbar -b %TKT%\workspace\BARfiles\cnt_bar.bar -r
BIP1051I: Reading Bar file using toolkit mqsireadbar...
cnt_app.appzip (9/01/14 19:55):
cnt_flow.msgflow (9/01/14 19:55):
Author = Sebastia.Net
Subflow 1 Version = v1.3.2
MB flow version assign MB flow version verify
Keywords are extracted from the compiled message flow (the .cmf file) rather than
the message flow source (the .msgflow file). Not all the source properties are
added to the compiled file. Therefore, add message flow keywords in only these
places:
To set it, select the BAR file on the left pane, expand the "Manage" tab and select
the message flow. Select "Workload management" to display and set the values.
Commit Count
For WebSphere MQ messages, this property specifies how many input messages are
processed by a message flow before a sync point is taken (by issuing an MQCMIT
command). The default value of 1 is also the minimum permitted value. Change this
property to avoid frequent MQCMIT calls when messages are being processed quickly
and the lack of an immediate commit can be tolerated by the receiving application.
Use the Commit Interval to ensure that a commit is performed periodically when not
enough messages are received to fulfill the Commit Count.
This property has no effect if the message flow does not process WebSphere MQ
messages.
Toolkit exe's
C:\Program Files\IBM\WMBT700> dir mqsi*.exe
12/01/2010 12:28 39.664 mqsiapplybaroverride.exe
02/06/2010 15:56 54.512 mqsicreatebar.exe
12/01/2010 12:29 39.664 mqsicreatemsgdefs.exe
12/01/2010 12:39 39.664 mqsicreatemsgdefsfromwsdl.exe
12/01/2010 12:28 39.664 mqsireadbar.exe
5 File(s) 213.168 bytes
Toolkit log
Toolkit writes in {$workspace}/.metadata/.log
Toolkit conectivity
.broker file syntax (expor from MQExplorer):
type BKAS.broker
<?xml version="1.0" encoding="UTF-8"?>
<configmgr crlNameList="" domainName="" host="192.168.1.9" listenerPort="1491"
queueManager="MB7QMGR"
securityExit="" securityExitJar=""
sslCipherSuite="NONE" sslDistinguishedNames=""
sslKeyStore="" sslTrustStore=""
svrconn="SYSTEM.BKR.CONFIG"/>
Thing you can do only from Toolkit
display which Brokers are in a CM domain
assign a Broker to a specific CM (can use "adopt" from Proxy)
Amunt! Top Amunt!
Applying service to the IBM Integration Toolkit
doc
For information about current fixes, follow the link Recommended fixes in the
Download section of the IBM Integration Bus support web page. Click the link for
Version 9.0, and select the updates you want to apply.
Fix : d:\fonts\websphere\mbtkt\mb7000_7002\repository.config
URLs :
updates
extensions
CVS
Concurrent Versions System or Concurrent Versioning System, is a client-server free
software revision control system in the field of software development. A version
control system keeps track of all work and all changes in a set of files, and
allows several developers (potentially widely separated in space and time) to
collaborate.
InitialMemoryInMB
The initial amount of memory (in megabytes) that the JavaT virtual machine requests
from the operating system for memory management during startup.
Its value may be undefined which is indicated by a value of -1.
UsedMemoryInMB
The amount of memory currently used (in megabytes).
CommittedMemoryInMB
The amount of memory (in megabytes) that is guaranteed to be available for use by
the Java virtual machine.
MaxMemoryInMB
The maximum amount of memory (in megabytes) that can be used for memory management.
Interpretation
EG healthcheck
An Execution Group is a process. If we are under AIX, use nmon to display memory
usage. Specifically, verify there is no paging to file system.
Flow eficiency
use references for fields of 3 or more levels, as "InputRoot.XMLNSC.msg.a"
avoid using "SET OutputRoot = InputRoot" if message does not change.
To propagate InputRoot and InputLocalEnvironment, change Compute Mode to
"ExceptionList", selecting "RETURN TRUE"
dont use subscripts
Sample (1) :
do not
SET OutputRoot.XMLNSC.newmsg.aa = InputRoot.XMLNSC.msg.a;
SET OutputRoot.XMLNSC.newmsg.bb = InputRoot.XMLNSC.msg.b;
SET OutputRoot.XMLNSC.newmsg.cc = InputRoot.XMLNSC.msg.c;
but
do not
DECLARE J INTEGER CARDINALITY(InputRoot.XMLNSC.msg.sum[]);
END WHILE;
but
WHILE LASTMOVE(sumRef) DO