BPEL process initiated by a database adapter causing problems in HA environ

We are having a High Availability architecture configuration(active - active) for the BPEL System in our production environment.
The BPEL servers are clustered in the middle tier of the architecture and RAC is used in the database tier of the architecture.
We have a BPEL process which is initiated by a database adapter.
This BPEL process polls a source database, reads the data, writes it into a JMS Topic and marks flag as read back to the table.
A Message Driven Bean(MDB) listens to the JMS Topic, and writes the data in the destination database.
We have the polling process and the MDB deployed to both the nodes of the BPEL server.
We have noticed that some records are getting processed by both the nodes.
This is resulting in duplicate records at the destination tables.
Kindly advise how we can resolve this issue.

The BPEL servers are configured with active - active topology and RAC is used in the database tier of the architecture.
BPEL Servers is not clustered. Load Balancer is used in front of the two nodes of the BPEL servers.

Similar Messages

  • Database adapter causes deadlock

    We use database adapter on 3 standalone tables with no FK. At the beginning of the process, we do a read
    <jca:operation
    ActivationSpec="oracle.tip.adapter.db.DBActivationSpec" ...>
    At the end we do an update with
    <jca:binding />
    <operation name="merge">
    <jca:operation
    InteractionSpec="oracle.tip.adapter.db.DBWriteInteractionSpec"...>
    That is, two db adapters at two ends.
    We have got deadlocks with <lock-mode>1</lock-mode> or <lock-mode>0</lock-mode>.
    We ahve two bpel nodes (10.1.2) in a cluster running on 10g RAC.
    Any suggestion of avoiding deadlocks?

    If you are using SOA Suite 11g you can use query by example option to achieve part of that.
    It support only equality check but on dynamic number of fields
    Adam

  • Error getting while deploying BPEL process using CI in peoplesoft adapter

    When i am deploying BPEL process which connects to peoplesoft through component interface (CI) using peoplesoft adapter. I am getting error when i pass the input parameter which fetches data from peoplesoft component.
    after posting XML message following error occurs.
    <faultstring>java.lang.IllegalStateException: Cannot call setRollbackOnly() current thread is NOT associated with a transaction</faultstring>
    any help will be very thankful

    Thanks for your response
    This is the part of log when i am giving request from JCA servlet to JDE test
    Wed, 23 Jan 2008 10:28:31.0557 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFInteraction.execProcess() exited.
    Wed, 23 Jan 2008 10:28:31.0557 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFConnection.close() called, on connection: com.ibi.afjca.cci.IWAFConnection@188518f for IWAFManagedConnection: com.ibi.afjca.spi.IWAFManagedConnection@e19158
    Wed, 23 Jan 2008 10:28:31.0557 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [info ] [IWAF JCA JDEdwards] IWAFManagedConnection for JDEdwards:JDEFinalMorning dispatch event 1
    Wed, 23 Jan 2008 10:28:31.0557 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFManagedConnection.cleanup() for JDEdwards:JDEFinalMorning entered.
    Wed, 23 Jan 2008 10:28:31.0557 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFManagedConnection for JDEdwards:JDEFinalMorning cleaned.
    Wed, 23 Jan 2008 10:28:31.0573 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFManagedConnection.destroy() for JDEdwards:JDEFinalMorning entered.
    Wed, 23 Jan 2008 10:28:31.0604 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFManagedConnection for JDEdwards:JDEFinalMorning destroyed.
    Wed, 23 Jan 2008 10:28:40.0636 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFManagedConnection created for JDEdwards:JDEdwardsCFIN
    Wed, 23 Jan 2008 10:28:40.0636 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [info ] [IWAF JCA JDEdwards] IWAFManagedConnection for JDEdwards:JDEdwardsCFIN has listener registered: com.evermind.server.connector.ConnectionContext@1f24a78
    Wed, 23 Jan 2008 10:28:40.0636 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFConnection created, com.ibi.afjca.cci.IWAFConnection@1f71eb7, for IWAFManagedConnection: com.ibi.afjca.spi.IWAFManagedConnection@1267d64
    Wed, 23 Jan 2008 10:28:40.0636 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFInteraction created.
    Wed, 23 Jan 2008 10:28:40.0636 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFInteraction.execProcess() entered.
    Wed, 23 Jan 2008 10:28:40.0636 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFInteraction.execProcess() called with string:
    <jdeRequest type="callmethod" user="ASHISHM" pwd="ASHISHM" environment="JDV811" session="">
    <callMethod name="GetEffectiveAddress" app="" runOnError="no">
    <params>
    <param name="mnAddressNumber">1001</param>
    <param name="jdDateBeginningEffective"></param>
    <param name="cEffectiveDateExistence10"></param>
    <param name="szAddressLine1"></param>
    <param name="szAddressLine2"></param>
    <param name="szAddressLine3"></param>
    <param name="szAddressLine4"></param>
    <param name="szZipCodePostal"></param>
    <param name="szCity"></param>
    <param name="szCountyAddress"></param>
    <param name="szState"></param>
    <param name="szCountry"></param>
    <param name="szUserid"></param>
    <param name="szProgramid"></param>
    <param name="jdDateupdated"></param>
    <param name="szWorkstationid"></param>
    <param name="mnTimelastupdated"></param>
    <param name="szNamealpha"></param>
    <param name="mnSynchronizationStatus"></param>
    <param name="mnServerStatus"></param>
    </params>
    <onError abort="no"></onError>
    </callMethod>
    </jdeRequest>
    Wed, 23 Jan 2008 10:28:40.0636 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFInteraction.execProcess() gets the inDoc com.iwaysoftware.idom.XmlDocument@101bde9
    Wed, 23 Jan 2008 10:28:49.0606 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFInteraction.execProcess() added at index 0, return record:
    <jdeResponse user="ASHISHM" type="callmethod" session="3780.1201064308.7" environment="DV811" role="*ALL">
    <callMethod app="" name="GetEffectiveAddress" runOnError="no">
    <returnCode code="2"/>
    <params/>
    </callMethod>
    </jdeResponse>
    Wed, 23 Jan 2008 10:28:49.0606 IST - Thread[AJPRequestHandler-HTTPThreadGroup-54,5,HTTPThreadGroup] [debug] [IWAF JCA JDEdwards] IWAFInteraction.execProcess() return record:
    [<jdeResponse user="ASHISHM" type="callmethod" session="3780.1201064308.7" environment="DV811" role="*ALL">
    <callMethod app="" name="GetEffectiveAddress" runOnError="no">
    <returnCode code="2"/>
    <params/>
    </callMethod>
    </jdeResponse>

  • OVD: Database Adapter Query Problem

    Hey Everyone,
    I am using a database adapter in OVD 10g and am not able to get the proper results from a query. We have created a view in the database and have pointed OVD at the view. We then set up 7 objectclasses using the DB Attribute Mapping Wizard. When doing a query on the base of the DB adapters we are not getting back all of the proper results one would expect. For instance if I query for objectclass=* I only get back 2 of the 7 objectclasses. Another example would be a query for mail=[email protected] will only return the attributes from the mailRecipient objectclass when normally in LDAP the entire record would be returned.
    Does anyone have an idea as to what could be going on? Does anyone have additional resources (beyond the OVD manual) for creating a database adapter?
    Thanks,
    Stephen

    Sorted this out:
    Used custom URL and made sure that the OVD Manager IDE was not appending any additional information following the closing bracket of the URL.
    The full successful URL was as follows with no values in any of the other fields:
    jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1540))(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1540))(CONNECT_DATA=(SERVICE_NAME=SNAME)))

  • Database Adapter Polling problem

    Hi All,
    The polling option is processing all the rows in a table at a time instead of using polling frequency. I have used an option of update a field (logical delete) where I have initialized unread value='N' and read value='Y'. Now ,the problem is i have to poll a single row from the table for every 60 seconds ( second row should be processed only after 60 seconds), but all the rows are processing at a same time. Can somebody let me know what could be the problem?
    The options that I set in db adapter are:
    Polling Frequency: 60 seconds
    Database &rows per XML Document: 1
    Database Rows per transaction: 1
    JDBC options , Query & Timeout: 60
    Thanks,

    Hi Vlad,
    please find the jca file
    <endpoint-activation portType="PollEvent_ptt" operation="receive">
    <activation-spec className="oracle.tip.adapter.db.DBActivationSpec">
    <property name="DescriptorName" value="PollEvent.HolxSrEventData"/>
    <property name="QueryName" value="PollEventSelect"/>
    <property name="MappingsMetaDataURL" value="PollEvent-or-mappings.xml"/>
    <property name="PollingStrategy" value="LogicalDeletePollingStrategy"/>
    <property name="MarkReadColumn" value="PROCESSED_FLAG"/>
    <property name="MarkReadValue" value="Y"/>
    <property name="MarkUnreadValue" value="Yes"/>
    <property name="PollingInterval" value="60"/>
    <property name="MaxRaiseSize" value="1"/>
    <property name="MaxTransactionSize" value="1"/>
    <property name="NumberOfThreads" value="1"/>
    <property name="ReturnSingleResultSet" value="false"/>
    <property name="SequencingColumn" value="INCIDENT_ID"/>
    <property name="DelayCommit" value="true"/>
    </activation-spec>
    </endpoint-activation>

  • Issues with processing messages on one receive port causes problems on all the receive ports that are on the same handler

    Greetings,
    An integrator installed biztalk in our environment to process the hl7 message flow between their source application(s) and several receiving applications. We've had problems with this set-up for a while now because some receiving applications sometimes have
    problems processing the messages. Be it either because there's problems with the server that processes the messages of a certain port or because there's problems with the software/daemon/service that needs to process these messages.
    The main problem with this, is that the receiving end of this isn't under our control nor under control of the integrator, but when one receive port isn't processing their messages for a while it causes a problem with all the receive ports that are on the
    same handler. So other receive ports start noticing a slow-down of their incoming messages until after a while nothing gets through anymore.
    What is the best practice to prevent these kind of problems? Should we just create a handler for every receive port? Because that seems a bit overkill.
    Thanks in advance.

    What do you mean exactly with this question?
    "Can you provide some more detail like BizTalk the receiver? "
    The adapters are mainly file and MLLP, the MLLP adapters are already seperated from the file adapters (a handler for MLLP and a handler for file).
    The problem with all the receive ports is that when one receive port isn't processing its messages (usually caused by the software processing the messages) the other receive ports on the same handler receive their messages/files a lot slower. If for any
    reason the problem isn't fixed soon, the other receive ports on the same handler actually stop receiving any messages at all.
    Isolating the receive port that causes the problems like la Cour suggested can work, but next time it might be another port that experiences this issue. So we are looking for a way to make sure the whole message flow isn't hindered by one port (whichever
    port) that can't process its messages. Or rather by one receiving software that can't process its messages.

  • Database adapter correlation problem

    Hi,
    I have to create process with this scenario:
    Started by db adapter polled table 1 for update.
    Invoke asynchronous webservice
    Waiting for message from db adapter polled table 2 for update.
    How to correlate this.
    I create process started by db adapter and I have problem to correlate it with soap wsdl operation.
    When I replace db adapter operation with soap operation based on adapter xsd correlation works fine.
    Thank you in advance

    I tried to add another adapter which works fine and there was no correlation problem.
    After hours of testing I decide to remove malfunctioned adapter and create it again.
    Fortunately works without problem.

  • Adding ClientCertLoginModule into SOAP adapter causes problem for HTTP

    Hi there,
    We are configuring SOAP adapter to use HTTPS with client authentication
    for a B2B project. We followed note 891877 to add ClientCertLoginModule
    into service sap.com/com.sap.aii.af.soapadapter*XIOAPAdapter in the
    security provider service,
    ClientCertLoginModule, SUFFICIENT
    BasicPasswordLoginModule, SUFFICIENT
    The interface for the B2B project works fine after the change.
    But other interfaces which are using HTTP to connect to SOAP adapter
    are all failing with HTTP code 302. Because all these interfaces are
    using HTTP protocal with username/password for authentication, we
    expect they should still work because the BasicPasswordLoginModule is
    listed in the login module stack.
    Any help is much appreciated..

    Hi there,
    We are configuring SOAP adapter to use HTTPS with client authentication
    for a B2B project. We followed note 891877 to add ClientCertLoginModule
    into service sap.com/com.sap.aii.af.soapadapter*XIOAPAdapter in the
    security provider service,
    ClientCertLoginModule, SUFFICIENT
    BasicPasswordLoginModule, SUFFICIENT
    The interface for the B2B project works fine after the change.
    But other interfaces which are using HTTP to connect to SOAP adapter
    are all failing with HTTP code 302. Because all these interfaces are
    using HTTP protocal with username/password for authentication, we
    expect they should still work because the BasicPasswordLoginModule is
    listed in the login module stack.
    Any help is much appreciated..

  • 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

  • Invoking JDev bpel process from Eclipse BPEL Process?

    Is it possible to invoke a bpel process (with dbadapter) developed in JDev from a bpel process created in Eclipse (Designer)?

    I was unsuccessful.
    Scenario:
    I was trying to invoke jdev bpel process (that had a database adapter to update the database) from Eclipse bpel process (since we do not have adapters in Eclipse designer).
    The namespace wasn't known by Eclipse( some schema missing?) and therefore we couldn't compile it.

  • 11g Database Adapter issue

    Hi there,
    I have a very simple BPEL process which just use Database Adapter to response result from one table, every thing works ok but a column with 'ROWID' datatype get a wrong data.
    Which means when the data in table is 'AAAOOMAAPAAAgGVAAl', the BPEL output is 'QUFBT09NQUFQQUFBZ0dWQUFs', i try to modify the xxx-or-mapping.xml and xxx-properties.xml but still no luck.
    Any ideas?

    Hi AJ,
    Thanks for your reply.
    In fact, i can't remove the ROWID type column. it is very important for business logic, the table is hosted on third party database, i have no right to do any change.
    below is the table struct:
    table PULL_STOCK_TRANSFER
    ISSUE_PLANT NOT NULL VARCHAR2(4)
    RCVNG_PLANT NOT NULL VARCHAR2(4)
    ISSUE_DATE NOT NULL DATE
    PART_CODE NOT NULL VARCHAR2(18)
    QUANTITY NOT NULL NUMBER(13,3)
    FLAG CHAR(1)
    PROCESSED CHAR(1)
    REMARKS VARCHAR2(200)
    TRACKING_ID ROWID
    ISSUE_LOCATION NOT NULL VARCHAR2(2)
    RCVNG_LOCATION NOT NULL VARCHAR2(2)
    And there have no problem on 10g.
    So any ideas?
    -Ray

  • Database Adapter: How to Insert when one column is an identity column

    Hi everyone
    I'm developing a BPEL process who uses a database adapter to insert a row in a table of an SQL Server database. The problem is that the database adapter tries to insert a null value into the field that is the primary key of the table so the process fails. This is because I don't want to specify any value to this field because this field is specified in sql server as an identity column so this field doesn't need to have a value provided.
    I suppose the only solution is to set the database adapter to not insert any value to this field but how can i do that? is there any way to make the database adapter to insert data in only a few fields of a table and not in all fields, trying to insert null in these fields that no data have been provided?
    Thank You Very Much!

    In JDev->Applications Navigator->your project->Application Sources->Toplink->toplink_mappings.
    Upon selecting "toplink_mappings" in the structure window you will see the package. Expand to see your tables. Double click your table and it will open file in main area. Select your field that has identity column. And at the botton you will see "Use Sequencing" check box make sure you uncheck it.
    This will solve your problem.
    Dipal

  • Database Adapter Merge with char/varchar primary key

    Hi guys,
    It seems as though merge statements in BPEL database adapters do not work if the primary key of the table contains a char/varchar. This is in Jdeveloper 10.1.3.4.0
    If I create the table below:
    create table test_merge (
      id        number primary key,
      text      varchar2(255)
    );Then the merge operation will update and insert as expected. However, if I create the same table but with id as a char/varchar, then the merge statement will never update.
    It seems like it never finds a record with the same id (if it is a char/varchar), and always attempts to insert, which results in unique key constraint errors for the primary key column.
    Has anyone else encountered this issue and found a way to get the merge statement to work correctly? I can obviously perform the select myself, and then conditionally update/insert, but I would prefer the merge to work as expected.
    Thanks

    After investigating further, it seems that even a database adapter select is not working correctly. Consider the following table:
    create table test_merge (
      id        varchar2(255) primary key,
      text      varchar2(255)
    );And I have inserted a record with id = "1" and text="abc"
    If I create a BPEL process and add a database adapter (with only the select checkbox ticked) with the following SQL:
    SELECT ID, TEXT FROM TEST_MERGE WHERE (ID = #id)If I invoke this adapter, passing in "1" as the id, then a record is returned, with the correct text (i.e. "abc") BUT the id returned is "-9900000000000000000000000000"
    Can anyone explain why this is happening?

  • OWSM EMPTY BPEL PROCESS VIRTUALIZATION PROBLEM!!!!!!!!!!

    Hi,
    I developed an EMPTY BPEL PROCESS which gets instantiated by a FILE ADAPTER . I am trying to virtualize the process by using OWSM GATEWAYS, but get error when i test it in the test page option unders tools link in OWSM MONITOR.
    I am also not sure about the efficacy of using gateways to virtualize an EMPTY BPEL PROCESS.
    CAN WE USE GATEWAYS TO VIRTUALIZE AN EMPTY BPEL PROCESS INITIATED BY A FILE ADAPTER???????
    Regards,
    Vishnu

    Hi,
    I developed an EMPTY BPEL PROCESS which gets instantiated by a FILE ADAPTER . I am trying to virtualize the process by using OWSM GATEWAYS, but get error when i test it in the test page option unders tools link in OWSM MONITOR.
    I am also not sure about the efficacy of using gateways to virtualize an EMPTY BPEL PROCESS.
    CAN WE USE GATEWAYS TO VIRTUALIZE AN EMPTY BPEL PROCESS INITIATED BY A FILE ADAPTER???????
    Regards,
    Vishnu

  • Is it possible to trigger a bpel process from a database object.

    Hi,
    We want to schedule a bpel process to run daily .So we want to trigger it from a database job.
    Is it possible to call a bpel process from database..?
    Or
    Is there any way to schedule a bpel process from bpel server it self.
    Thank you
    Gayaz

    If you know about DBMS_JOBs then I would say the easiest way to invoke a BPEL process is via the AQ adapter. You just need to populate an AQ and a way you go. The good thing about this is that if SOA SUite is down when the schedule is run you don't need to retry, it will be picked up when it comes online again.
    cheers
    James

Maybe you are looking for