Database LookUp or a database adapter

Hi,
We are currently using 8 datbase lookups to retrieve values from a database.
Could somebody let me know if a database adapter would be a better option.
Also could somebody tell me how many lookups would equal a dtabase adpater call in terms of performance.
Thanks,
Valli.

Vinay,
I don't have a single ODBC connection.  I have several for the several servers, with a separate ODBC connection for each.  When I try to change the datasource location, I have to select one of the defined ODBC connections, which defeats my purpose.  I can change it from one specific ODBC defined database to another, but I need to change it to no database so that it will recognize the database it is placed on when I deploy it.
I saw where you can edit the properties of the database in the top half of the change datasource location window and change it to "same as report", but when I try to save, because I'm not developing on a server, it can't find a database and thefore won't save. It seems like I need to bybass the check it does to confirm the new datasource is a valid database.

Similar Messages

  • Database Adapter: exposing multiple operations using one PartnerLink

    Hi,
    I use the Database Adapter for accessing stored procedures in a package.
    Using the wizard, I am able to specify a PartnerLink for one procedure in my package. However, the same package (my 'business service') contains multiple procedures I want to expose and call, preferably via the same PartnerLink.
    Is this possible?
    If so, what is the best strategy, e.g. use the wizard multiple times and merge the resulting wsdl files?
    Thanks, Sjoerd

    How do you do that?
    I specifically want to Poll a table, with the wizard it doesn't give you any options to edit the query, I suppose you go into the generated files and edit the query that way?
    As it happens I have actually worked around my specific issue using XSLT functions, I was actaully trying to convert DB2 JD Edwards dates using this table lookup) but once I understood how the date format is stored it was simple enough to do in XSLT.
    However I'm still interested to know how this is done as I may have another requirement that requires SQL joining to the same table twice.
    Regards
    Stuart

  • Database Adapter Poll doubt

    My requirement is, when ever a new recored inserted to CREDITCARDINFOPARENT table need to insert the same record to CREDITCARDINFORESULT;
    desc CREDITCARDINFOPARENT;
    Name Null? Type
    SNO NUMBER
    SSN NOT NULL VARCHAR2(15)
    FIRST_NAME VARCHAR2(30)
    LAST_NAME VARCHAR2(30)
    CCNUMBER NOT NULL VARCHAR2(20)
    CREDITRATING NUMBER
    STATUS NOT NULL VARCHAR2(20)
    CCNumber is my primary key
    desc CREDITCARDINFORESULT;
    Name Null? Type
    NO NUMBER
    SN NOT NULL VARCHAR2(15)
    FIRSTNAME VARCHAR2(30)
    LASTNAME VARCHAR2(30)
    CCNUMBER VARCHAR2(20)
    CRATING NUMBER
    CCSTATUS NOT NULL VARCHAR2(20)
    CCNUMBER is Foreign Key.
    I tried Poll DB adapter example in the following way
    Created a project with "Composite with Mediator"
    under exposed services I dragged DB Adapter
    Service Name-> Example Service
    Step 4 of 13 -> selected Poll or Changed Records in a table
    step 5 of 13 -> imported 2 tables (CREDITCARDINFOPARENT, CREDITCARDINFORESULT)
    step 6 of 13 -> displayed the Relationships
    step 8 of 13 -> After Read -> selected Update a Sequencing Table
    step 9 of 13 -> Sequencing Table: CREDITCARDINFORESULT
         Sequence Name Field: CCNUMBER
         Sequence Value Field: STATUS
         Sequence ID Field: CCNUMBER
    step 10 of 13 -> Polling Options: SQL
              Pre Polling SQL:
    SELECT STATUS FROM CREDITCARDINFORESULT WHERE (CCNUMBER = 'CREDITCARDINFOPARENT')
    Polling SQL:
    SELECT SNO, SSN, FIRST_NAME, LAST_NAME, CCNUMBER, CREDITRATING, STATUS FROM CREDITCARDINFOPARENT WHERE ((STATUS = 'VALID') AND (CCNUMBER > #STATUS)) ORDER BY CCNUMBER ASC
    After Read SQL:
    UPDATE CREDITCARDINFORESULT SET STATUS = #STATUS WHERE (CCNUMBER = 'CREDITCARDINFOPARENT')
    step 11 of 13 ->Define Selection Criteria:
              Parameters:ccno
              SQL: SELECT SNO, SSN, FIRST_NAME, LAST_NAME, CCNUMBER, CREDITRATING, STATUS FROM CREDITCARDINFOPARENT WHERE ((STATUS = 'VALID') AND (CCNUMBER > #STATUS)) ORDER BY CCNUMBER ASC
    Under External Services : I dragged DB Adapter and i selected Perform an Operation on a table as Insert Only. and I imported CREDITCARDINFORESULT
    I deployed the the Project. Project depolyed successfully;
    under EnterpriseManager command prompt I got
    <Jun 29, 2010 2:25:46 PM IST> <Warning> <oracle.soa.adapter> <BEA-000000> <JCABinding=> ExampleProject JNDI lookup of 'eis/DB/soademodatabase' f
    ailed due to: Unable to resolve 'eis.DB.soademodatabase'. Resolved 'eis.DB'>
    <Jun 29, 2010 2:25:46 PM IST> <Error> <oracle.soa.adapter> <BEA-000000> <JCABinding=> ExampleProject Error while performing endpoint Activation:
    BINDING.JCA-12561
    JCA Resource Adapter location error (WebLogic).
    Unable to locate the JCA Resource Adapter via .jca binding file element <connection-factory/>
    The JCA Binding Component is unable to startup the Resource Adapter specified in the <connection-factory/> element: location='eis/DB/soademodata
    base'.
    The reason for this is most likely that either
    1) the Resource Adapters RAR file has not been deployed successfully to the WebLogic J2EE Application server or
    2) the JNDI <jndi-name> setting in the WebLogic JCA deployment descriptor has not been set to eis/DB/soademodatabase. In the last case you might
    have to add a new 'connector-factory' entry (connection) to the deployment descriptor.
    Please correct this and then restart the WebLogic Application Server
    >
    I confugired the Connection factory properly; I checked at DB Adapter -> Configuration -> Outbound Connection Pools -> xADataSourceName -     jdbc/soadeoDatabase
    when I checked at JNDI tree I dont have any value under it.
    in Firefox EM, when I clicked on Example Project Test button is disabled. and I inserted one record to CREDITCARDINFOPARENT; but CREDITCARDINFORESULT table is not updated.
    can any body help me in this?
    Please let me know whether I follwed correct procedure or not?
    If I am wrong, please provide me the correct steps.
    Thanks in Advance.

    This error is usually raised if there is no outbound pool connections with the "eis/db/soademodata" name in the database adapter.
    First create a data source to the database in the JDBC Resources.
    Next in Weblogic server console --> Deployments --> DBAdapter --> Configurations --> Outbound Pool Connections --> create a new outbound pool connection with the name "eis/db/soademodata".
    Now update the "xADataSourceName" property of this connection pool with the JNDI name of the datasource created in the first step.
    Regards,
    KSN Pavan
    Edited by: KSN Pavan on Jun 30, 2010 2:51 AM

  • 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

  • BPEL 10.1.2.0.2 with JBOSS deployment descriptor of database adapter

    We use Oracle BPEL Process Manager 10.1.2.0.2 with JBOSS v3.2.6 . In our BPEL processes we use also the DatabaseAdapter.
    We deploy our processe manually with obant, because we are only able to access our productiv-system about putty(ssh).
    For that we have to manually adapt our DatabaseConnectionData,which were created on our development enviroment, in the apropriate wsdl files.
    On our productiv-system we see in the domain-log files following lines:
    <2006-11-08 04:52:44,465> <INFO> <condis.collaxa.cube.ws> <AdapterFramework::Outbound>
    file:/opt/etmn/jboss_bpel/domains/condis/tmp/.bpel_WF_Notifikation_1.0.jar/SetFaultedWS.wsdl [ SetFaultedWS_ptt::SetFaultedWS(InputParameters) ] - Using JCA Connection Pool -
    max size = <unbounded>
    <2006-11-08 04:52:44,468> <WARN> <condis.collaxa.cube.ws> <AdapterFramework::Outbound>
    file:/opt/etmn/jboss_bpel/domains/condis/tmp/.bpel_WF_Notifikation_1.0.jar/SetFaultedWS.wsdl [ SetFaultedWS_ptt::SetFaultedWS(InputParameters) ] - JNDI lookup of
    'java:/eis/DB/DBL_WFMODUL' failed due to: DBL_WFMODUL not bound
    <2006-11-08 04:52:44,469> <INFO> <condis.collaxa.cube.ws> <AdapterFramework::Outbound> Since unable to locate the JCA Resource Adapter deployed at 'java:/eis/DB/DBL_WFMODUL',
    will then attempt to instantiate ManagedConnectionFactory oracle.tip.adapter.db.DBManagedConnectionFactory directly.
    After some reading in the "Adapters UserGuide" you can find some lines about necessary configuration of the "deployment descriptor of the database adapter"
    concerning the "<jca:address location=..." used in the apropriate wsdl files:
    The adapter service WSDL refers to the run-time connection configured in the
    deployment descriptor of the database adapter. (In Oracle Application Server, it is
    oc4j-ra.xml). The relevant code example for the service WSDL follows:
    <jca:address location="eis/DB/DBL_WFMODUL" UIConnectionName="DBL_WFMODUL"
    ManagedConnectionFactory="oracle.tip.adapter.db.DBManagedConnectionFactory"
    The questions are now:
    What is the apropriate file for the "deployment descriptor of the database adapter" for Oracle BPEL Process Manager 10.1.2.0.2 with JBOSS 3.2.6 ??
    Exist there a description for that?
    What are really the consequences if you configure the "deployment descriptor of the database adapter" or not ?

    Hi Martin,
    Thanks for sharing valuable information of bpel install .
    We are stuck installing bpel pm 10.1.2.0.2 on linux from past one week ,can u plz help us in giving some pointers.
    We downloaded mrca utility from otn and tried to upload the repository into 10g database but we got "ultra search schema not found" error and few other errors.
    Can we use any 10g database or is there any version that we need to use.Can you plz specify the database version that u used for ur install.
    Then we tried to create a repository while installing Oracle Application Server 10.1.2.0.2(J2EE and Web Cache with new OID), which creates a new dbase with a repository loaded into it.
    we tried to run the ldap search command to get the encrypted password but failed to execute that command successfully.finally we tried to change orabpel pwd with alter command. And when we finally started with BPEL PM install and pointed to the above AS home it didnt recognize it and giving error as "plz point to the appropriate Application Server(AS) home and it cant find the AS home in folder in which we specified."
    Can u plz help us and give some pointers in resolving our issues.
    Thanks a lot in advance.
    Vandana.

  • Logical delete in database adapter

    Hello
    I was wondering if someone has solution the problem with polling database. You can specify the logical delete column and you can give values for READ, UNREAD and RESERVED states. The problem is that when for example ESB project polls some specific table and starts an instance for every new row with specified logical delete field with value UNREAD, when something unexpected happens and something goes wrong the database adapter updates the row with READ value. This is problematic if we have thousands of rows, and we would like to separate the errored rows from the successfully read rows. Is there anyway (easy) way to update those rows that went wrong to some other value than READ?
    I don't know if anyone understood me, but just for clarification here's a example:
    I have a ESB-project which poll specific database table and parses and XML from the data. After this the ESB-project sends the data to some Web Service. The database table has column CONDITION_CODE in which value 0 means unread and value 1 means read. Now if everything goes fine there is no problems. But if the Web Service is unavailable or the data is malformed, the database adapter still updates the CONDITION_CODE to 1! We have no ways (except to listen ESB_ERROR topic and implement some error handling there) to know what rows were successfully delivered and which were not...
    Hope I was able to clarify the problem... And I hope someone could be able to provide me with answer.
    Best Regards Tuomas

    Did you use the RESERVED value property? How about the transaction mechanism? Do you have global transactions? I gues you would have to use them!

  • Null/Empty Strings use in ESB Database Adapter

    Hi
    I'm trying to use a database adapter to execute an update on a table with a composite primary key; one of the primary key columns sometimes contains an empty string, however whenever I try to call the adapter, it always converts this to a null value. Is there an easy way to force the adapter to use an empty string instead of a null?
    Thanks.

    the idea here is to execute the dbms statement, or the setpolicycontext statement in a db session, and being able to execute the next sql statement in the same db session.
    This is possible with consecutive database adapters sharing the same db session.
    and two db adapters sharing the same db session is possible, if you make sure that the bpel is participating in the db transaction which can be made possible via xa db connections.
    Hope this helps,
    Write back in case you need more info.

  • 11g Database Adapter: How to make queries using LIKE with % (possible bug?)

    Hi there!
    Sorry if this has been answered before, but the forum search ignores '%' so I could not find anything relevant. I'm completely at a loss here guys so any help will be really appreciated.
    I've got a database adapter that executes a "pure SQL" query:
    select * from supplier t
    WHERE t.idsupplier = #idSupplierParam OR #idSupplierParam2 IS NULL
    AND t.name like '%' || #nameParam || '%' OR #nameParam2 IS NULL
    AND t.address like '%' || #addressParam || '%' OR #addressParam2 IS NULL
    AND t.description like '%' || #descParam || '%' OR #descParam2 IS NULL
    I've got a single record in my DB with name= 'supplier1'
    When I execute my bpel passing 'sup' as nameParam and nameParam2, everything is right and I get my supplier1 in the results.
    BUT if I pass 'asdfghj' as name, I still get my 'supplier1' in the results ¿¿¿???
    ¿Is this a bug? ¿Am I doing something wrong? Thanks in advance!!

    No, but thanks for trying. Iif you had read my post you'd had found that I wrote
    +When I execute my bpel passing 'sup' as nameParam and nameParam2+
    But I double checked against that just in case. I made a test query
    select * from supplier t WHERE t.name like '%' || #nameParam || '%'
    And no matter what I pass as nameParam, I always GET ALL THE RECORDS in my table. ¿Any idea what's going on? It's like param is being ignored and the query that is executed is select * from supplier t WHERE t.name like '%%' which would of course return everything in the DB. :(
    Help plz!!

  • 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

  • How to delete the content of a datatable by the "Database Adapter"

    Hello,
    i want to delete all entries in a table by a database adapter - like "DELETE FROM table" in SQL. (Oracle SOA Suite 11g SR1, with Oracle DB over JDBC))
    When i create a new Database adapter i can select standard functions for "insert, select, delete". The function delete does have the disadvantage, that it needs a input message with the key values of the data entry which have to be deleted, which i don't have and don't want to get.
    So i tried the "Pure SQL" mode for the adapter with the SQL string "DELETE FROM table" but this instruction is somehow not commited to the database.
    My questions are:
    - Is there any commit needed for the pure sql instructions? How is the syntax to write several SQL instructions for one Database Adapter?
    - Does anyone have another solution to delete the entries?
    Thanx in advance
    Tobias

    Hi Shishir,
    it is a pretty simple example. I think the problem is that the Database Adapter is not commiting.
    The BPEL is simple sending an empty message to the adapter which should trigger the SQL execution (See Code below)
    The PURE SQL String i'm using is "DELETE FROM table"
    Thanks Tobias
    <?xml version = "1.0" encoding = "UTF-8" ?>
    <!--
    Oracle JDeveloper BPEL Designer
    Created: Wed May 05 09:13:00 CEST 2010
    Author: oracle
    Purpose: Asynchronous BPEL Process
    -->
    <process name="BPELProcess1"
    targetNamespace="http://xmlns.oracle.com/App_DWH_Prototype/TestDELETE/BPELProcess1"
    xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:client="http://xmlns.oracle.com/App_DWH_Prototype/TestDELETE/BPELProcess1"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:oraext="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
    xmlns:xpath20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
    xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
    xmlns:ui="http://xmlns.oracle.com/soa/designer/"
    xmlns:task="http://xmlns.oracle.com/bpel/workflow/task"
    xmlns:taskservice="http://xmlns.oracle.com/bpel/workflow/taskService"
    xmlns:wfcommon="http://xmlns.oracle.com/bpel/workflow/common"
    xmlns:wf="http://schemas.oracle.com/bpel/extension/workflow"
    xmlns:xdk="http://schemas.oracle.com/bpel/extension/xpath/function/xdk"
    xmlns:dvm="http://www.oracle.com/XSL/Transform/java/oracle.tip.dvm.LookupValue"
    xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
    xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/App_DWH_Prototype/TestDELETE/TestDelete%2F"
    xmlns:ns2="http://xmlns.oracle.com/pcbpel/adapter/db/top/TestDelete">
    <!--
    PARTNERLINKS
    List of services participating in this BPEL process
    -->
    <partnerLinks>
    <!--
    The 'client' role represents the requester of this service. It is
    used for callback. The location and correlation information associated
    with the client role are automatically set using WS-Addressing.
    -->
    <partnerLink name="bpelprocess1_client" partnerLinkType="client:BPELProcess1" myRole="BPELProcess1Provider" partnerRole="BPELProcess1Requester"/>
    <partnerLink name="TestDelete" partnerRole="TestDelete_role"
    partnerLinkType="ns1:TestDelete_plt"/>
    </partnerLinks>
    <!--
    VARIABLES
    List of messages and XML documents used within this BPEL process
    -->
    <variables>
    <!-- Reference to the message passed as input during initiation -->
    <variable name="inputVariable" messageType="client:BPELProcess1RequestMessage"/>
    <!-- Reference to the message that will be sent back to the requester during callback -->
    <variable name="outputVariable" messageType="client:BPELProcess1ResponseMessage"/>
    <variable name="Invoke_1_delete_InputVariable"
    messageType="ns1:TActIngredientCollection_msg"/>
    </variables>
    <!--
    ORCHESTRATION LOGIC
    Set of activities coordinating the flow of messages across the
    services integrated within this business process
    -->
    <sequence name="main">
    <!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcess1.wsdl) -->
    <receive name="receiveInput" partnerLink="bpelprocess1_client" portType="client:BPELProcess1" operation="process" variable="inputVariable" createInstance="yes"/>
    <!--
    Asynchronous callback to the requester. (Note: the callback location and correlation id is transparently handled using WS-addressing.)
    -->
    <assign name="Assign_1">
    <copy>
    <from expression="''"/>
    <to variable="Invoke_1_delete_InputVariable"
    part="TActIngredientCollection"
    query="/ns2:TActIngredientCollection/ns2:TActIngredient/ns2:plotNo"/>
    </copy>
    <copy>
    <from variable="inputVariable" part="payload"
    query="/client:process/client:input"/>
    <to variable="outputVariable" part="payload"
    query="/client:processResponse/client:result"/>
    </copy>
    </assign>
    <invoke name="Invoke_1" inputVariable="Invoke_1_delete_InputVariable"
    partnerLink="TestDelete" portType="ns1:TestDelete_ptt"
    operation="delete"/>
    <invoke name="callbackClient" partnerLink="bpelprocess1_client" portType="client:BPELProcess1Callback" operation="processResponse" inputVariable="outputVariable"/>
    </sequence>
    </process>

  • How to use Database adapter as inbound adapter without having polling strategies?

    Hi All,
    I have a requirement wherein I have to use Database adapter to retrieve the data for every half an hour from one(X app) database and update that data into another application(Y app) .That database adapter will be along with BPEL process.My Flow would be like this:
    Database Adapter( In 'exposed services' section) ----->   BPEL (in 'Components') -----> Y app service( in 'External References' section)
    My questions for each step are below
         1) I have to retrieve the data from database(x app database) for every half an hour.So I have to schedule my whole process such that it should execute for every half an hour.
    Means I have to get  whatever the data is updated in the last half an hour in that database.
          The database adapter should be inbound in SOA composite editor(in 'Exposed services' section).
    But in order to have inbound adapter,we have select the 'Poll for New or Changed Records in a Table' option in turn we have to select one of polling operations below:
             Delete the Row(s) that were Read
    Update a Field in the [Table_Name] Table (Logical Delete)
    Update a Sequencing Table
    Update an External Sequencing Table on a Different Database
    Control Table Strategy
    But the problem is I don't have any control on the database(X app database) ,So (I can't update any data on that table,because that table may not have a field or table to update the processed rows)I can't choose any of the above operations.
    How can I achieve what I want that is to retrieve the data and schedule the process?
    Thanks in advance.

    Hi Heckler,
      Thank you very much for your answer that I can proceed further somehow.
    I still need to have some clarifications.
    In order to have a process which retrieves the data (Inbound operation) and updates the data into other application, the data(from X app)  should be the request(through DB adapter) of the BPEL process.
    X app does not do anything to send.We have(the BPEL process) to receive the data (or) no event is triggered.
    The flow :
    Database Adapter( In 'exposed services' section to retrieve data) ----->   BPEL (in 'Components') -----> Y app service( in 'External References' section)
    How can we ensure the data will be  request to BPEL process(means it will be in 'exposed services' section in SOA composite editor) for every half an hour if we use pick activity and database adapter as first activity?
    When we use ''Poll for New or Changed Records in a Table' ,then only adapter becomes inbound and comes into the 'exposed services' section.I can't use it as I don't have any control on the source table.
    I have this confusion before starting the process.Please help me to clear out the doubts.
    And this whole process should be executed automaticallly for every half an hour(means it creates instance for every half an hour)  Once we build the BPEL process.
    How to schedule it?
    And where do I need to create control table ?You mean I have to use some different database where in I have to create the table?

  • How to use Database Adapter in BPEL

    I want to use Database Adapter in BPEL to transfer data from one table to other table and the data is still hold in the read table?
    I can find a example from http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28994/adptr_db.htm#BDCIGDCB.
    And the general design of my BPEL is as following:
    1. Add a "status" column to the read table. And alter the value of status column of all data in read table to "unreaded".
    2. Then create a empty BPEL (BPELAdapter) Project.
    3. Add a Database Adapter:
    (1) In step 1 of Adapter Configuration Wizard, configure the Service Name to datain.
    (2) In step 2, configure the database connection.
    (3) In step 3, choose "Poll for New or Changed Records in a Table".
    (4) Then click Import Tables button, and choose the read table.
    (5) In step 5, choose a column.
    (6) Don’t do anything in step 6 and 7.
    (7) In step 8, choose "Update a Field in the [Datain] Table (Logical Delete)".
    (8) In step 9, configure Logical Delete Field to STATUS, configure Read Value to readed and configure Unread Value to unreaded.
    (9) Don’t do anything in step 10 and 11.
    4. Add a receive activity to connect to above database adapter.
    5. Add another Database Adapter. Then configure this database adapter service WSDL:
    (1) In step 1 of Adapter Configuration Wizard, configure the Service Name to dataout.
    (2) In step 2, configure the database connection.
    (3) In step 3, choose Perform an Operation on a Table (and all items under it).
    (4) Then click Import Tables button, and choose the write table.
    (5) In step 5, choose a column.
    (6) Don’t do anything in step 6, 7 and 8.
    6. Add a invoke activity to connect to above database adapter.
    7. Add a assign activity between the receive activity and invoke activity. And configure the assign copy operation.
    But after I deploy this BPEL project to the BPEL server and invoke this project, I get following error. Meanwhile, this BPEL don't take effect.
    The following exception occured while processing this request:
    Can't find partnerLinkType 2.
    in
    "file:/D:/soft/SOASuite/product/10.1.3.1/OracleAS_1/bpel/domains/default/tmp/.bpel_BPELAdapter_1.0_e82210b05e4d3e997eed581d0d220293.tmp/_BPELAdapter.wsdl" WSDL to find PartnerLinkType "{http://xmlns.oracle.com/pcbpel/adapter/db/datain/datain_plt"。
    How to resolve?
    Thanks,
    Melody

    Now, I can insert data into the table through Database Adapter.
    But still can't select data from the table through Database Adapter.
    Above error still happen when invoke the read database table with Database Adapter project:
    Can't find partnerLinkType 2.
    in
    "file:/D:/soft/SOASuite/product/10.1.3.1/OracleAS_1/bpel/domains/default/tmp/.bpel_BPELAdapter_1.0_e82210b05e4d3e997eed581d0d220293.tmp/_BPELAdapter.wsdl" WSDL to find PartnerLinkType "{http://xmlns.oracle.com/pcbpel/adapter/db/datain/datain_plt"。

  • Error while invoking custom API using Database Adapter

    Hi,
    I've a requirement where in I need to fetch the data returned by a recordtype of a custom API. I've implemented this by invoking the custom API using Database Adapter. I'm facing a problem while performing this.
    The custom API holds the signature as:
    PROCEDURE EMP_DET
    Argument Name Type      In/Out Default?
    P_DEPTNO NUMBER IN
    L_LINE_TBL TABLE OF RECORD OUT
    I've a schema with which it needs to be validated. It looks like:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:po="http://www.mycompany.com/ns/sales" targetNamespace="http://www.mycompany.com/ns/sales" elementFormDefault="qualified">          
    <element name="EmployeeDetails">          
    <complexType>               
    <sequence>                    
    <element name="EmpNo" type="integer"/>                    <element name="EName" type="string"/>                    <element name="Job" type="string"/>                    <element name="Mgr" type="integer"/>                    <element name="HireDate" type="date"/>                    <element name="Sal" type="decimal"/>                    <element name="Comm" type="decimal"/>               </sequence>          
    </complexType>     
    </element>
    </schema>
    I did a transformation to the above stated Emp.xsd with the xsd created for my custom API by the BPEL process. I could create the process and deploy successfully, but while invoking I get the following error. (I'm using BPM 10.1.3.1 with JDev 10.1.3.1)
    <remoteFault xmlns="http://schemas.oracle.com/bpel/extension"><part name="code"><code>6502</code>
    </part><part name="summary"><summary>file:/D:/OraBPEL/bpel/domains/default/tmp/.bpel_my_poc_1.0_16c5d0f7b937c780d27d8975726a15cb.tmp/emp_details.wsdl [ emp_details_ptt::emp_details(InputParameters,OutputParameters) ] - WSIF JCA Execute of operation 'emp_details' failed due to: Error while trying to prepare and execute an API.
    An error occurred while preparing and executing the SCOTT.BPEL_EMP_DETAILS.EMP_PKG$EMP_DET API. Cause: java.sql.SQLException: ORA-06502: PL/SQL: numeric or value error
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at line 1
    [Caused by: ORA-06502: PL/SQL: numeric or value error
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at line 1
    ; nested exception is:
         ORABPEL-11811
    Error while trying to prepare and execute an API.
    An error occurred while preparing and executing the SCOTT.BPEL_EMP_DETAILS.EMP_PKG$EMP_DET API. Cause: java.sql.SQLException: ORA-06502: PL/SQL: numeric or value error
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at line 1
    [Caused by: ORA-06502: PL/SQL: numeric or value error
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at line 1
    Check to ensure that the API is defined in the database and that the parameters match the signature of the API. Contact oracle support if error is not fixable.
    </summary>
    </part><part name="detail"><detail>
    Internal Exception: java.sql.SQLException: ORA-06502: PL/SQL: numeric or value error
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at "SCOTT.BPEL_EMP_DETAILS", line 1
    ORA-06512: at line 1
    Error Code: 6502</detail>
    </part></remoteFault>
    Can someone let me know as to why I'm getting this error? Also lemme know if such an approach is valid to do, if not please suggest me alternate methods to do this.
    Thanks in advance,
    Gayathri

    The 'numeric or value error' is one we have seen many times. The problem has been identified and fixed. Refer to this thread for more information.
    Issue with DB Adapter - ORABPEL-11811

  • Problems while compiling a project that uses Database Adapter

    Hi,
    I am working on a small WebService that uses the Database Adapter to connect with the Oracle-Lite database. The process is a synchronous process which has client and DatabaseService as the partner link. The goal of this project is to get two inputs from the user and send it over to the DatabaseService for it to select the rows from the table based on the inputs sent. The process activity has an invoke function which had two varibles Invoke_1_inputVarible and Invoke_1_outputVarible. I have included the *.xds that contains the database schema. When I compile the project i get the following error
    Error(38): [Error ORABPEL-10035]: wrong messageType [Description]: in line 38 of "D:\OraBPELPM_2\integration\jdev\jdev\mywork\Workspace1\Login\Login.bpel", messageType "{http://xmlns.oracle.com/pcbpel/adapter/db/ds/}EmployeeRole_msg" of variable "Invoke_1_dsSelect_InputVariable" does not match the expected messageType "{http://xmlns.oracle.com/pcbpel/adapter/db/ds/}dsSelect_inparameters" in <invoke>. [Potential fix]: make sure the correct variable is used in invoke.
    My question is how do I assign correct messageType for the variables.
    XSD File:
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <xs:schema targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/db/top/Login" xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/top/Login" elementFormDefault="unqualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="EmployeeRoleCollection" type="EmployeeRoleCollection"/>
    <xs:element name="EmployeeRole" type="EmployeeRole"/>
    <xs:complexType name="EmployeeRoleCollection">
    <xs:sequence>
    <xs:element name="EmployeeRole" type="EmployeeRole" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="EmployeeRole">
    <xs:sequence>
    <xs:element name="empid" type="xs:decimal" minOccurs="0" nillable="true"/>
    <xs:element name="password" type="xs:string" minOccurs="0" nillable="true"/>
    <xs:element name="role" type="xs:string" minOccurs="0" nillable="true"/>
    <xs:element name="uid" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:element name="findAllInputParameters" type="findAll"/>
    <xs:complexType name="findAll">
    <xs:sequence/>
    </xs:complexType>
    <xs:element name="dsSelectInputParameters" type="dsSelect"/>
    <xs:complexType name="dsSelect">
    <xs:sequence/>
    </xs:complexType>
    </xs:schema>
    DatabaseService.wsdl
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions
    >
    <types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
    <import namespace="http://xmlns.oracle.com/pcbpel/adapter/db/top/Login"
    schemaLocation="EmployeeRole_table.xsd"/>
    </schema>
    </types>
    <message name="EmployeeRoleCollection_msg">
    <part name="EmployeeRoleCollection" element="top:EmployeeRoleCollection"/>
    </message>
    <message name="dsSelect_inparameters">
    <part name="dsSelect_inparameters" element="top:dsSelectInputParameters"/>
    </message>
    <message name="EmployeeRole_msg">
    <part name="EmployeeRole" element="top:EmployeeRole"/>
    </message>
    <portType name="ds_ptt">
    <operation name="dsSelect">
    <input message="tns:dsSelect_inparameters"/>
    <output message="tns:EmployeeRoleCollection_msg"/>
    </operation>
    <operation name="queryByExample">
    <input message="tns:EmployeeRole_msg"/>
    <output message="tns:EmployeeRoleCollection_msg"/>
    </operation>
    </portType>
    <binding name="ds_binding" type="tns:ds_ptt">
    </binding>
    <service name="ds">
    <port name="ds_pt" binding="tns:ds_binding">
    <jca:address location="eis/DB/BPELSamples"
    />
    </port>
    </service>
    </definitions>
    <b>Login.bpel</b>
    <process name="Login" targetNamespace="http://xmlns.oracle.com/Login" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/ds/" xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://xmlns.oracle.com/pcbpel/adapter/db/top/Login" xmlns:client="http://xmlns.oracle.com/Login" xmlns:bpelx="http://schemas.oracle.com/bpel/extension" xmlns:ora="http://schemas.oracle.com/xpath/extension" xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc">
    <partnerLinks>
    <partnerLink name="client" partnerLinkType="client:Login" myRole="LoginProvider"/>
    <partnerLink name="PartnerLink_1" partnerRole="ds_role" partnerLinkType="ns1:ds_plt"/>
    </partnerLinks>
    <variables>
    <variable name="inputVariable" messageType="client:LoginRequestMessage"/>
    <variable name="outputVariable" messageType="client:LoginResponseMessage"/>
    <variable name="Invoke_1_dsSelect_InputVariable" messageType="ns1:EmployeeRole_msg"/>
    <variable name="Invoke_1_dsSelect_OutputVariable" messageType="ns1:EmployeeRoleCollection_msg"/>
    </variables>
    <sequence name="main">
    <receive name="receiveInput" partnerLink="client" portType="client:Login" operation="process" variable="inputVariable" createInstance="yes"/>
    <assign name="Assign_1">
    <copy>
    <from variable="inputVariable" part="payload"/>
    <to variable="Invoke_1_dsSelect_InputVariable" query="/ns2:EmployeeRole"/>
    </copy>
    </assign>
    <invoke name="Invoke_1" partnerLink="PartnerLink_1" portType="ns1:ds_ptt" operation="dsSelect" inputVariable="Invoke_1_dsSelect_InputVariable" outputVariable="Invoke_1_dsSelect_OutputVariable"/>
    <assign name="Assign_2">
    <copy>
    <from variable="Invoke_1_dsSelect_OutputVariable" part="EmployeeRoleCollection"/>
    <to variable="outputVariable" part="payload"/>
    </copy>
    </assign>
    <reply name="replyOutput" partnerLink="client" portType="client:Login" operation="process" variable="outputVariable"/>
    </sequence>
    </process>
    Thanks,
    Niv

    Help! SOS....
    Niv

  • 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.

Maybe you are looking for