DBAdapter retains the unique causing value sequence force error

Hi gurus BPEL.

I am facing a problem in EBS integration of the invoice of the OTM.
AP invoice header is inserted, the AP invoice lines does not get inserted due to the below error in BPEL. Import of payment fails, as there are no invoice lines.


Anomaly of the non-recoverable system:
Exception occurred when the link was invoked. Exception occurred during invocation of the JCA binding: "JCA binding run reference"insert"operations have to: DBWriteInteractionSpec Execute Failed Exception." insertion failed. The descriptor name: [APInvoice.ApInvoicesInterface]. Caused by java.sql.BatchUpdateException: ORA-00001: unique constraint (AP. AP_INVOICE_LINES_INTERFACE_U1) violated. Check the logs for the record output full DBAdapter before this exception. This exception is considered non reproducible, probably due to an error of modeling. To be classified as reproducible rather add property nonRetriableErrorCodes with the value "-1" for the deployment descriptor (i.e. weblogic - RA.Xml). Auto retry a reproducible fault set composite.xml for this invoke these properties: jca.retry.interval, jca.retry.count and jca.retry.backoff. All properties are integers. ". The called JCA adapter threw an exception of resource. Please review the error message above carefully to determine a resolution.


SOA DB Connections seem to retain the sequence used in the cache and assign the same when the Bill for the line is inserted. This causes the Unique constraint error when inserting the table of AP invoice lines in EBS.

I call the standard APInvoices.wsdl to make the insertion AP_INVOICE_LINES_INTERFACE. I noticed that in the file APInvoice - or - mappings.xml contains the following code
> the sequence name < AP_INVOICE_LINES_INTERFACE_S < / sequence-name >
< table sequence-field = "AP_INVOICE_LINES_INTERFACE" name = "INVOICE_LINE_ID" / >
< / sequencing >
< cache >
weak-reference < cache-type > < / type of cache >
<-cache size >-1 < / cache size >
true < always refresh > - < / always refresh >
< / cache >
< remote caching >
weak-reference < cache-type > < / type of cache >
<-cache size >-1 < / cache size >
< / remote caching >

Is their anything I can change something in the BPEL process to refresh the cache of the sequence all the time.

Alternative, I think now is below.
1. check with customer if they can do the sequence AP_INVOICE_LINES_INTERFACE_S as NOCACHE.
2. pull the invoice line via pl/sql adapter and complete the invoice line. But in this case, I'm not sure if Web APInvoice service code will try to update with the generated BPEL sequence.

Any direction on this issue will be of great help.

Thank you
Shobz

Hi Anushal,
Thanks for the reply.

Hi all
The problem has been resolved with the creation of this «sequencePreallocationSize» DBAdpater
As this property is set to 50 DB adapter's default, it did not fit with the INCREMENT BY the AP_INVOICE_LINES_INTERFACE_S sequence that has been set to 1.

What happens in the adaptor DB is, when the first record is created, it takes the nextval in the sequence (assume it is 20), however it uses then his own sequence internal for the next 50 files by reference to the value set in this property (by creating records with primary keys from 20 to 70) and only when this internal sequence is exhausted it will return to the sequence of database.
Meanwhile, any other inovoice created AP would recover DB, which could be his word to say value 21, in conflict with the inserted by BPEL, throw a unique constraint.

Setting this property to 1 or corresponding increment sequence solved the problem.

Thank you
Shobz

Tags: Fusion Middleware

