Printing messages through ODI procedure using Javashell bean

I am new to this ODI procedure using Javashell bean.
As i know some basics in Java ,i am trying this following code through ODI.
I wanted to print messages using the code System.out.println("Welcome");
But where we can see the output for this code in ODI?
If any on knows ,kindly let me how do i can go about this?

if you run an agent from the command line and you are executing your procedure using this agent then  the output will be reported in the dos/cmd window.

Similar Messages

  • Receiving Email Messages through Oracle procedure using forms.

    Hi,
    First of all best wishes for the people who are delivering their knowledge in that forum.
    I would like to have a procedure that connect to pop servers and receive email messages with attachments. We want to do this through oracle forms.
    What type of routine, I need that browses through the pop servers and receives email messages with attachments into database tables, through forms.
    Can I have an example that how we do that?
    Your valuable information will help me lot.
    Woolmer
    Databases 8i/9i
    forms 6i

    I exactly don't know the code, but I can tell you the steps how to do it. If u find it useful
    Oracle built-ins like UTL_TCP exist that could make it possible to receive email completely inside a stored procedure
    1) Create a special email address on a convenient mail server.
    2) If the mail server isn't the same machine as the database server, use a program like GNU fetchmail that will pull the mail down to the local machine.
    3) Now that the mail data is available in a mail file on the local machine, use one of a variety of techniques to load the email data from the file into the database.

  • ODI Procedure: Using Variable Logical Schema

    Hi!
    i wrote a PL\SQL procedure inside an odi procedure, using options, variables etc.
    now we need to execute the procedure in different logical schemas.
    We've at least 20 different logical schemas and to semplify the maintenance we'd like to pass the logical schema as an Option or something similar,
    is it possibile to do this with a procedure?
    The version of ODI is 11.1.1.5.0 and the targets are only Oracle DB.

    I've got a question : are all you schema in the same server (database) ?
    If so, you can LIST the schemas with a SQL Statement in the "command as SOURCE" tab.
    example :
    select owner as SCHEMA
    from all_tables
    where ...or a SQL Statement in ODI MASTER_Repository to get the logical schema :
    select lschema_name as SCHEMA
    from snp_lschema t1
    where ...And in the "command as destination" tab, you execute the PL SQL, but you use the result of SCHEMA.
    As a result, if you have 40 schema retrieved by the first SQL Statement, ODI will execut your PL/SQL statement 40 times, changing the SCHEMA value each time.
    And, in the first tab (command as destination), you use a generic Oracle User that have access to all schema of the dabase (or at least, the 40 schema you want).

  • How can I get the printed message of stored procedure in JPA

    Hi, I'm using JPA to invoke stored procedure in database, a segment of the sproc is like below:
    if @create_type != 'a1' and @create_type != 'a'
         begin
         print 'create type must be either ''a1'' if you pass in A1 ID, or ''a'' if you pass in User ID'
         select 0 as "Result"
         endI can get the 0 as the result, it means business operation failed currently, but how could I get the message of 'create type must be either ''a1'' if you pass in A1 ID, or ''a'' if you pass in User ID'?
    That information is important as it indicates why the operation failed.
    Thanks

    how can i get rows count returned by stored procedure in oracle sql developer?
    Procedures do NOT return a value - functions return a value.
    A procedure executes whatever code it contains. That code could contain many queries that produce many row counts.
    Does your procedure take one or more IN, OUT or IN OUT parameters?
    See example 8-1 for an example of executing a procedure that has an OUT parameter.
    http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/subprograms.htm#CHDBIEEE

  • ODI Procedure using Essbase schema

    Hi,
    I want to retrieve a substitution variable from Essbase. I've done my due diligence and read John's excellent posting on this, so I know how this can be done. As I only want to retrieve a variable, I'm wondering if I can simply do this in a procedure instead of customizing the KM.
    My idea was to create a procedure which retrieves the variable as explained by John and then writes it to a database table with the fields {SessionNumber, VariableName, Value}. This would make it possible for a variable to pick up the value easily. So I created a procedure and set Source Technology to Essbase and Target Technology to JavaBeanShell. This way I thought I would be able to get the logon credentials for the Essbase database through <%=odiRef.getInfo("SRC_USER_NAME")%> etc. But this doesn't work because I can't select the Essbase schema for this.
    Is this possible?
    Thanks,
    Matt
    Edited by: Matt_SJC on Apr 20, 2010 10:03 AM

    Hi Matt,
    I think your idea is perfectly sensible though I am not sure you can do it that way, essbase technology really uses bean scripting as its technology, when you use this technology you can't select the logical schema in a procedure. I am not exactly sure on the reasons behind it, usually it is odbc/jdbc technologies where you can select the schema.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Multiple message through FIle Adapter using XI 2.0

    I have scenario to create multiple message using File adapter .My file structure will be like
    EMPID     NAME     SKILLS
    001     A      ABAP
    001     A      XI
    002     B      JAVA
    Now I want to post first 2 records in one message and last record in other message.
    Can we do it in XI 2.0.Any help appreciated

    Hi Suraj.
    Thank you very mutch for your reply.
    Excuse me...my mapping is done for message type and idoc.
    My problem is that when the interface start, on the sxmb_moni I see an error like this:
    Creating Java mapping com.sap.xi.tf._MM_XmlOrderToIdocMapping_ --- Using MappingResolver with context URL //srvsapdev/sapmnt/CX1/SYS/global/xi/mapping/gestione_magazzini/7fa9c9e15a7811dab710f3e3ac10826e/ --- Load of com/sap/xi/tf/_MM_XmlOrderToIdocMapping_.class from //srvsapdev/sapmnt/CX1/SYS/global/xi/mapping/gestione_magazzini/7fa9c9e15a7811dab710f3e3ac10826e failed. --- Class not found: com.sap.xi.tf._MM_XmlOrderToIdocMapping_ --- java.lang.ClassNotFoundException at RUMappingJava.load(): Could not load class: com.sap.xi.tf._MM_XmlOrderToIdocMapping_ Class not found: com.sap.xi.tf._MM_XmlOrderToIdocMapping_ --- com.sap.aii.ibrun.server.map.MappingRuntimeException: at com.sap.aii.ibrun.server.map.MappingRuntimeException.code_STYLESHEET_OR_CLASS_NOT_FOUND
    ..where 'gestione_magazzini' is my namespace and 'MM_XmlOrderToIdocMapping' is my message mapping.
    Can you help me to undestand the problem?
    Thanks,
    Gianluca

  • How to pass and print files through LPT1 port using thermal printer

    hello,
    We are developing POS for a retailer store and we most probably finished it. We are using the following hardware interfaces for the development.
    1) Receipt Printer with Cash Drawer
    Brand: POSIFLEX pp6000 serial thermal printer
    Power Rated: DC 24v 2.0 A
    Model no: 3902c492
    2) Barcode Label Printer
    Brand : Monarch Paxar
    Model No: M09642PMU
    Serial No: 20123152
    3) POLE DISPLAY
    Brand: CE
    Model No: 07010517
    4) Barcode Scanner
    Brand: KB WEDGE
    Model no: A307911
    5) Programmable Keyboard
    Brand: PREH COMMANDER MC 128
    Model No: 90319-000/0000
    Serial No: 014693
    6) Touch Screen
    Brand: 3M TOUCH SYSTEMS INC
    Model No: 11-81371-129
    The problem is , we never get the printout of the receipt .But we generaed the receipt. And the cash drawer is not opening.We use the following code for printing the receipt
    import java.awt.print.*;
    import java.io.*;
    import java.util.*;
    class PrintManager extends Thread
    String STR_OUT="";
    boolean CD_OPEN=true;
    FileOutputStream fos;
    PrintStream ps;
    //char[] CMD_CUT={29,86,66,250}; //cuts paper
    char[] CMD_CD_OPEN={27,112,0,25,250}; //kicks cash drawer 1
    public PrintManager(){
    setDaemon(true);
    public void Init()
    Init(true);
    public void Init(boolean CDOPEN)
    try{
    fos = new FileOutputStream("LPT");
    System.out.println("nnnnnnnnnnnnafter LPT2");
    ps = new PrintStream(fos);
    System.out.println("nnnnnnnnnnnnafter LPT2");
    // System.setOut(new PrintStream(new FileOutputStream("LPT1.txt")));
    //System.setOut(new PrintStream(new FileOutputStream("console.txt")));
    System.out.println("SFWERWRW"+ps);
    // STR_OUT=STR;
    CD_OPEN=CDOPEN;
    }catch(Exception ex)
    System.out.println("Init:New::"+ex.toString());
    public void run ()
    try{
    if(ps==null)
    return;
    //ps.println(STR_OUT);
    //ps.print(CMD_CUT);
    if(CD_OPEN)
    System.out.println("ewqeqeqe");
    ps.print(CMD_CD_OPEN);
    System.out.println("ewqeqeq3453e");
    ps.close();
    fos.close();
    }catch(Exception ex)
    System.out.println("run::"+ex.toString());
    public void Close()
    try{
    ps.close();
    fos.close();
    ps=null;
    fos=null;
    }catch(Exception ex)
    System.out.println("Init:close::"+ex.toString());
    public class PrintRcpt {
    public static void main(String args[]) {
    PrintManager objPM=new PrintManager();
    //call Init always before calling start
    objPM.Init(); //print and open cashdrawer
    //objPM.Init("ZX",false); //print and do not open cashdrawer
    objPM.start();
    System.out.println("DONE");
    //Below sleep is a simulation for time lapse between two sales- do not include this sleep in the final code
    try{
    Thread.sleep(1000);
    System.out.println("DONE2");
    }catch(Exception ex){}
    //before starting second sale, close the port connection opened by first sales
    //this close should be called when the user closes the receipt print preview screen
    objPM.Close();
    objPM=null;//destroy the print manager object
    [/code]
    You please post your suggestion for getting the printout from our POS system.

    [url http://forum.java.sun.com/thread.jsp?forum=31&thread=535737]Duel posted

  • Business Messages In ODI operator

    Guys,
    Iwas trying to add some business messages in odi operator when an interface fails as part of ko step through odi procedure,
    and iam using your link http://odiexperts.com/how-to-show-business-messages-on-operator-and-too-debug-variables/.
    I have done exactly like what was mentioned in the link i.e creating option and a procedure and add a value to option to the procedure in package etc,but it is not firing when an interface fails.is there is anything extra we need to do? or is there is any otherway we can do this?
    Thanks for your help.

    Hi Jim,
    Can you pest the code you have written ??
    1st create a procedure. 1st setp:
    Technology java beanshell:
    throw new Exception("\n\n\n\n My error message \n\n\n\n");
    just copy above code and pest in your step. Then execute that procedure.
    See if you are getting the message in operator or not. This is for testing purposes. If this works then add the option in to the procedure as suggested by odiexperts.com
    Thanks.

  • Calling Stored Procedure using J2EE (CMP/BMP)

    Hi guys,
    Can anyone please help me of how to call a stored procedure using a bean in J2EE? I am using Sybase as a database. I am not sure of how to call a stored procedure that is stored in the database server.
    I have one more problem that I am getting in my application. I have 6 entity beans for 6 tables (3 temporary which are deleted and created as and when deployed and 3 permanent which are not deleted when deployed). When I access and manipulate data in temporary tables, everything works fine. But when I try to insert records in the 3 permanent tables, i get an error saying...
    ejbexception.transactionrolledbackerror - Client's transaction rolledback
    Your suggestions would be very valuable.
    Thanks in advance,
    ashish

    Actually, I was getting the RolledBack exception before I was using stored procedure. The bean was supposed to make a few transactions in the tables within the Sybase database. Since it gave me rolledback error, I decided to write a stored proc. in the database and to call that procedure using the bean.
    Now, I am not sure of how to call that procedure using the bean. Also, the syntax of calling that procedure using CallableStatement. I believe, I would have to use Bean Managed Persistence (BMP) if I want to use CallableStatement. I am fooling around with it right now and would let you know if I am getting any exceptions or errors. Meanwhile, any help on the syntax of calling the stored proc. would be highly appreciated.
    Thanks in advance
    Ashish

  • Update Statement in ODI Procedure

    Hi All,
    I want to update a value in a table through ODI procedure
    I Created a procedure,added new step,given details like Technology,Context,Schema in Command on target
    on the command:
    i was trying with:-
    update table_name
    set column_name1='value1'
    where column_name2='value2'
    and also i tried with:-
    begin
    UPDATE Schema_name.Table_name SET column_name1='value1' WHERE column_name2='value2';
    end;
    in both cases i am unable to update the value in the table
    Please suggest me
    Thanks in Advance

    Hi,
    Thanks for the reply
    I fixed that problem
    It was caused due to Database error
    Thanks

  • How to read I$ table using ODI procedure

    Hi
    Can any one help me how to drop a I$ table from out sie of interface.
    I have tried below approches but no luck
    I have created ODI procedure with technology oracle and target logical schema (I$ tables are creating on target DB) with and with out begin and end;
    Approch 1:
    Given below code in ODi procedure
    drop table <%=odiRef.getTable("L", "INT_NAME", "W")%> <% if (new Integer(odiRef.getOption( "COMPATIBLE" )).intValue() >= 10 ) { out.print( "purge" ); }; %>
    Approch 2:
    drop table I$_<%=odiRef.getTable("L", "TARG_NAME", "A") %>;
    Approch 3:
    drop table <%=odiRef.getTable("L", "INT_NAME", "W")%> (but it is fetching target dtabase schema anme not I$ table)
    Please help me any other alternative way to drop a I$ table, more over this code should be unique for all interface
    Regards,
    Phanikanth

    Thanks bhabani,
    Actaul my requirement is some time my scenario is stoping due some issue at Merge Rows Step (I am using IKM Oracle Incremental Update(Merge) KM) when the next iteration starts it is thwoing and error at create flow table I$ step and error is table name is already exists, so i am doing is if the interface went failed I am storing those information in one table using ODI procedure (INF--ko-->ODI procedure) in same ODI procedure I want to call a I$ table to drop.
    Can you please provide the steps so it will very useful for me using Java variable.
    I have gievn a step as below on create I$ table step (after create I$ statement)
    <@ java.lang.String Idollertable = <%=odiRef.getTable("L", "INT_NAME", "W")%> ; @>
    I am calling Idollertable variable in ODI procedure which is ko>* of INF as <@=Idollertable@>
    Note: I have followed below approch
    ODI Procedure Code:
    drop table <@=Idollertable@>; --> *2nd approch*
    begin
    insert into ODI_EXECUTION_ERROR_DETAILS
    (SESSION_NO,
    SCENARIO_NAME,
    CONTEXT_NAME,
    ERR_MESSAGE,
    INSERT_COUNT,
    ERROR_COUNT)
    values
    <%=snpRef.getSession("SESS_NO")%>,
    '<%=odiRef.getPrevStepLog("STEP_NAME")%>',
    '<%=odiRef.getContext( "CTX_NAME" )%>',
    '<%=odiRef.getPrevStepLog("MESSAGE")%>',
    '<%=odiRef.getPrevStepLog("INSERT_COUNT")%>',
    '<%=odiRef.getPrevStepLog("ERROR_COUNT")%>'
    commit;
    drop table <@=Idollertable@>; --> * first approch *
    end;
    Please help me
    Regards,
    Phanikanth
    Edited by: Phanikanth on Mar 3, 2013 9:52 PM
    Edited by: Phanikanth on Mar 3, 2013 9:52 PM

  • Print messages using Java or Jython

    Hi,
    In my ODI procedure I would like to print out some results to make it easier to check the results.
    Is there a way to print out messages in a step using java or jython?
    I tried out to print to stdout - that did not work...
    Thanks,
    Helmut

    Hi H,
    Sure.
    Below is the sample code snippet,
    import os
    ftrg = open('c:/temp/listdir.txt', 'w')
    try:
    __mydir = 'c:/odi'
    __mylist = os.listdir(mydir)
    __mylist.sort()
    __for dirOrFile in mylist:
    ____if os.path.isdir(mydir + os.sep + dirOrFile):
    ______print >> ftrg, 'DIRECTORY: %s' % dirOrFile
    ____else:
    ______print >> ftrg, 'FILE: %s' % dirOrFile
    finally:
    __ftrg.close()
    The above code will print the list of directories in a specified path to a file listdir.txt.
    P.S: If you want to try the code please replace __ with tab. Also, you can have a look at oracledi_jython_reference.pdf for more info.
    Thanks,
    G

  • Error in loading data into essbase while using Rule file through ODI

    Hi Experts,
    Refering my previous post Error while using Rule file in loading data into Essbase through ODI
    I am facing problem while loading data into Essbase. I am able to load data into Essbase successfully. But when i used Rule file to add values to existing values I am getting error.
    test is my Rule file.
    com.hyperion.odi.essbase.ODIEssbaseException: com.hyperion.odi.essbase.ODIEssbaseException: Cannot put olap file object. Essbase Error(1053025): Object [test] already exists and is not locked by user [admin@Native Directory]
    at org.apache.bsf.engines.jython.JythonEngine.exec(JythonEngine.java:146)
    at com.sunopsis.dwg.codeinterpretor.SnpScriptingInterpretor.execInBSFEngine(SnpScriptingInterpretor.java:346)
    at com.sunopsis.dwg.codeinterpretor.SnpScriptingInterpretor.exec(SnpScriptingInterpretor.java:170)
    at com.sunopsis.dwg.dbobj.SnpSessTaskSql.scripting(SnpSessTaskSql.java:2458)
    at oracle.odi.runtime.agent.execution.cmd.ScriptingExecutor.execute(ScriptingExecutor.java:48)
    at oracle.odi.runtime.agent.execution.cmd.ScriptingExecutor.execute(ScriptingExecutor.java:1)
    at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:50)
    at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2906)
    at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2609)
    at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:540)
    at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:453)
    at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1740)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:338)
    at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:214)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:272)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:263)
    at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:822)
    at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:123)
    at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:83)
    at java.lang.Thread.run(Thread.java:662)
    from com.hyperion.odi.common import ODIConstants
    from com.hyperion.odi.connection import HypAppConnectionFactory
    from java.lang import Class
    from java.lang import Boolean
    from java.sql import *
    from java.util import HashMap
    # Get the select statement on the staging area:
    sql= """select C1_HSP_RATES "HSP_Rates",C2_ACCOUNT "Account",C3_PERIOD "Period",C4_YEAR "Year",C5_SCENARIO "Scenario",C6_VERSION "Version",C7_CURRENCY "Currency",C8_ENTITY "Entity",C9_VERTICAL "Vertical",C10_HORIZONTAL "Horizontal",C11_SALES_HIERARICHY "Sales Hierarchy",C12_DATA "Data" from PLANAPP."C$_0HexaApp_PLData" where (1=1) """
    srcCx = odiRef.getJDBCConnection("SRC")
    stmt = srcCx.createStatement()
    srcFetchSize=30
    #stmt.setFetchSize(srcFetchSize)
    stmt.setFetchSize(1)
    print "executing query"
    rs = stmt.executeQuery(sql)
    print "done executing query"
    #load the data
    print "loading data"
    stats = pWriter.loadData(rs)
    print "done loading data"
    #close the database result set, connection
    rs.close()
    stmt.close()
    Please help me on this...
    Thanks & Regards,
    Chinnu

    Hi Priya,
    Thanks for giving reply. I already checked that no lock are available for rule file. I don't know what's the problem. It is working fine without the Rule file, but throwing error only when using rule file.
    Please help on this.
    Thanks,
    Chinnu

  • Exception while putting messages on JMS Qeue through ODI

    Hi All,
    CASE:
    We have two seperate Unix Machines.
    Installations on Machine1:
    1.) Weblogic 10.3.5
    2.) OID (Oracle Internet Directory) installed on weblogic.
    3.) JMS Server installed on weblogic.
    4.) JMS Queues on weblogic.
    Installations on Machine 2:
    1.) Weblogic 10.3.5
    2.) Oracle Data Integrator Server on weblogic (NOTE: ODI Version is 11.1.1.5)
    3.) ODI Java EE Agent deployed on ODI Server.
    JMS Queue Data Server is configured in ODI (Machine 2), which sends and receives Messages on JMS Queues (Machine 1).
    While connecting JMS Queue on Machine 1 through ODI Java Agent (OracleDIAgent), it connects for the first time but fails while making successive connections
    to Queue. And also then all other ODI data servers connections (i.e. Java EE Agent, Oracle Data Servers, JMS Queue) through Java EE Agent fails with the following exception:
    ODI-3034:Test connection failed due to ODI-1274: Agent Exception Caused by: Create DwgConnectConnection to master repository failed; nested exception is java.sql.SQLException: Pool connect failed : java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators].
    Kindly help me out in resolving the issue.
    Thanks

    Hi,
    you may be interested in a solution I tracked down at http://support.bea.com/application?namespace=askbea&origin=ask_bea.jsp&event=button.search_ask_bea&askbea_display=relevancy&askbea_max_number_returned=50&question=weblogic.jms.common.JMSException%3A+Connection+not+found&all_bea_products=all_bea_products&ES=ES#
    Basically : you need to have your Weblogic servers, JMS servers and JMS stores
    on each domain named uniquely !!!
    "Joe Mooney" <[email protected]> wrote:
    >
    Any news on this one ?
    "B Liu" <[email protected]> wrote:
    Can u tell me how you supplied the required security credentials?
    Thanks,
    -Ben
    "Andy" <[email protected]> wrote:
    Hi.
    I have a situation where I am sending an JMS message to external queue
    on Weblogic
    Server which is not part of cluster. This happens in a session bean,which
    is wrapped
    in a container transaction. I have supplied the required security credentials
    like user, password etc.
    I get an error while tryign to send the message through bean. The stack
    trace
    is :
    weblogic.jms.common.JMSException: Connection not found
    at weblogic.jms.dispatcher.InvocableManager.invocableFind(InvocableManager.java:136)
    at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:596)
    at weblogic.jms.dispatcher.DispatcherImpl.dispatchSync(DispatcherImpl.java:153)
    at weblogic.jms.client.JMSConnection.createSessionInternal(JMSConnection.java:400)
    at weblogic.jms.client.JMSConnection.createQueueSession(JMSConnection.java:347)
    also one thing interesting is that if I call the same server and queue
    outside
    of the session bean,it works fine.
    Any ideas what might be causing the issue?
    Thanks
    Andy

  • How do I use a bean to determine which message bundle value to use?

    Is there a way to use a bean to determine which message from my message bundle I use? I want to be able to call my bean in JSF/JSP page, have the bean return a String, and use that String to pick a message from my message bundle properties file. Now I can do this:
    <h:outputText value="#{bundle.messageA}" />or this:
    <h:outputText value="#{bean.messageName}" />where I have a method on the bean like this:
    public String getMessageName(){
         if(someTest == true){
              return "messageA";
         } else {
              return "messageB";
    }I want to combine the two so my bean determines which message I pick. I want to do this because I want to keep all the text a user sees in the message bundle file. However, based on the state of the bean, I want to display different messages.
    Thanks in advance,

    Ah this way. So you want that much of nasty if statements in the bean instead? ;)
    Then make use of the fact that you also can access Map values using the brace notation. E.g.
    <h:outputText value="#{bundle[bean.messageKey]}"/>Where getMessageKey() returns the message key, e.g. 'messageA' or 'messageB' and so on.

Maybe you are looking for