Return Response to database polling or dequeueing - is it possible in OSB?

The OSB tutorials that I have seen only seems to LOG the incoming data.
Is it possible to return a response or return results based on input data from Polling/Dequeueing?

After dequeueing the event, I could get the ID of the record that got changed  and then via a jca business service get the entire data for that ID and return that as the response. I incorrectly assumed that I need to modify the seeded event.xsd /wsdl for the output data....In fact that actually caused the problem. Once I left it seeded, it dequeued it and returned the data.

Similar Messages

  • Database polling performance issues

    I am using Database polling to detect database changes for OLTP application.
    my doubts are
    1) will it affect performance of OLTP application
    2) If so what would be the impact on OLTP application
    3) How we can improve performance
    4) any link to get more idea about this.

    1) will it affect performance of OLTP application
    No IT WONT AFFECT BECAUSE oltp Aapplication has
    Transactions that involve small amounts of data
    * Indexed access to data
    * Many users
    * Frequent queries and updates
    * Fast response times
    2) If so what would be the impact on OLTP application
    N/A
    3) How we can improve performance
    Do not poll the table for 30 secs interval poll for atleast 45 secs intervals
    4) any link to get more idea about this.
    N/A

  • Database Poller issues in Clustered env

    Hi,
    I am running Oracle BPEL 10.1.3.4 on top of Weblogic version 9.x in a clustered env. I created a simple database poller BPEL process (for target table in Oracle database) with below parameters:
    Max Raise Size: 1
    Max Transaction Size: 2
    Polling Interval:30
    Distributed Polling is enabled
    All other BPEL engine and domain level parameters have default values.
    In my clustered env two instances of database poller BPEL process are running on diff nodes. Now I populated my table with 1000 records in one go. According to parameters I expect:
    - In each polling interval max 2 record will be processed by database poller BPEL process running on single node. And there will be 2 instances of this bpel process as max raise size is 1. Same I expect for database poller BPEL process running on another node. So overall 4 records should be processed in each polling interval and 4 instances of BPEL processes should be visible in BPEL console. But in actual its always 2.
    Is I am missing something here? Won't the load balancer distributes records to BPEL processes on both nodes equally?
    Also then I raise Max transaction size to higher value e.g. 20. But in this case after processing nearly 1/3 rd of records, the BPEL process stopped picking up any further records. Is there any known issue where Adapter stops picking any further database records if transaction size limit is higher?
    thanks
    Ankit
    Edited by: AnkitAggarwal on 22-Feb-2010 03:36

    Hi Ankit,
    I have Oracle BPEL env11.1.1.2.0 clustered over 2 nodes.
    I am facing a similar issue. In my scenario I have Bpel (with DB poller) and its deployed on the cluster. And I am connected to DB via Multi data source (MDS-1) with only one datasource (DS-1) configured in it.
    So whenever I update the table which is being polled, in some cases I have TWO instances and in some cases I have ONE Instance running. My requirement is to have only one instance running every time the DB poller is initiatied.
    Kindly help me out.
    Thank You
    Best Regards
    Prasanth

  • Database polling process

    I have created a bpel database polling process to process a single table and use a logical update (mark a column as processed). The table will contain many unprocessed records at any time. I have setup the polling interval 5 Sec and records unlimited for each polling interval and in the process i am calling a stored procedure to insert same data into another database.
    My doubts
    But It fetches only one record and different instance is created for every Row. Is it normal process?
    Why it takes only record after using unlimited option?
    why i am asking this means i don't want to call stored procedure for each and every record.
    I'm using MS SQL Server 2005.
    any one pls let me know what is happening inside.

    Depends on how you define performance. DBs are generally designed for this kind of load so you then need to look at the middleware. The concern I always have is how big can this message get. If it can potentially grow big, I would say over 10MB then you could run into trouble if you haven't tuned for that, 1 10MB file could hang your whole system if not tuned (extreme case to make a point). If you have it running row by row it may take more time but they will go though. Without knowing more about your environment I can't comment too much more, e.g. patterns, hardware, load etc.
    Also polling isn't the most effective way long term to invoke a message. If the table is going to grow large I would look at partitioning as that select statement will deteriorate over time as you don't delete the records once read. ( I'm just trying to give you things to think about it may not be relevant your your site)
    cheers
    James

  • Facing problem for inserting the  RFC return response in JDBC

    Hi
    Can any one  share views for resulting my problem,
    This is my scenrio(JDBC>RFC>JDBC) logic follows like this:
    Design:
    1. MT--X(request from JDBC(A))
    2. MT--Y(Response to JDBC(A))
    3. Defined Outbound Sync MI(Z) and given request as 'X' and response as 'Y'
    4. Imported BAPI--B
    5. Done MM between X and B-->request mapping(Zmap1)
    6. Done MM between B.Response and Y--->response mapping(Zmap2)
    7. Defined the IM between Z and B
        a. Zmap1 given as request
        3. Zmap2 given as response
    And according to that i have confgured CCs,SA,RA,RD,ID. 
    It seems to be working fine..request map posting data properly in BAPI and also getting response as payload only, but it is not updating in JDBC column, which i mapped as response!it seems to be everry thing is ok..but i dint understand why it is not updating the return response in JDBC side?
    Note: Here i'm not using BPM, without BPM i made synchronous.
    In SxMB_MONI ..i'm getting response as E or S based on rfc return structure.
    Regards
    Rambarki

    Hi,
    I think there is a mistake in your messaage type to insert into JDBC. The format should be,
    <MT>
      <statement>
         <test action="insert">
              <table> </table>
         </test>
         <access>
              <row1>  </row1>
              <row2>  </row2>
         </access>
      </statement>
    </MT>
    Your action is an attribute of <test>.
    Likewise in your case, you Message should be something like,
    <root>
         <statement>
              <Invoice action="insert">
              <table> nameoftable <table>
              <access>
                   <f1> </f1>
                   <f2>     </f2>
              </access>
         </statement>
    </root>
    Check out these links on the various options avaiable for the JDBC adapetr and how the action attribute can be used,
    http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
    Also, check this simple file to jdbc blog for your reference on JDBS adapter,
    /people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30
    Hope this clarifies and solves a part of your problem,
    Regards,
    Bhavesh

  • Can we put multiple Database Polling within the asynchronous process

    Hi,
    Can we put multiple Database polling within the the same asynchronous BPEL process.
    There will be multiple Receive activities to receive the data from the poller.
    Saptarishi

    Hi Peter,
    I am using 10.1.3.4 and cannot use ESB/mediator.
    For the 2nd option,
    I have tried to put multiple receive's to poll data from a table but it does not work(it waits at the 2nd Receive). Let me try to elaborate the issue a bit.
    I have created a table for polling.
    The table has 3 columns :- transaction_id, status, is_read
    is_read is kept to implement the logical delete strategy of DB polling.
    What I need to do is to maintain a single instance of BPEL to maintain a transaction(which is uniquely identified by transaction_id).
    The BPEL should track the different stages of the transaction, i.e whenever a new row is inserted in the table with the updated status for a transaction, it must find the correct instance(by co-relating the transaction_id) and go to the next step (wait for the next receive activity) until all the steps of the transaction is completed.
    In the code, I created a correlation set consisting of transaction_id(only). The property transaction_id has an alias to the inbound variable's payload.
    In the first Receive, I checked the "create instance" checkbox. Also the correlation set is initialized.
    From next Receive onwards the correlation set is checked.
    The polling frequency is 5 secs.
    The first Receive works fine and the process is instantiated. But it waits at the 2nd Receive indefinitely.
    It will be very helpful if you can try this once. If you feel this is not the right approach, please guide me.
    Thanks and Regards,
    Saptarishi

  • Database Poller to start the control flow

    I am relatively new to BPEL/SOA. I need your help in the design process
    I have a design as following:
    I have to essentially bring data from DB2 database into Siebel. On the Siebel side I have the Webservices created.
    1. rowid, tablename, isTheRowProcessed, timestamp.is the structure of my polling table's structure.
    The tablename column will tell me which application table has been updated/inserted with new data.
    2. The Database Poller will poll the Polling table every minute and see there is a new row. The BPEL will read the tablename column and fetch the name of the table.
    3. Depending on the name of the tablename, a specific Web Service will be invoked which will insert the data into the Siebel system.
    for example, if the new row is:
    10 TableA NotRead 8/19/2012 10:10:10
    The poller should the read above and make it "10 TableA Read 8/19/2012 10:10:10"
    Then WebServiceA should be invoked with some data.
    Here is My question:
    Should it be Async BPEL process or Synchronous process that should have the Poller?
    Will Poller kick start sub BPEL processes?

    I have a DB poller which has only one row (always just one row) and the Poller would update flag to N from Y.
    The DBPoller is set to run every two seconds. I have a flag that is initially set by human to Y. The Poller will flip the value of the flag to N (from Y) and initiate a one-way BPEL process and if the BPEL process will set the Flag back to Y if successful. If the BPEL process fails then the BPEL process will leave the value of the flag to N and the BPEL process sends a mail to the users about the failure. The users after fixing the issue (may be some of the Web Services called by the BPEL are unavailable), will set the flag to Y and the process will continue.
    The above intention is supposed to create create an instance id only after entire BPEL is executed. The poller is configured to execute every 2 seconds.
    instance_id starttime BPEL Execution time
    1 5:00:00 30 seconds
    2 5:00:02 20 seconds
    3 5:00;04 25 seconds
    The above is the scenario is my current execution.
    I thought that the second instance would start at 5:00:30 because the flag value would be N from 5:00:00 to 5:00:30 and the BPEL process would set the flag's value to Y at the end of execution of the BPEL process (instance 1). But, to my surprise 2nd instance is starting at 5:00:02 (just because the poller is configured to run every 2 seconds). Even if the poller is configured to run every 2 seconds the poller should not create BPEL process because the Poller at 5:00:02 should see the flag value of N (The poller should only create an instance if the flag's value is Y).
    Please clarify this behavior.

  • I would like to change the current song from the pull down tab so that I don't have to exit whatever app I'm in, return to music and change it. Is this possible?

    I would like to change the current song from the pull down tab so that I don't have to exit whatever app I'm in, return to music and change it. Is this possible?

    Try double clicking the Home button and then swipe the bottom row fully to to the right to get to the music control

  • Database is not integrated; upgrade not possible

    Hi,
    I am trying to upgrade a 2005B database to SAP 8.8 version using the PL04 Upgrade.exe. One of the steps makes a previous test for Upgrade and show me a message error: " Database is not integrated; upgrade not possible" for the components "Common-Database, Add-ons and Help".
    Does anybody knows how I can solve this issues?
    Regards and thanks for your help,
    Alberto Franç

    Hi
    Refer below link
    [https://websmp230.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/smb_searchnotes/display.htm?note_langu=E&note_numm=0001343050]
    Thanks
    Kevin

  • Null or empty response from database?

    Is there anything I can do with connecting to my database? I get null or empty response. There is no error message.
    package databaseconnection; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MainTest { static String userName = "mynickname"; static String userPassword = "myunforgettablepassword"; static String databaseUrl = "jdbc:mysql://databaseserver.com/myfavouritedatabase"; static String userQuery = "SELECT * FROM ques"; public static void main(String[] args) { // ConnectToDatabase CTD = new ConnectToDatabase();             MainTest MainTest= new MainTest();             MainTest.connect(userName, userPassword, databaseUrl, userQuery); // CTD.connect(userName, userPassword, databaseUrl, userQuery); System.out.println(); // i get null as the response? } void connect(String userName, String userPassword, String databaseUrl, String userQuery){ try { Class.forName ("com.mysql.jdbc.Driver").newInstance (); Connection conn = DriverManager.getConnection (databaseUrl, userName, userPassword); Statement stat = conn.createStatement(); String query = userQuery; ResultSet result = stat.executeQuery(query); try{                         while (result.next()) { String s = result.getString("Name");         System.out.println(s);     return; } }                                 catch ( SQLException sqlException)         {               sqlException.printStackTrace();         } System.out.println("Result(s): "); while(result.next()){ System.out.println("name:\t" + result.getString("Name")); System.out.println(""); } conn.close(); }catch (SQLException e) { } catch (InstantiationException e) {} catch (IllegalAccessException e) {} catch (ClassNotFoundException e) {}         } }
    /* * Found here and modified from: * http://www.romow.com/computer-blog/how-to-use-mysql-with-java/ */ package databaseconnection; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JOptionPane; public class ConnectToDatabase { String s; public void connect(String userName, String userPassword, String databaseUrl, String userQuery){ try { Class.forName ("com.mysql.jdbc.Driver").newInstance (); Connection conn = DriverManager.getConnection (databaseUrl, userName, userPassword); Statement stat = conn.createStatement(); String query = userQuery;                     ResultSet result = stat.executeQuery(query); try{                                                 while (result.next()) {       s = result.getString("Name");         System.out.println(s);     return; } }                                 catch ( SQLException sqlException)         {               sqlException.printStackTrace();         }                         System.out.println("Result(s): "); while(result.next()){ System.out.println("name:\t" + result.getString("Name")); System.out.println(""); }                             conn.close(); }catch (SQLException e) { } catch (InstantiationException e) {} catch (IllegalAccessException e) {} catch (ClassNotFoundException e) {}         }     }        

    Note: This thread was originally posted in the Swing forum, but moved to this forum for closer topic alignment.

  • SOA database poller

    Hi All,
    I am using a DB poller to read records from the table.
    The problem is the DB poller picks the records randomly but I want it to process records by creation_date.
    Here is my configuration.
    <endpoint-activation portType="XX_ptt" operation="receive">
        <activation-spec className="oracle.tip.adapter.db.DBActivationSpec">
          <property name="DescriptorName" value="TestPoller.Test"/>
          <property name="QueryName" value="TestPollerSelect"/>
          <property name="MappingsMetaDataURL" value="TestPoller-or-mappings.xml"/>
          <property name="PollingStrategy" value="LogicalDeletePollingStrategy"/>
          <property name="PollingInterval" value="5"/>
          <property name="MaxRaiseSize" value="1"/>
          <property name="MaxTransactionSize" value="10"/>
          <property name="SequencingColumn" value="CREATION_DATE"/>
          <property name="NumberOfThreads" value="3"/>
          <property name="ReturnSingleResultSet" value="false"/>
          <property name="MarkReadColumn" value="RECORD_STATUS"/>
          <property name="MarkReservedValue" value="R${weblogic.Name-2}-${IP-2}"/>
          <property name="MarkReadValue" value="PROCESSED"/>
          <property name="MarkUnreadValue" value="NEW"/>
        </activation-spec>
    Thanks,
    Prasanna

    Ok,
    When you say it is random did you mean that sometimes, you adapter process rows not in the right sequence ?
    If yes, you should see this part of the official documentation :
    When polling the database for events, you can order the returned rows by the selected column by using the Order By list. The best practice is to choose <No Ordering>, as message ordering regardless is not guaranteed without extra configuration.
    I suspect that you have to setup your adapter differently in order to keep the right sequence. I have not the time to check if the answer is in the documentation but I guess that having 3 threads is at least one of the reason.
    regards,
    mathieu

  • Design Question (Database Polling)

    Hi,
    I need to write a program that will basically look for any records being added in a Database table e.g. Requests. If there are any records picks them up one by one and calls a Web Service gets a response and inserts in some other table e.g Response, updates the column in Requests table so next time the same record is not picked up again. Before picking up the next record waits for 3 seconds and if there are no records still keep polling the table every 3 seconds. Now the issue is I may have over 8000 records that needs to be processed in a reasonable time and am trying to figure out a better solution so that all my records gets processed in a reasonable time, the Web Service may take 3-5 seconds to send the response back. I will have this program to run as a windows service all the time. Just trying to find out if it's ok to poll on the database to check for new records and in case of errors how do I make sure my program that runs as a service keep running. Or what else can be a better solution.
    I did think of using Advanced Queues as I have an Oracle App. Server. As I haven't used AQ before so am just curious on how to keep track of the messages i.e. if my MDB picksup a message and then it fails due to something how do I again pickup the message does it goes away from the queue once read, is there some kind of retry or something that only remove or mark the message read if my request/response cycle succeeds. As I don't want to delete my request data from the table but just need to mark some field in the table that marks the message as read so it's not picked-up again next time and also if I want to send the same data again I can just go to the table and change the status of the column so that it gets picked-up again for processing. As I haven't used AQ's before so wondering if it does provide this kind of functionality. Any small tutorial will help how to setup AQ's will help a lot.
    In my scenario my batch process run every night i.e. a scheduled job that dumps the records in a Request table and there can be any number of records i.e. 5000+. From there I need to process all the records and send them to a Web Service that responds back and insert the response in a separate table. The same process can be run in a real time on demand i.e. from a UI a user can select the submit button and behind the secenes the same route is taken inserts a record in a request table and gets the response the whole cycle takes arround 5-8 seconds. Once a response comes user go to a diffreent screen and sees the response. My concern is in a batch mode when I have so many records that all needs to be processed within a reasonable time. So wondering what is my best way to do this. If any request fails wants to basically also retry or the user can change the flag in for those records in a request table so they are automatically send again.
    Any help in this is really appreciated. Using Queues I don't know how the retry works or how I send the same record again if a flag is changed in a table. If using a program to poll on a table is there be any issues with the database connections and using threading if I have 8000+ records what are chances of failure etc.
    Just looking for some bright ideas that anyone can share.
    Thanks

    How database could trigger my J2SE application.That all depends on your databases procedure language... Which database are you using? and does this solution need to be portable between databases?
    The only time I've had to "break out" of DPL to run a program it was easy, I just used the languages exec method.
    It all depends on your database.
    Cheers. Keith.

  • Web Service Proxy not returning Response in 11g

    Hi,
    I am facing a difference in the creation of Web Service Proxy in 11g when compared to 10g. I have exposure of creating a Web Service Proxy in 10g and I do observe that the folder name 'runtime' gets generated automatically along with the proxy at the time of creation.
    But in 11g, the nature & behavior of Web Service Proxy creation has changed a lot according to my observation. I am facing an issue where the response object is not returning the expected results as per the functionality.
    In 10g, we have used a Stub class (automatically created under 'runtime' folder) and we are able to put some logs to see the request and response object in the form of 'xml'. But in 11g, I am facing difficulty in getting the same logged to see the response from OPA.
    Please share your thoughts which would definitely help me in resolving this issue.
    With Regards,
    Thiyagarajan V

    Hi,
    I have also tried using 'Web Service Data Control' as an alternate method to overcome the above mentioned issue. But I have ended up the error "DCA-29000: Unexpected exception caught: java.lang.NullPointerException,msg=null" and failed to create a data control.
    The JDeveloper version which I am using is 11.1.1.5.0. I also came to know that there is a patch (9790388) which has resolved this bug in JDeveloper. I also applied the same patch in my Oracle Home using OPatch utility.
    But unfortunatley, the version suitable for this patch is 11.1.1.4.0 and I suspected that could be one of the reason that the problem has not got resolved yet.
    Please suggest the patch or any solution which can also help me in resolving this issue. I really appreciate your time and effort in sharing your thoughts for the problems which I have mentioned over here.
    Thank you !!!
    With Regards,
    Thiyagarajan V

  • Database Polling: Parent-Child Relation

    Hi all,
    We are experiencing problem while picking multiple records from child table while polling from the database.
    Summary:
    Parent table: Temp1 : Columns- Id,Name,Status
    Child Table: Temp2 : Columns- Id,Item
    Now lets say data present in table are
    Temp1 Table :- 1,'abhi','N'
    Temp2 Table :- 1,'pen'
    1,'pencil'
    I have used 1:M Relationship. I have kept a polling on parent table for column status. (Logical Delete)
    Problem:
    Now what is happening is that, from Child Table (Temp2) only first record got picked up 2 times..and record from Temp1 Table was being picked correctly.....
    Can anybody help me how to resolve this issues....its bit urgent.
    Thanks in advance.
    Thanks,
    Abhishek

    Hi sunil,
    Thanks for the reply. Relationship defined was correct.
    I got the solution for this problem. Actually the primary key on child table was not set correctly. For such scenarios we need to have composite key on child table. when I make that, it started working.
    Note that the composite key value has to be unique in the childs table.
    Wow!!!
    Thanks,
    Abhishek...
    Edited by: Abhishek saurabh on Jul 31, 2009 8:14 PM

  • Return value from database function taking a lot more time than the query

    Hi guys,
    I have a Query that does a call to a database function. The function takes in a few parameters and returns a Date. Now, the query within the function takes barely .05 seconds. However, doing a select get_join_dates from dual is taking almost 6 seconds for each call.
    Here is the Query:
    select s.student_id, s.student_name, s.organization_code
    from   student s
    where  s.student_id = :p_student_id
    and    s.student_enrollment_date = get_join_dates( :p_year,
                                                       :p_month,
                                                       :p_student_id,
                                                       s.organization_code );And here is the database function. The select inside this function barely takes 0.05 seconds per call. This function gets called 3 times in my case as there are 3 records in the org_body table for this student.
    create or replace function
    get_join_dates( p_yyyy in org_body.fiscal_yyyy%type,
                           p_month in  org_body.fiscal_mm%type,
                           p_student_id in student.student_id%type,
                           p_organization_code in org_body.organization_code%type) return date as
        t_enrollment_date  date;
        cursor cur_latest_enrollment_date is
          select max(enrollment_date)
          from   org_body
          where  fiscal_yyyy = p_yyyy
          and    fiscal_mm = p_month
          and    student_id = p_student_id
          and    organization_code = p_organization_code;
      BEGIN
        open cur_latest_enrollment_date ;
        fetch cur_latest_enrollment_date into t_enrollment_date;
        close cur_latest_enrollment_date ;
        return t_enrollment_date;
      exception
        when others then
          null;
    end;owever, when I run the following statement below, it takes close to 6 seconds to retrieve a record. In turn, my Query is becoming really slow and taking almost 35 seconds. Imagine that with more records.
    select get_join_dates( 2010, '01', '2167543', 'PSYCH01' ) from dual;If I run my query with this condition below, it takes 0.5 seconds.
    select s.student_id, s.student_name, s.organization_code
    from   student s
    where  s.student_id = :p_student_id
    and      s.student_enrollment_date = '01-JAN-10'Any ideas would be greatly appreciated.

    Any reason why you are doing this with the stored function?
    You could just do this with SQL. Embed the query in the function as a subquery in your initial query from STUDENT.
    select s.student_id, s.student_name, s.organization_code
    from   student s
    where  s.student_id = :p_student_id
    and    s.student_enrollment_date =
    (select max(enrollment_date)
          from   org_body
          where  fiscal_yyyy = :p_year
          and    fiscal_mm = :p_month
          and    student_id = s.student_id
          and    organization_code = s.organization_code);Why your function is not performing: I cannot say that with the information you have provided.
    Maybe sqltrace a call and see what the reason is.

Maybe you are looking for

  • What are the functions of look and feel files?

    Hi, If some one can explain me what are individual role in look and feel of the ISA B2C application. mainFS.jsp main_inner.jsp catalogFS.jsp accountFS.jsp refresherB2C.jsp I want to know function of each files. If I change any file then where exactly

  • Read variables from an XML file

    Hi all, I'm trying to query valuables in an xml document which is structured quite differently from the examples I've seen around here, and I can't get my head around what to do. The XML document I've got looks like this; <universalproperties> <prope

  • Exception handling in OWB

    Hi Everyone, I'm new to OWB and have encountered a road block. I'm trying to get OWB to generate code similar to that of what is below. I've worked with the Error Table, Shadow Table and Data Rules to no avail. The process works great when the target

  • Enable 'CLOSE' po option

    Hi, I need your help. In my project there is a requirement to display both Cancel po and close options in the purchase summary control action but currently only the Cancel po options is coming. I am following the below navigation: Purchaning-->Purcah

  • XMLP in 11i - same data def, 1 to PDF and 1 template to eText

    Must be missing something but it seems I am unable to have 2 templates un XML Admin point to the same Oracle executable (in my case the code is OEXOEACK. What is a good way around this?