Database adapter and commit

I am trying to use BPEL process manager to read many items from a database table, transform them and then write the transformed records to another table. I have found the database adapter demo very useful. However, I would like to commit the transformed data only when all the data has been succesfully transformed. Can anyone think of a way of doing this? I am new to BPEL and JCA, perhaps the wsdl for the database adapter could be changed to expose a commit method?
Thanks in advance for any advice.
Neil.

Hi Neil,
at the moment it is not possible to have the entire bpel process from db adapter receive to db adapter invoke inside a single jta/global transaction context. We are working on some ideas for next the release.
The best thing for now is to add exception handling to your business process and apply some compensation logic for the individual records which fail. I.e. if using the LogicalDeletePollingStrategy you could set the 'deleted' flag back to 'errored' for rows which are found to be invalid in the transform step and have a separate business process to deal with these.
You could also try a large maxRaiseSize setting. That way if you read 100 rows they will be raised as a single xml document. If the transform fails then no rows will be written to the target database. However the commit will still occur on the source database.
Finally, you could use a non-destructive polling strategy like the SequencingPollingStrategy or LogicalDeletePollingStrategy and a large maxRaiseSize. Your business process could look like this:
receive (non-destructive destroy)
transform
merge all rows - target db
delete all rows -source db
If the 'merge' operation is jta enabled then it will be rolled back if either the transform or the delete fails.
This above idea is like a two stage polling strategy. First the rows are marked as being processed by the receive, but only when they arrive at the target db are they marked a final time as being completed or deleted completely.
Let us know if you need help implementing these ideas. To jta enable the merge see the recent thread 'oc4j-ra and data-sources.xml'.
Thanks
Steve

