Fan-out operation
In this example, the instrumented application receives a single message and outputs several messages. The monitorTransaction method is not called when the message is received, but it is called before sending each outgoing message.
InputSource orderInput = new InputSource(….);
InputSource accountsInput = new InputSource(….);
OutputSource creditCardOutput = new OutputSource(….);
OutputSource accountsOutput = new OutputSource(….);
OutputSource archivesOutput = new OutputSource(….);
BTMActivity appActivity = new
BTMActivity("Example3Application");
while(!orderInput.stop() && ! accountsInput.stop())
{
String instance = null;
if (orderInput.msgWaiting())
{
Message inMsg = orderInput.getMessage();
String [] destIds = {"CreditCardRoute", "AccountsRoute", "ArchivesRoute"};
Message outMsg = ProcessMessage(inMsg);
creditCardOutput.putMessage(outMsg);
appActivity.monitorTransaction(inMsg.getTransName(), inMsg.getTransID(),
instance, "CreditCardRoute",outMsg.getStatus(), destIds);
accountsOutput.putMessage(outMsg);
appActivity.monitorTransaction(inMsg.getTransName(), inMsg.getTransID(),
instance, "AccountsRoute", outMsg.getStatus(), destIds);
archivesOutput.putMessage(outMsg);
appActivity.monitorTransaction(inMsg.getTransName(), inMsg.getTransID(),
instance, "ArchivesRoute", outMsg.getStatus(), destIds);
}
else if (accountInput.msgWaiting())
{
Message inMsg = accountInput.getMessage();
String [] destIds = {"AccountsRoute", "ArchivesRoute"};
Message outMsg = ProcessMessage(inMsg);
accountsOutput.putMessage(outMsg);
appActivity.monitorTransaction(inMsg.getTransName(), inMsg.getTransID(),
instance, "AccountsRoute", outMsg.getStatus(), destIds);
archivesOutput.putMessage(outMsg);
appActivity.monitorTransaction(inMsg.getTransName(),inMsg.getTransID(),
instance, "ArchivesRoute", outMsg.getStatus(), destIds);
}
}