Similar Questions

  • Transpose the unique column values online

    Hi all

    How to transpose the values of one column in a row,

    COL

    1

    2

    3

    4

    5

    6

    7

    8

    and I want to convert this column into the line as follows:

    Line (each in a separate column value). Number of values is not constant.

    1,2,3,4,5,6,7,8

    Solution without converting them to XML:

    WITH row_values

    AS (SELECT DISTINCT property_name,

    column_order

    OF v_rd_property_definition

    WHERE lp_id = 5171

    ORDER BY column_order)

    SELECT Regexp_substr(Wm_concat(property_name), "[^,] +' 1, 1") AS col1,.

    Regexp_substr (Wm_concat(property_name), "[^,] +' 1, 2"). AS col2.

    Regexp_substr (Wm_concat(property_name), "[^,] +' 1, 3") AS col3.

    Regexp_substr (Wm_concat(property_name), "[^,] +' 1, 4") AS col4,.

    Regexp_substr (Wm_concat(property_name), "[^,] +' 1, 5") AS col5,.

    Regexp_substr (Wm_concat(property_name), "[^,] +' 1, 6") AS col6,.

    Regexp_substr (Wm_concat(property_name), "[^,] +' 1, 7") AS col7

    OF row_values;

  • How to compare the unique column values

    Hi all

    I have data in following manner

    PAT_ID PAT_ENC_CSN_ID DEPT_ID EFFECTIVE_DATE

    Z369160557291136405500122 APRIL 14
    Z369160557291136405500222 APRIL 14
    Z269466457982980405500116 MAY 14
    Z269466457982980405500216 MAY 14
    Z268924357987777405500116 MAY 14
    Z268924357987777405500218 MAY 14

    My requirement is to know if the patient changes in another Department at the same time, so I need to select the patient or even dismiss the patient. In my example above, I have to select Z3691605 and Z2694664 patients and ignore the remaining patient.

    Can someone plase help me with the code for that sql. I use 11g.

    Hope I have my question clearly.

    Thank you.

    Here is a way use are:

    SQL > select *.

    2 t a

    3 where exists (select 1

    4t b

    5 where a.pat_id = b.pat_id

    6 and a.pat_enc_csn_id = b.pat_enc_csn_id

    7 and a.effective_date = b.effective_date

    8 and a.dept_id <> b.dept_id

    9                );

    PAT_ID PAT_ENC_CSN_ID DEPT_ID EFFECTIVE_DATE

    ------------------------------ -------------------- -------------------- --------------------

    Z3691605 57291136 4055002 22 APRIL 2014 00:00:00

    Z3691605 57291136 4055001 22 APRIL 2014 00:00:00

    Z2694664 57982980 4055002 16 MAY 2014 00:00:00

    Z2694664 57982980 4055001 16 MAY 2014 00:00:00

  • Unique nutrient values in the parameters of the effect of comps pre duplicated?

    I have a composition before with some fairly complex particle systems I'd like to reproduce several times in a final model.

    The thing is I want to apply a unique 'XY position' value to the effects within each instance precomp.  I already have the values chained with the selection inside the demo icon, so all 'position XY' values can be moved as a unit.

    He can feed the unique effect values down in the stack of comps pre uses phrases or some other thing?

    You can have only one instance of a set of precomps that makes differently when it is used several times.

    You will need to create several sets of these precomps and put different values. You could do this by recording all the precomps as a project then import several times. Or there is a script to duplicate a comp here hierarchy: http://aescripts.com/true-comp-duplicator/

    Before that, you can use expressions to power a random some properties value so that they would be automatically in each set in doubles. For example, this would be a random position XY value:

    seedRandom(1,true);

    x = random (0,640);

    y = random (0,480);

    [x, y];

  • kindly tell how to use the unique value of a table with the index 0

    kindly tell how to use the unique value of a table with the index 0

    Hi
     
    Yep, use Index Array as Gerd says. Also, using the context help ( + h) and looking through the array palette will help you get an understanding of what each VI does.
     
    This is fundamental LabVIEW stuff, perhaps you'd be better spending some time going through the basics.
     
    -CC
  • multi values in the unique setting in plsql

    Hi, I need your help... How you can pass multiple values in the unique parameter in a function?

    The values "AAA 1', 'BBB 2', 'CCC 3' should be passed to the same v_tipo_alerta of parameter, the values will be sent. based on the selection in the drop to the front screen The user can select one or more values in the list and these values must be passed to the procedure which will in turn passed to the WHERE clause of the select within the procedure. If I pass a single value, it works fine.

    Example of

    CREATE OR REPLACE FUNCTION FN_GET_ROWS

    (v_fecha_ini IN DAY,

    v_fecha_fin IN this update,

    v_tipo_alerta in VARCHAR2

    )

    RETURN TEST_TABTYPE

    AS

    V_Test_Tabtype Test_TabType;

    BEGIN

    SELECT TEST_OBJ_TYPE (DATE, NAME, ALERT( )

    BULK COLLECT INTO V_Test_TabType

    (Select date, name, alert)

    table

    Where DATE BETWEEN v_fecha_ini AND v_fecha_fin

    AND alert in (v_tipo_alerta)

    );

    RETURN V_Test_TabType;

    END;

    Please help me.

    Emanuel

    concatenate all use a standard separator, then use split() to bring back them to the unique variables.

  • How to set the default value of the attribute with a sequence number? Is it possible to add a string to seq.no. like abc0001?

    Mr President.

    How to set the default value of the attribute with a sequence number? Is it possible to add a string to seq.no. like abc0001?

    Concerning

    For the date, you can use groovy expression adf.currentDate to set the current date. reference http://adfgouravtkiet.blogspot.in/2012/11/how-to-set-default-values-for-entity.html

    You already have ways to use the sequence.

    How do you add a new value in the form. You're creating a new line of your page (user interface) and by engaging with validation operation? Unless you commit you will not be able to see anything in the table.

    Thank you

  • How to put the two column values in two different colors unique online: MobApp

    Hello

    I develop Mobile Application.
    I want to show two values in different columns in single row and first column value in either green or red and the second color the default column value.
    the first value of the column is green when the value is greater than the second value of the column.
    and the first column value in red when the value is less than the second value of the column.
    The code I tried is:
    --------------------------------------------------------------------------------------------
    < tr:panelGroupLayout layout = "vertical" styleClass = 'list' >
    < tr:panelList styleClass = "panelist ul > li > a" >


    "" < tr:outputText value = "deliver: % #{row.bindings.OccCurr.inputValue},
    inlineStyle = "background-color: #{rank." OccCurr > line. OccFcst? {'Green': 'Red'}; ">

    "< tr:outputText value =" OccFcst: #{row.bindings.OccFcst.inputValue} % ">"

    < / tr:outputText >
    < / tr:outputText >
    < / tr:panelList >
    < / tr:panelGroupLayout >
    ------------------------------------------------------------------------------------------------

    But the code above does not work.


    Please, someone tell me what I need to do.


    I apreciate your time and your help.

    Sanchez.

    Hi Catherine,

    Exactly, what is not working? Your OccCurr and OccFcst values are printed to the screen? I notice some questions.

    (1) If you want to display two outputText on one line, you can surround them with a panelGroupLayout and set the page layout to horizontal.
    (2) I don't think that you can place an outputText in outputText one another as in the codes that you have provided.
    (3) your EL is inconsistent. What is #{row.bindings.OccCurr.inputValue} or #{line. OccCurr}? If your values are displayed, but the background color does not work, it could be the first.

    
      
        
          
          
        
      
    
    

    Kind regards
    Amélie Chan

  • The assignment of value to the block multi-record in Oracle's 10 g

    Hi all

    I'm new to form of Oracle 10 g.

    I have a block of several recording that does not rely on the database. I need to assign the value to this block multi-record dynamically the ref cursor.

    I'm trying to set the value as below, but its does not work. Please help me on this.

    loop
         fetch cur Into screenval_rec ;
          exit when cur%notfound ;
          first_record;
       
      :BLOCK1.COL1:= screenval_rec.value1;
        :BLOCK1.COL2 := screenval_rec.value2;
        :BLOCK1.COL3:= screenval_rec.valu3;
      
         next_record;
    End loop;
    
    

    Kind regards

    REDA

    Hi Craig,.

    Thank you for your information.

    But I found the exact cause of this "Invalid cursor error' (ORA-01001) in Oracle forms. It is because of the unique enclosed in quotes the select statement of the REF cursor. I found in the paragraphs below Oracle.

    Note 170881.1 - ORA-1001 calling a stored procedure that contains a REF Cursor Oracle Forms

    Once I deleted the quotes, it's working properly now.

    Thanks again for your help.

    Kind regards

    REDA

  • Avoid the slowness caused by many indicators PF_ChangeFlag_CHANGED_VALUE

    Hello

    I created a plugin with a custom user interface, which manages more than a thousand editable float parameters.

    Each time a change is one effect parameters, almost all the others are affected. Then, I must inform the UI changes, and After effects, so that he can save the new values of the parameters.

    So I have to use this indicator:

    ... MyFunc (PF_ParamDef *params[,...])

    {

    ...

    params [paramId]-> uu.change_flags. = PF_ChangeFlag_CHANGED_VALUE;

    }

    The definition of this indicator a thousand times however, the interface becomes very slow and unresponsive.

    I noticed that if I used only the "local" parameters for my UI (for example, variables stored in the sequence data), set the PF_ChangeFlag_CHANGED_VALUEflag, so there was no lag or the slowness of my plugin.

    However, users of my plugin as the new parameter values to save whenever there is a change, so I can't use this workaround.

    I also tried to define and use an arbitrary parameter type to encapsulate the thousand of floats: this version corrects the interface does not, but once more users will not accept this work around because they require settings to be saved in the project file as an array of thousands of tanks.

    Are there other settings I should check to try to reduce the lag caused by defining PF_ChangeFlag_CHANGED_VALUE a thousand times?

    Or maybe is there another method to save thousands of settings in the project file, without the help of this indicator?

    Thanks in advance for any suggestions!

    I still don't understand why you say that you must have 1000 cursors...

    unless you want the user to directly access via the UI slider each

    specific param, then it's just a bunch of data and you're better off with

    ARB/ff.

    But if you know that the sliders is what it takes, you can use

    AEGP_SetStreamValue() instead if the method parameter data, you are currently

    for help.

  • I don't know what this concept is called... something on the uniqueness

    Let's say I have a single table of maintenance tasks. The table has the following columns:
    auto-increment index
    TaskName
    step_number
    step_name

    Thus, each task will have a series of steps to complete. I want to assure you that the step_numbers are not duplicated in a given task. Of course, one way to solve this problem would be to have a separate table for each maintenance task, which would only hold the records for each step. But I do not know the number of different tasks and will probably add more, in order to add a new table every time makes no sense. So, is this "exclusive" something I need to check on the client side before the update, or is there a way to create a database such as this constraint. Oh, and if this concept has a specific name, I'd be happy to hear it.

    Well, then we'll break down Centinul answer some.

    Standardisation - see the wiki: http://en.wikipedia.org/wiki/Database_normalization

    Its 'missions' table uses a task_id as primary key; may also be known as a surrogate key. The column "TaskName" now is just data. If you want to change the "data", you can change without affecting the relationships between the tables. Change to anything you want, as often as you like; It's just data. If you do "TaskName" the primary key, "lock you", then it becomes an integral part of the table relation to the table. Worse, the taskname value must be unique in the table task_steps. You cannot change easily in two tables because the tables are interconnected.

    The picture of 'missions' becomes a master table of all possible tasks with one record for each task.

    CREATE TABLE tasks
    ( task_id   NUMBER        PRIMARY KEY
    , task_name VARCHAR2(255) NOT NULL
    );
    

    His painting "the steps" is similar to the task table, a master table of all possible measures with one record for each task as possible. There is no information in this table on which task a step belongs to. A step may be part of multiple tasks, or a part of any task at all. As with the table of tasks the step_id is just a number to make the unique records; It can be assigned to a value using a sequence generator (Oracle sequence). The numbers must be consecutive, can be positive, negative, include decimal values. the only requirement is that they are unique in the table.

    The step_name is now just a piece of data. Feel free to change the name when you want. The new name will appear in the new requests, but this will not affect the relationship between the tables.

    CREATE TABLE steps
    ( step_id   NUMBER        PRIMARY KEY
    , step_name VARCHAR2(255) NOT NULL
    );
    

    Now the part that can seem confusing at first. Its task_steps table is known as a table of intersect. It "cuts" the task table and the table "steps of the task. The records in this table are that associates a step in the table in step with a task in the tasks table.

    To link the two tables, it added a column "task_id" to refer to a record in the table of tasks and added a column "step_id" to refer to a record in the table as follows. Each corresponding clause references tells Oracle to enforce this relationship. If you CAN add a record to a task_id value that does not exist in the table. And you CANN "OT add a record with a step_id value that does not exist in the table of measures.

    But, you said you want each step that is associated with a task to have a number from 1 to n; This means that each task will be a first step.

    Centinul has added a column "step_order"; It's the same thing as what you called "step_number" so you can use your name if you wish. The CONSTRAINT of UNIQUENESS on task_id and step_order tellsl Oracle that the combination of these two values MUST BE UNIQUE within the table. Oracle still does not care what the values are as long as they are unique. You can have values of 2, 6 step_order, -1, and Oracle don't care; It's a business rule guaranteeing the Oracle without more help.

    {code}
    CREATE TABLE task_steps
    (task_id NUMBER NOT of REFERENCES NULL tasks (task_id)
    NOT NUMBER of REFERENCES NULL steps (step_id) step_id
    step_order NUMBER NOT NULL,
    CONSTRAINT task_steps_pk PRIMARY KEY (task_id, step_id)
    Task_steps_uk of UNIQUE CONSTRAINT (task_id, step_order)
    );

    {code}

    He gave you the best possible example for what you want to do.

    To add a record to the table task_steps:

    1. Select a folder that already exists in the task table and use the task_id of this record value
    2. Select a folder that already exists in the table of the steps and use the value of this record step_id
    3. determine the highest step_order value that already exists in the task_steps table and add 1 use the new value to step_order for the new record.

    Step #3 is the tricky part, because there may be multiple users or process tries to add records at a time. This is why this business rule is often used only for applications such as INVOICE and LINEITEM wher the same process creates the parent (INVOICE - task for your example) and all the records of the CONTROL unit (task_steps) at the same time.

    Help to explain what suggested Centinul?

  • sequence Analyzer: data transfer between the Analyzer rule one sequence to another

    Is there a way by which I can send data to the Analyzer rule a sequence to another.

    I've created rules to count the number of SCOPE, step REQUIREMENT TEXT step, step in the PROCESS

    Now, I want to create another regulation that reads the values of each of these rules

    Tah44-

    One of my colleagues brought a different, probably better idea to my attention this morning:

    Use the AnalysisContext.GetRuleAnalysisData method to access the data of other rule analysis: http://zone.ni.com/reference/en-XX/help/370052P-01/tsref/infotopics/sa_creating_analysis_modulesimpl...

    -Jeff

  • Simply extract the unique rows in table 2d

    Hello, I'm sorry for my English. I have a chart 2D with thousends of rows and 2 columns. I want to extract only the unique rows in the table. So I need to exclude all lines have that / which (?) duplicate (s) and exclude the duplicate (s) too.

    Simple example:

    Input array:


    0 0 ---> single

    0 1 ---> D1

    1 0 ---> single

    1 1 ---> D1

    0 1 ---> D2

    2 0 ---> single

    1 1 ---> D2

    2 0 ---> D1

    1 1 ---> D3

    2 0 ---> D2

    2 2 ---> unique

    Desired output table:


    0 0

    1 0

    0 2

    2 2

    Can someone help me?

    Hi Werty,

    To do this is to compare each line with the entire table and count the number of matches.

    If there is only a single match, then the line is unique.

    Here is an example:

    Outside for the index of the loop through each line.

    Inside of the loop compares each line with the entire table and counts the matches.

    Then, a check is made to see if this line is unique.

    The case statement adds unique lines in the output array.

    Note: Use a table function build in a loop like this could cause problems if there will be a large number of unique lines.

  • Write the Date/time value to a Ms Access table

    I have a headache. Here is the statement I send and the error I get:

    INSERT INTO VALUES (TestID, DateTime) measure (8732, #' 2015 - 01 - 28 16:17:58 ' #);

    NI_Database_API.lvlib:conn Execute.vi-> 2.vi Untitled-> Untitled 1. VIADO error: 0x80040E14
    Exception occurred in the Microsoft JET Database Engine: syntax error in INSERT INTO statement. in NI_Database_API.lvlib:Conn Execute.vi-> 2.vi-> vi Untitled 1 Untitled.

    I tried most of the possible combinations of #, "," around the datetime string and I also tried datetime string formats YYYY/MM/DD hh: mmS AM/PM, DD/MM/YYYY "

    In writing to the other data fields don't cause any error, I only get the syntax error when I try to write in the DateTime field (data type Date/Type)

    I use LV2012 with database connectivity kit and MS Access 2010 (stuck with it, cannot be changed). Same problem with the connection of the user DSN or UDL (jet engine).

    It works with the DB tools Insert Data.vi but we want to use a direct INSERT statement using the DB tools run Query.vi, because we have had a few locks error 0 x 80004005 which can be caused by the DB tools Insert Data.vi using ADODB. Recordset.

    Is attached the vi that I use for debugging.

    Ben64

    Finally found the problem!

    Even if the data type is Date/time in Access, and it is possible to define the name of the DateTime field it seems to be a small Word when you use a SQL statement. The solution is to add DateTime hooks like this:

    INSERT the EXTENT (TestID, [DateTime]) VALUES (1,'2015-01-28 06:52:16 ');

    Thanks for your help Cosworth.

    Ben64

  • replace the uniqueness and leave those in expressions

    Hello

    I'm looking for beautiful and elegant solution to my problem. Let's say I have a string "e + exp (e)". I want to replace all 'e' by '1', except for "exp". I tried to use regular expressions, but I failed an hour later... The solution should be able to resolve things like replace "a" to "r (a)" without changing the rand. Basically, I need to replace the uniqueness without replacing those words or phrases.

    Any ideas?

    No time for elegance now, just brute force.  I would touch the string with spaces at each end to remove end cases and then look for the character surrounded by non-alphabetiques characters.

Maybe you are looking for