Skip to Content
avatar image
Former Member

BPM with 2 JDBC outbound interfaces and one inbound file interface

Hi,

I have a scenario where data is coming from different databases into XI and after processing the data it creates a file at the target side. Some calculations are to be done in the middleware and the result will be sent through a file.

My question is

1. BPM will be used in this scenario?

2. There will 2 outbound interfaces(one for each database access), 2 abstract interfaces and one inbound interface(file). Please correct me if I am wrong.

3. I have to multiply the value of field from one database to a particular value in another database and get the final result. For e.g exchange rate from one database is multiplied to Transaction currency in another database and get the group currency value in the output. Can anyone give the sequence of steps in the intergration process for this scenario as I am new to BPM.

Thanks,

Aparna

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

4 Answers

  • Best Answer
    avatar image
    Former Member
    Jun 07, 2010 at 08:45 PM

    1. BPM will be used in this scenario?

    Could be, could not be.

    BPM for sure can be used in your case. But you can just use normal scenario, with JDBC sender to get data from DB1, and use JDBC lookup to get exchange rate from DB2

    Regards

    Liang

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jun 08, 2010 at 04:14 AM

    Hi,

    As your source payload is coming from 2 different databases BPM is must in this case. Please proceed below steps sequentially

    2 outbound interfaces and 2 abstract interfaces

    In BPM use Fork step with 2 branches and use 2 container varables of 2 abstract interfaces in 2 receive steps. after fork step there should be TRANSFORMATION step in which you are using 2 abstract interfaces at source side and one abstract interface(receiver file type structure) at target side. In this mapping you can multiple field of first database message and second database message. After this transformation step use SEND step(which is final message of receiver).

    In ID:

    2 sender agreements

    2 receiver determination(for BPM)

    2 interface determinations

    1 receiver determination for actual receiver

    1 interface determinatin for receiver

    1 receiver agreement for receiver

    Please start the interface developmetn then you can get the idea.

    thanks,

    madhu

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jun 08, 2010 at 11:06 AM

    Thanks a lot Liang and madhusudana for your responses.

    Since I can use JDBC lookup for this in my nornal scenario I think no need for BPM.

    I have created the advanced UDF for JDBC lookup code. Below is the code.

    String Query = " ";

    Channel channel = null;

    DataBaseAccessor accessor = null;

    DataBaseResult resultSet = null;

    MappingTrace importanttrace;

    importanttrace = container.getTrace();

    // Build the Query String

    Query = "Select home_cur_code FROM gltrxcp WHERE company_code = '" + a[0] + "' ";

    try{

    //Determine a channel, as created in the Configuration

    channel = LookupService.getChannel("BS_JDBC_send","cc_JDBClookup_rec");

    //Get a system accessor for the channel. As the call is being made to an DB, an DatabaseAccessor is obtained.

    accessor = LookupService.getDataBaseAccessor(channel);

    //Execute Query and get the values in resultset

    resultSet = accessor.execute(Query);

    importanttrace.addWarning("resultset" + resultSet );

    for(Iterator rows = resultSet.getRows();rows.hasNext();){

    Map rowMap = (Map)rows.next();

    result.addValue((String)rowMap.get("HOME_CUR_CODE"));

    importanttrace.addWarning("result" + result );

    }

    }

    catch(Exception ex){

    result.addValue(ex.getMessage());

    }

    finally{

    try{

    if (accessor!=null) accessor.close();

    }

    catch(Exception e){

    result.addValue(e.getMessage());

    }

    }

    But I am not getting the desired result. I am getting result as 'Null'.

    Can you please help in resolving this issue. I have also used trace for find out where it is passing Null and found that 'result' is coming null. Do i also need to parse it before passing it to 'result'?

    Can anyone send sample code for JDBC lookup.

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      I am not an expert in this field but will the case affect the processing?

      +Query = "Select home_cur_code FROM gltrxcp WHERE company_code = '" + a[0] + "' "; +

      result.addValue((String)rowMap.get("HOME_CUR_CODE"));

      Regards,

      Abhishek.

  • avatar image
    Former Member
    Jun 08, 2010 at 12:22 PM

    Thanks Abhishek. It was a stupid mistake.

    Add comment
    10|10000 characters needed characters exceeded