Similar Messages

  • Diferences in data from database adapter and EJB

    I'm having a strange behaviour in a BPEL that uses a Database Adapter and EJJB for several database operations.
    What happens is that when I create records in the database through the adapter, if I retrieve them through the EJB, the records returned do not contain the newly inserted data. It seems that there is a cache in the EJB side that is not updated when an new record is inserted. If I restart the server the records appear. this does not happen if I insert through the database adapter and retrieve thought it also.
    Does anyone have a clue about this?
    Thanks in advance

    Hi Pedro
    What kind of code do you have in EJB to retrieve the data. Are you using the standard JNDI Lookup for datasource and then get connection object. Then run the query on this connection. If so, do you have like any Static variables declared that stores this information. Or do you use the Eclipse JPA layer that uses annotation on the Entities generated for each table. Incase if you use JPA architecture, there are some cache settings and may be that could be the reason.
    Thanks
    Ravi Jegga

  • Database Adapter and SQL Server procedure issue

    Hello,
    I am using Jdev 11.1.1.7.0 and SQL Server 2005.
    In the Database Adapter configuration wizard, Specify Stored Procedure step, I choose the “GEACupax” schema and got the following error after a click on “Procedure Browse” button:
    com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'GEACUPAX.INFORMATION_SCHEMA.SCHEMATA'.
    The command Database Adapter tried to execute was:
    (from jdev log:) select schema_name from GEACUPAX.INFORMATION_SCHEMA.SCHEMATA order by schema_name;
    Note, the schema name has changed to uppercase. I think that is the problem. If I try this query in SQLDeveloper, it returns the same error. I can fix it changing the schema name to “GEACupax”. The case matters.
    Any ideas?
    Leandro.

    Vijay,
    Thanks for you reply.
    I figure out a related bug:
    Bug 12859472: Cannot browse store procedure in case-sensitive MS SQL Database
    There are two possible workarounds:
    1. Use a database name with capital letters
    2. Do not use stored procedures, but access the tables directly.
    The notes on the Bug ticket describes that the issue would be scheduled to be fixed in PS7 which is 11.1.1.8.
    Cheers!
    Leandro.

  • Database Adapter and Paging

    Hi
    I would like to add paging (first row, number of rows) to the Database Adapter that are calling PL/SQL. I can't see any options for this. Is this is something that I have to do at the PL/SQL level to work with Database Adapter? How would I do this in PL/SQL?
    Regards

    Try something like this...
    SELECT * FROM
         SELECT a.*, rownum r__
         FROM
              SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
              ORDER BY OrderDate DESC, ShippingDate DESC
         ) a
         WHERE rownum < ((pageNumber * pageSize) + 1 )
    WHERE r__ >= (((pageNumber-1) * pageSize) + 1)
    This was extracted from Frans Bouma's blog...
    http://weblogs.asp.net/fbouma/archive/2007/05/21/api-s-and-production-code-shouldn-t-be-designed-by-scientists.aspx
    Cheers,
    Vlad

  • OVD database adapter and WHERE clause

    Hi all,
    We're using OVD 11g, and have a database adapter defined against a table in an Oracle schema. The adapter correctly maps columns to LDAP attributes and creates a virtual directory.
    However the table contains users we don't want to appear in the directory. We have no control over the data in the table hence we cannot remove the unwanted users from the source.
    Is there any way we can specify a WHERE clause in the database adapter which limits the users pulled out of the table and created in the virtual directory? Something like WHERE organisation = 'Company A'.
    Thanks
    Alan

    You can specify LDAP filters in Routing Include/Exclude in Adapter configuration which will eventually translate into where clause for the database adapter.
    For example if you want to exclude users from organization A all you have to do is Add an LDAP filter for that organization in Routing Exclude...
    Same is the case for Routing Include.
    Hope this helps,
    Saggu

  • Database adapter and column aliases in the select statement (10.1.3.1)

    Hi,
    Is it possible to use column aliases in the select statement for a database adapter to return an xml element name which is different to the column in the queried table?
    I have tried using
    SELECT EMPLOYEE_ID, FIRST_NAME AS MYNAME, LAST_NAME, SALARY, DEPARTMENT_ID, PHONE_NUMBER, EMAIL, HIRE_DATE FROM HR.EMPLOYEES WHERE (DEPARTMENT_ID = #DEPT_ID)
    but I get the following XML fragment returned
    <Employees>
    <employeeId>100</employeeId>
    <firstName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
    <lastName>King</lastName>
    <salary>24000</salary>
    Any pointers appreciated.
    Joel.

    That is really interesting.
    When I use the "custom sql" option in the DB adapter wizard, it used the aliases just fine in the return schema.
    Marc

  • Database adapter -  commit transactions

    Hello everybody.
    Is it possible with the BPEL Process Manager (Databas Adapter) to handle some f.e. INSERTS on a database (also with more then one adapter) only with on database connection and commit all INSERTS only at the end of the process?
    So it is important that I use only one db-connection. I don't want to open a db-connection for every db-adapter I want to open (to do an Insert or sth else) .
    Thx a lot

    Hi Neil,
    at the moment it is not possible to have the entire bpel process from db adapter receive to db adapter invoke inside a single jta/global transaction context. We are working on some ideas for next the release.
    The best thing for now is to add exception handling to your business process and apply some compensation logic for the individual records which fail. I.e. if using the LogicalDeletePollingStrategy you could set the 'deleted' flag back to 'errored' for rows which are found to be invalid in the transform step and have a separate business process to deal with these.
    You could also try a large maxRaiseSize setting. That way if you read 100 rows they will be raised as a single xml document. If the transform fails then no rows will be written to the target database. However the commit will still occur on the source database.
    Finally, you could use a non-destructive polling strategy like the SequencingPollingStrategy or LogicalDeletePollingStrategy and a large maxRaiseSize. Your business process could look like this:
    receive (non-destructive destroy)
    transform
    merge all rows - target db
    delete all rows -source db
    If the 'merge' operation is jta enabled then it will be rolled back if either the transform or the delete fails.
    This above idea is like a two stage polling strategy. First the rows are marked as being processed by the receive, but only when they arrive at the target db are they marked a final time as being completed or deleted completely.
    Let us know if you need help implementing these ideas. To jta enable the merge see the recent thread 'oc4j-ra and data-sources.xml'.
    Thanks
    Steve

  • Use of current time for polling Database Adapter query

    I am writing a simple BPEL process with a Polling Database Adapter and a Recieve. The idea is that we are polling an XE database for any entries in a TRIP table which have an expiration date/time field that has passed.
    The Adapter was build using JDeveloper 10.1.3.2 (with Oracle Application Server patched to 10.1.3.3.0) as a "Poll for New Changed Records in a Table" Operation type with a STATUS field (0 for live, 1 for expired) as the Logical Delete Field.
    I was unable to find a way to generate a SELECT query expression with the wizard that would allow me to use current/system time as an attribute, so I finished the wizard and edited the Toplink Descriptor to use a custom SQL expression for the query. This resulted in the following code in the toplink_mappings.xml file:
    <?xml version="1.0" encoding="UTF-8"?>
    <toplink:object-persistence version="Oracle TopLink - 10g Release 3 (10.1.3.1.0) (Build 061004)"
    xmlns:opm="http://xmlns.oracle.com/ias/xsds/opm" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:toplink="http://xmlns.oracle.com/ias/xsds/toplink"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <opm:name>ExpiredTripPoller</opm:name>
    <opm:class-mapping-descriptors>
    <opm:class-mapping-descriptor xsi:type="toplink:relational-class-mapping-descriptor">
    <opm:class>ExpiredTripPoller.Trip</opm:class>
    <opm:alias>Trip</opm:alias>
    <opm:primary-key>
    <opm:field table="TRIP" name="ID" xsi:type="opm:column"/>
    </opm:primary-key>
    <opm:events xsi:type="toplink:event-policy"/>
    <opm:querying xsi:type="toplink:query-policy">
    <opm:queries>
    <opm:query name="ExpiredTripPoller" xsi:type="toplink:read-all-query">
    <toplink:timeout>0</toplink:timeout>
    <toplink:call xsi:type="toplink:sql-call">
    <toplink:sql>SELECT ID, LPN, START_TIME, EXPIRY_TIME, STATUS FROM TRIP WHERE ((STATUS = '0') AND (EXPIRY_TIME < SYSDATE)) ORDER BY EXPIRY_TIME ASC</toplink:sql>
    </toplink:call>
    <toplink:reference-class>ExpiredTripPoller.Trip</toplink:reference-class>
    <toplink:cache-usage>primary-key</toplink:cache-usage>
    <toplink:lock-mode>none</toplink:lock-mode>
    <toplink:container xsi:type="toplink:list-container-policy">
    <toplink:collection-type>java.util.Vector</toplink:collection-type>
    </toplink:container>
    </opm:query>
    <opm:query name="findAllTrip" xsi:type="toplink:read-all-query">
    <toplink:timeout>0</toplink:timeout>
    <toplink:reference-class>ExpiredTripPoller.Trip</toplink:reference-class>
    <toplink:cache-usage>primary-key</toplink:cache-usage>
    <toplink:lock-mode>none</toplink:lock-mode>
    <toplink:container xsi:type="toplink:list-container-policy">
    <toplink:collection-type>java.util.Vector</toplink:collection-type>
    </toplink:container>
    </opm:query>
    </opm:queries>
    <toplink:does-exist-query xsi:type="toplink:does-exist-query">
    <toplink:existence-check>check-database</toplink:existence-check>
    </toplink:does-exist-query>
    <toplink:read-all-query xsi:type="toplink:read-all-query">
    <toplink:reference-class>ExpiredTripPoller.Trip</toplink:reference-class>
    <toplink:container xsi:type="toplink:list-container-policy">
    <toplink:collection-type>java.util.Vector</toplink:collection-type>
    </toplink:container>
    </toplink:read-all-query>
    </opm:querying>
    <opm:attribute-mappings>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>id</opm:attribute-name>
    <opm:field table="TRIP" name="ID" xsi:type="opm:column"/>
    <opm:attribute-classification>java.math.BigDecimal</opm:attribute-classification>
    </opm:attribute-mapping>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>lpn</opm:attribute-name>
    <opm:field table="TRIP" name="LPN" xsi:type="opm:column"/>
    <opm:attribute-classification>java.lang.String</opm:attribute-classification>
    </opm:attribute-mapping>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>startTime</opm:attribute-name>
    <opm:field table="TRIP" name="START_TIME" xsi:type="opm:column"/>
    <opm:attribute-classification>java.sql.Timestamp</opm:attribute-classification>
    </opm:attribute-mapping>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>expiryTime</opm:attribute-name>
    <opm:field table="TRIP" name="EXPIRY_TIME" xsi:type="opm:column"/>
    <opm:attribute-classification>java.sql.Timestamp</opm:attribute-classification>
    </opm:attribute-mapping>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>status</opm:attribute-name>
    <opm:field table="TRIP" name="STATUS" xsi:type="opm:column"/>
    <opm:attribute-classification>java.math.BigDecimal</opm:attribute-classification>
    </opm:attribute-mapping>
    </opm:attribute-mappings>
    <toplink:descriptor-type>independent</toplink:descriptor-type>
    <toplink:caching>
    <toplink:cache-type>weak-reference</toplink:cache-type>
    <toplink:always-refresh>true</toplink:always-refresh>
    </toplink:caching>
    <toplink:remote-caching>
    <toplink:cache-type>weak-reference</toplink:cache-type>
    </toplink:remote-caching>
    <toplink:instantiation/>
    <toplink:copying xsi:type="toplink:instantiation-copy-policy"/>
    <toplink:change-policy xsi:type="toplink:deferred-detection-change-policy"/>
    <toplink:tables>
    <toplink:table name="TRIP"/>
    </toplink:tables>
    </opm:class-mapping-descriptor>
    </opm:class-mapping-descriptors>
    </toplink:object-persistence>
    To test I used the above custom SQL at the command line and it filtered the records by EXPIRY_TIME as expected.
    When deployed, the polling process updates the STATUS file dof table entries, but all entries with status 0 regardless of EXPIRY_DATE. My modification appears to be being ignored. I was unsure as to whether the QUERY was being determined in some other way so I modified the descriptor (with the toplink expression editor) to compare against a literal time value, producing the following modified toplink_mappings.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <toplink:object-persistence version="Oracle TopLink - 10g Release 3 (10.1.3.1.0) (Build 061004)"
    xmlns:opm="http://xmlns.oracle.com/ias/xsds/opm" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:toplink="http://xmlns.oracle.com/ias/xsds/toplink"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <opm:name>ExpiredTripPoller</opm:name>
    <opm:class-mapping-descriptors>
    <opm:class-mapping-descriptor xsi:type="toplink:relational-class-mapping-descriptor">
    <opm:class>ExpiredTripPoller.Trip</opm:class>
    <opm:alias>Trip</opm:alias>
    <opm:primary-key>
    <opm:field table="TRIP" name="ID" xsi:type="opm:column"/>
    </opm:primary-key>
    <opm:events xsi:type="toplink:event-policy"/>
    <opm:querying xsi:type="toplink:query-policy">
    <opm:queries>
    <opm:query name="ExpiredTripPoller" xsi:type="toplink:read-all-query">
    <opm:criteria operator="lessThan" xsi:type="toplink:relation-expression">
    <toplink:left name="expiryTime" xsi:type="toplink:query-key-expression">
    <toplink:base xsi:type="toplink:base-expression"/>
    </toplink:left>
    <toplink:right xsi:type="toplink:constant-expression">
    <toplink:value xsi:type="xsd:date">2007-07-30</toplink:value>
    </toplink:right>
    </opm:criteria>
    <toplink:timeout>0</toplink:timeout>
    <toplink:reference-class>ExpiredTripPoller.Trip</toplink:reference-class>
    <toplink:cache-usage>primary-key</toplink:cache-usage>
    <toplink:lock-mode>none</toplink:lock-mode>
    <toplink:container xsi:type="toplink:list-container-policy">
    <toplink:collection-type>java.util.Vector</toplink:collection-type>
    </toplink:container>
    </opm:query>
    <opm:query name="findAllTrip" xsi:type="toplink:read-all-query">
    <toplink:timeout>0</toplink:timeout>
    <toplink:reference-class>ExpiredTripPoller.Trip</toplink:reference-class>
    <toplink:cache-usage>primary-key</toplink:cache-usage>
    <toplink:lock-mode>none</toplink:lock-mode>
    <toplink:container xsi:type="toplink:list-container-policy">
    <toplink:collection-type>java.util.Vector</toplink:collection-type>
    </toplink:container>
    </opm:query>
    </opm:queries>
    <toplink:does-exist-query xsi:type="toplink:does-exist-query">
    <toplink:existence-check>check-database</toplink:existence-check>
    </toplink:does-exist-query>
    <toplink:read-all-query xsi:type="toplink:read-all-query">
    <toplink:reference-class>ExpiredTripPoller.Trip</toplink:reference-class>
    <toplink:container xsi:type="toplink:list-container-policy">
    <toplink:collection-type>java.util.Vector</toplink:collection-type>
    </toplink:container>
    </toplink:read-all-query>
    </opm:querying>
    <opm:attribute-mappings>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>id</opm:attribute-name>
    <opm:field table="TRIP" name="ID" xsi:type="opm:column"/>
    <opm:attribute-classification>java.math.BigDecimal</opm:attribute-classification>
    </opm:attribute-mapping>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>lpn</opm:attribute-name>
    <opm:field table="TRIP" name="LPN" xsi:type="opm:column"/>
    <opm:attribute-classification>java.lang.String</opm:attribute-classification>
    </opm:attribute-mapping>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>startTime</opm:attribute-name>
    <opm:field table="TRIP" name="START_TIME" xsi:type="opm:column"/>
    <opm:attribute-classification>java.sql.Timestamp</opm:attribute-classification>
    </opm:attribute-mapping>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>expiryTime</opm:attribute-name>
    <opm:field table="TRIP" name="EXPIRY_TIME" xsi:type="opm:column"/>
    <opm:attribute-classification>java.sql.Timestamp</opm:attribute-classification>
    </opm:attribute-mapping>
    <opm:attribute-mapping xsi:type="toplink:direct-mapping">
    <opm:attribute-name>status</opm:attribute-name>
    <opm:field table="TRIP" name="STATUS" xsi:type="opm:column"/>
    <opm:attribute-classification>java.math.BigDecimal</opm:attribute-classification>
    </opm:attribute-mapping>
    </opm:attribute-mappings>
    <toplink:descriptor-type>independent</toplink:descriptor-type>
    <toplink:caching>
    <toplink:cache-type>weak-reference</toplink:cache-type>
    <toplink:always-refresh>true</toplink:always-refresh>
    </toplink:caching>
    <toplink:remote-caching>
    <toplink:cache-type>weak-reference</toplink:cache-type>
    </toplink:remote-caching>
    <toplink:instantiation/>
    <toplink:copying xsi:type="toplink:instantiation-copy-policy"/>
    <toplink:change-policy xsi:type="toplink:deferred-detection-change-policy"/>
    <toplink:tables>
    <toplink:table name="TRIP"/>
    </toplink:tables>
    </opm:class-mapping-descriptor>
    </opm:class-mapping-descriptors>
    </toplink:object-persistence>
    On deployment, this version of the BPEL process behaved as expected - only modifying the records with EXPIRY_TIME less thatn the literal time specified. (Also, I can't really pass in the time as a parameter as this is a polling model).
    Can anyone shed any light on what is happening or suggest how I might go about polling in the desired way?
    Cheers

    Please take a look at this article which states SYSDATE is not supported in a
    where clause.
    http://www.oracle.com/technology/pub/articles/bpel_cookbook/qualcomm-bpel.html
    Excerpt from the article:
    Here are three important things you should do in implementing the above design:
    Have the status of the record being processed stored in the database. The status includes the process state, next process attempt time, and processing attempt count.
    Create an updatable view that exposes only records that are ready to be processed. A view is needed because the database adapter cannot handle a where clause that compares against SYSDATE.
    Design logic that determines if a process instance that has faulted should be retried and when the retry should occur. This information will be updated in the database by use of a stored procedure. This can also be done with an update partner link and additional logic in BPEL.
    mahalo,
    a iii

  • Error retrieving record through database adapter.  (ORABPEL-11614)

    Am trying to pass a customer name into a database adapter to retrieve customer info. It is working, but it is also faulting.
    When I invoke the process with the name "3M COMPANY", I get the following audit message
    [2008/06/05 17:36:01] Faulted while invoking operation "GetCustomerDataSelect_paramName" on provider "GetCustomerData".less
    -<messages>
    -<input>
    -<customerName>
    -<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="GetCustomerDataSelect_paramName_inparameters">
    -<GetCustomerDataSelect_paramNameInputParameters xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/top/GetCustomerData">
    <paramName>3M COMPANY
    </paramName>...
    WSIF JCA Execute of operation 'GetCustomerDataSelect_paramName' failed due to: DBReadInteractionSpec Execute Failed Exception.
    Query name: [GetCustomerDataSelect], Descriptor name: [GetCustomerData.Cstcgvmp].
    ; nested exception is:
         ORABPEL-11614
    DBReadInteractionSpec Execute Failed Exception.
    Query name: [GetCustomerDataSelect], Descriptor name: [GetCustomerData.Cstcgvmp].
    See root exception for the specific exception. Caused by Exception [TOPLINK-6044] (Oracle TopLink - 10g Release 3 (10.1.3.1.0) (Build 061004)): oracle.toplink.exceptions.QueryException
    Exception Description: The primary key read from the row [DatabaseRecord(
         => 101
         => A
         => 3M COMPANY
         => 3M CENTER
         => SAINT PAUL
         => MN
         => 551441000
         => 22)] during the execution of the query was detected to be null. Primary keys must not contain null.
    Query: ReadAllQuery(bpel___localhost_default_Onboarding_1_0__MD5_8f8d9220a0bc6957be6fb657cf4ffabd_.GetCustomerData.Cstcgvmp).
    </summary ...
    The retrieved data is correct. The Database Adapter is pointing to an AS/400 table which does not have primary keys defined. In the offline database, I've defined CGVMSTCST to be the primary key.
    The toplink_mappings.xml reflects that:
    <opm:alias>Cstcgvmp</opm:alias>
    <opm:primary-key>
    <opm:field table="CSTCGVMP" name="CGVMSTCST" xsi:type="opm:column"/>
    </opm:primary-key>
    The value of this field for 3M is 101 (which was correctly picked up).
    Why am I getting a primary key is null error?

    I did, but I'm not sure how.
    I deleted the Database Adapter and the associated offline file and reran the wizard (having a better idea of how to implement a parameter search) and it worked.
    I was not able to identify what was created differently the second time.

  • List of values from Database Adapter - BPM Forms

    Hi all,
    Can anyone tell me how to get list of values from Database adapter and a ServiceTask.
    As example lets say a table has Employee and Department columns.
    I want to list down all the Employees in BPM form (Select One List Box) once i provide the department to the Database Adapter.
    Is it possible from the DB Adapter?? What will be the variable type?
    Thanks,
    Nir

    Hi DanielAtwood,
    Thanks for your reply...
    Actually when i send the variable in 'WHERE Clause' in Db Adapter query it will retrieve more than one record as the output.
    I want to put that values to a 'SelectOneChoice' component and list down all the values..
    First I tried with data control. But i couldn't find the way to pass the value to the variable(in WHERE clause) to the query in data control view.
    Thanks,
    Nir

  • MaxRaiseSize in database adapter

    Experts,
    I want to read single record on each polling frequency using database adapter as we do using FTP to read single file on each polling frequency by setting the property
    MaxRaiseSize to 1. But i could make it to work in database adapter . It is creating separate instance for each record but all on at the same time. but i want single instance on single record on each polling frequency . How can i do this. Please advise.
    Thanks a lot for your help.

    Hi:
    Try setting the following two parameters in the DB Adapter Wizard:
    Database Rows per XML Document
    Specify the number of rows per XML document when sending events to Oracle BPEL Process Manager or Oracle Mediator. This is the batch setting between the database adapter and its consumer: Oracle BPEL Process Manager or Oracle Mediator. For maximum throughput, it is ideal to pass a collection of rows as a single event. This reduces the per instance overhead and allows batching on the other end; that is, the database adapter merge or insert command can leverage batch database writing if it receives multiple rows as part of one invoke. Leave this set to 1 if your process performs unique processing on each row (if conceptually one row translates to one event).
    Database Rows per Transaction
    Select Unlimited or enter a value to indicate the number of table rows to process during a single transaction. For example, assume there are 10,000 rows at the start of a polling interval and this field is set to 100. In standalone mode, a cursor iteratively reads and processes 100 rows at a time until all 10,000 rows are processed, dividing the work into 10,000/100=100 sequential transactional units. This is the batch setting between the database and the database adapter. It cannot be set lower than database rows per XML document, which is the batch setting between the database adapter and its consumer: Oracle BPEL Process Manager or Oracle Mediator Component
    Hope this helps.
    best

  • BPM: Error when trying to deploy an process containing a database adapter

    Hello,
    We are facing an issue when we try to deploy a BPM/SOA application containing a BPM process containing a database adapter.
    So, I only created a new BPM process (async process) and added a database adapter to insert something in a database, then called this database adapter in a service activity.
    In the weblogic console, the DbAdapter targets are correct. I created the data source with a JNDI name, with the correct targets also.
    In BPM I suppose I do not have to manually change any setting file ?
    I simply create the database adapter and specify the correct JNDI name ?
    when I try to deploy, I always receive the following error :
    [11:08:56 AM] Received HTTP response from the server, response code=500
    [11:08:56 AM] Error deploying archive sca_DbTstInsert_rev1.0.jar to partition "default" on server soa_server1 [http://afpo-devapp02:8001]
    [11:08:56 AM] HTTP error code returned [500]
    [11:08:56 AM] Error message from server:
    There was an error deploying the composite on soa_server1: [JCABinding] [DbTstInsert.DA_LangEnumInsert/1.0]Unable to complete unload due to: Cannot locate Java class oracle.tip.adapter.db.DBWriteInteractionSpec: Cannot locate Java class oracle.tip.adapter.db.DBWriteInteractionSpec.
    [11:08:56 AM] Check server log for more details.
    [11:08:56 AM] Error deploying archive sca_DbTstInsert_rev1.0.jar to partition "default" on server soa_server1 [http://afpo-devapp02:8001]
    [11:08:56 AM] #### Deployment incomplete. ####
    [11:08:56 AM] Error deploying archive file:/C:/Code/JDeveloper/DbTstInsert/DbTstInsert/deploy/sca_DbTstInsert_rev1.0.jar
    (oracle.tip.tools.ide.fabric.deploy.common.SOARemoteDeployer)
    Has someone already faced this problem ?
    I searched on Google, but couldn't find anything about this.
    Thanks,
    Benjamin

    Post it to the BPM Forum
    Business Process Management SuiteOn a sidenote , this might help http://yuanmengblog.blogspot.in/2011/04/osb-complains-jca-class-cannot-be-found.html (target your soa_server to your DB adapter)
    OR
    Error while publishing the JCA Adapter.
    Edited by: Sudipto Desmukh on May 9, 2012 7:22 PM

  • Insert Multiple records using Database adapter with Stored procedure func

    Hi All,
    I want to insert multiple records on a database using a stored procedure. I wanted to insert those records using a Database Adapter and the Database adapter should be invoked by a Mediator.
    Can somebody suggest me with ideas whether it can be acheived with OOB capabtilities in SOA suite or not?
    Thanks for your help in advance.
    Thanks,
    Shiv

    The use case you want to achieve is feature supported by the DBAdapter and it is possible to invoke the same from mediator.
    Please have a look at the oracle documentation and you should be able to get the necessary information.
    The below links should help you as well:
    http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10231/adptr_db.htm
    http://blogs.oracle.com/ajaysharma/2011/03/using_file_adapter_database_adapter_and_mediator_component_in_soa_11g.html
    There are some video tutorials as well :)
    http://www.youtube.com/watch?v=dFldS-fDx70 This should also help
    Thanks,
    Patrick

  • Database Adapter: Selecting all data from table

    Hi All
    I am new to SOA Suite and I am using Soa Suite version 10.1.3.1 and Jdev version 10.1.3.3. It is required to select data from one database using the database adapter and insert it in a table in another database. I implemented the flow using DBadapters select operation the problem is everytime I am running the instance it transfers only one row though no condition has been specified on the select. Could anyone please help me out and let me know how to transfer a complete table from one database to another using DBadapters and in a single instance.
    Thanks

    Well Stupid me, got the answer, I think m just at the begining of the learning curve.

  • Database adapter not importing table having data type as WF_EVENT_T

    Hi All,
    I have a requirement to import a table in the Database adapter. That table is having a column of data type “WF_EVENT_T”.
    When I tried to import the table in database adapter I got the error as "The following tables are not supported in the Database Adapter and were not imported".
    Then I modified the table by adding one more column with some other data type and tried to import that table.
    It got imported successfully but I was not able to see the column with data type WF_EVENT_T in the table.
    Any pointers to this would be of great help.
    Thanks.

    Hi Harish
    Thanks for your response.
    I can create the table with the data type 'String'. However, the problem is when I try to update the table from a program in SE38 or a Function Module in SE37.
    When I try to activate the PROGRAM or FUCNTION, I GET A MESSAGE THAT I MENTIONED EARLIER.
    Here is the simple program that I have created that I am not able to activate
    ==========================================
    REPORT  ZTEST_STRING1.
    tables: ztest.
    ztest-zid = 2.
    ztest-zstring1 = 'ABC'.
    insert ztest.
    ===========================================
    ztest has two fields
    zid which is NUMC type
    and zstring1 which is STRING type.
    When I try to activate I get an error message as follows:
    'ztest' must be a flat structure. You cannot use internal tables,
    strings, references, or structures as components.
    Edited by: Ram Prasad on Mar 20, 2008 6:08 PM

Maybe you are looking for

  • Display problem after apple repair

    Hello everyone, Few weeks ago had this problem with vertical lines on my iMac display, which apple told me it was a display problem and they needed to changed it. So far so good... despite the 300pounds i had to pay for a new screen but anyway.......

  • Talent Search-Trex- ESH_Cockpit-Error while preparing

    Hello, I am trying to configure TREX for talent search. But while trying to create the search object connector using ESH_Cockpit, I am getting the message 'Error while preparing' for all the connectors exept the connector HTRMC Person. These Connecto

  • Transferring files from old computer freezes on Mac Pro

    Hi everyone- I'm new around here and I'm having a problem. I just bought the Mac Pro and right now I am trying to transfer my files from my older computer to this new one. My old computer is a Powerbook G4 Laptop, and I want some files to be on the M

  • About Oracle Heterogeneous Services and Oracle Gateway

    Hi All, I am very new at this topic, I want to know: 1)Oracle Heterogeneous Services and Oracle Gateway same or not?Need license or not? 2)If want Creating Database Link from Oracle 11g to Sybase AS 15.5 Using Oracle Heterogeneous Services what drive

  • Announcement (January 16) - Folio Producer tools update

    Digital Publishing Suite will be releasing new features and functionality Monday January 16 at 5:00 PM Pacific Coast time and Tuesday January 17 at noon. While the acrobat.com server is being updated, you may not be able to use the Folio Producer too