How to continue a loop after rear roller called a Transaction in SOA

Hi all

I have major bpel processes that call an external web service that returns the Recordset.

iiterate through the game, I need to remember the each file in topic QA.

and ack each record after their storage in AQTopic. If the ACK does not I should roll back the previously inserted record of QA.

I have divided into two parts of the XA transaction using "checkpoint();".

Based on the status of the receipt, I called throw with Rollback transaction activity, I handled that by using catch everything in scope.but even after this process ends is not an iteration in the loop.

I used XA Datasource.

Please suggest me.

Thanks René.

Hi PuneetRekhade,

Thanks for your suggestion.

After receving the ack = success, before storing the recording in the AQ if the system breaks down data would no longer exist in AQ's or database for the external web service.

the recording should not be lost at any cost.

in my case, if the system crashes before sending the data to QA, nothing happens because I wouldn't send the acknowledgement to the external web service.

Thank you

Raj.

Tags: Fusion Middleware

Similar Questions

  • Continue the loop after the exception thrown in SQL

    How would continue the while loop in the code below after an exception was thrown?

    DECLARE    
    v_blob_data       BLOB;    
    v_blob_len        NUMBER;    
    v_position        NUMBER;    
    v_raw_chunk       RAW(10000);    
    v_char      CHAR(1);    
    c_chunk_len   number       := 1;    
    v_line        VARCHAR2 (32767)        := NULL;    
    v_data_array      wwv_flow_global.vc_arr2;    
    v_rows number;    
    v_sr_no number := 1;  
    v_first_line_done boolean := false;  
    v_error_cd number :=0;  
    v_quote_pos1 NUMBER;  
    v_quote_pos2 NUMBER;  
    v_enclosed_str VARCHAR(200);
    v_errmsg VARCHAR2(4000);
    
    BEGIN
    
     delete from TEMP_MM_UPDATE where username = :P1_USER_ID;
    
    -- Read data from wwv_flow_files</span>    
     select    
      blob_content    
     into v_blob_data    
     from wwv_flow_files    
     where name = :P2_FILE_UPLOAD; 
    
     v_blob_len := dbms_lob.getlength(v_blob_data);    
     v_position := 1;
    
    
    
     -- Read and convert binary to char</span>  
     WHILE ( v_position <= v_blob_len )    
     LOOP
    
    begin 
     
      v_raw_chunk := dbms_lob.substr(v_blob_data,c_chunk_len,v_position);    
      v_char :=  chr(hex_to_decimal(rawtohex(v_raw_chunk)));    
      v_line := v_line || v_char;    
      v_position := v_position + c_chunk_len;
      
     -- When a whole line is retrieved </span>   
     IF v_char = CHR(10) THEN
     
     LOOP  
      --Make sure there's something to replace  
      IF INSTR(v_line, '"', 1, 1) = 0 THEN  
      EXIT; -- If nothing to replace, exit loop and don't try  
      END IF;  
      --Find the position of the first and second quotes in the line of text  
      v_quote_pos1 := INSTR(v_line, '"', 1, 1);  
      v_quote_pos2 := INSTR(v_line, '"', 1, 2);  
      --Extract the inner string  
      v_enclosed_str := SUBSTR(v_line, v_quote_pos1 + 1, v_quote_pos2 - v_quote_pos1 - 1);  
      --perform the replacement  
      v_line := SUBSTR(v_line, 0, v_quote_pos1 - 1) || REPLACE(v_enclosed_str, ',', '<') || SUBSTR(v_line, v_quote_pos2 + 1);  
     END LOOP; 
      
     -- Convert comma to : to use wwv_flow_utilities </span>  
     v_line := REPLACE (v_line, ',', ':');  
     v_line := REPLACE (v_line, '<', ',');  
     v_line := REPLACE (trim(v_line), '-', NULL);  
     --v_line := REPLACE (trim(v_line), '"', NULL);  
     -- Convert each column separated by : into array of data </span>    
     v_data_array := wwv_flow_utilities.string_to_table (v_line);  
     --Check to see if the row of column headers has already been parsed through  
     IF(v_first_line_done != true)THEN   
      v_first_line_done := true;  
      --Check column order in spreadsheet  
      IF(v_data_array(1)   LIKE '%Username%' AND
        v_data_array(2)  LIKE '%NDN%' AND
        v_data_array(3)  LIKE '%PCFN%' ) THEN   
       v_error_cd := 0;  
       v_line := NULL;  
      ELSE  
       v_error_cd := 1;  
      END IF;  
     --If first line is done and the column order is correct then  
     ELSIF(v_first_line_done = true AND v_error_cd = 0) THEN   
     -- Insert data into target table </span>    
     EXECUTE IMMEDIATE 'insert into TEMP_MM_UPDATE   
     (USERNAME,
       RPT_FLAG,
      PCFN)
     values (:1,:2,:3)'   
       USING   
      v_data_array(1),   
      v_data_array(2),   
      v_data_array(3);
       -- Clear out    
      v_line := NULL; v_sr_no := v_sr_no + 1; 
     
     END IF;  
     END IF;
    
    exception
    WHEN OTHERS then
      v_errmsg := SQLERRM;
      insert into temp_mm_update (username,error_desc)
      values (:P1_USER_ID, v_errmsg);
    end;
      
     END LOOP;
    
    
     
    DELETE FROM WWV_FLOW_FILES where name = :P2_FILE_UPLOAD;
    DELETE FROM TEMP_MM_UPDATE WHERE USERNAME IS NULL AND PCFN IS NULL;  
     IF(v_error_cd = 1) THEN  
    INSERT INTO temp_mm_update (USERNAME, ERROR_DESC)  
    VALUES (:P1_USER_ID, 'Error. Please check column order in spreadsheet.');  
    END IF;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            insert into temp_mm_update (username,error_desc)
      values (:P1_USER_ID, 'No Data Found.');
     WHEN OTHERS then
      v_errmsg := SQLERRM;
      insert into temp_mm_update (username,error_desc)
      values (:P1_USER_ID, v_errmsg);  
    
    END;
    
    

    When I set the exception inside the loop, as above, the procedure seems never to end, and I end up getting a 'NOWAIT' error when I try to remove the table or something like that.

    The code works fine if I remove the 'START' just after the loop and also out of the exception within the loop, but I want to be able to specify what's wrong with each record rather than deal with the correct records and then stop after that it is a record that has, for example, 9 values in a column that accepts only 6.

    Can anyone help with this?

    Thank you

    Steven

    Play with my code I found what was wrong.
    I needed to add in the following line in my code block of exception:
    v_line := NULL; v_sr_no := v_sr_no + 1;
    
    Final code:
    DECLARE
      v_blob_data       BLOB;
      v_blob_len        NUMBER;
      v_position        NUMBER;
      v_raw_chunk       RAW(10000);
      v_char      CHAR(1);
      c_chunk_len   number       := 1;
      v_line        VARCHAR2 (32767)        := NULL;
      v_data_array      wwv_flow_global.vc_arr2;
      v_rows number;
      v_sr_no number := 1;
      v_first_line_done boolean := false;
      v_error_cd number :=0;
      v_quote_pos1 NUMBER;
      v_quote_pos2 NUMBER;
      v_enclosed_str VARCHAR(200);
      v_errmsg VARCHAR2(4000);
    BEGIN
      delete from TEMP_MM_UPDATE where username = :P1_USER_ID;
    
      -- Read data from wwv_flow_files
      select
        blob_content
        into v_blob_data
        from wwv_flow_files
        where name = :P2_FILE_UPLOAD; 
    
      v_blob_len := dbms_lob.getlength(v_blob_data);
      v_position := 1; 
    
      -- Read and convert binary to char
      WHILE ( v_position <= v_blob_len )
      LOOP
        begin
            v_raw_chunk := dbms_lob.substr(v_blob_data,c_chunk_len,v_position);
            v_char :=  chr(hex_to_decimal(rawtohex(v_raw_chunk)));
            v_line := v_line || v_char;
            v_position := v_position + c_chunk_len;
    
          -- When a whole line is retrieved 
          IF v_char = CHR(10) THEN
            LOOP
              --Make sure there's something to replace
              IF INSTR(v_line, '"', 1, 1) = 0 THEN
                EXIT; -- If nothing to replace, exit loop and don't try
              END IF;
              --Find the position of the first and second quotes in the line of text
              v_quote_pos1 := INSTR(v_line, '"', 1, 1);
              v_quote_pos2 := INSTR(v_line, '"', 1, 2);
              --Extract the inner string
              v_enclosed_str := SUBSTR(v_line, v_quote_pos1 + 1, v_quote_pos2 - v_quote_pos1 - 1);
              --perform the replacement
              v_line := SUBSTR(v_line, 0, v_quote_pos1 - 1) || REPLACE(v_enclosed_str, ',', '<') || SUBSTR(v_line, v_quote_pos2 + 1);
            END LOOP; 
    
            -- Convert comma to : to use wwv_flow_utilities 
            v_line := REPLACE (v_line, ',', ':');
            v_line := REPLACE (v_line, '<', ',');
            v_line := REPLACE (trim(v_line), '-', NULL);
            --v_line := REPLACE (trim(v_line), '"', NULL);
            -- Convert each column separated by : into array of data 
            v_data_array := wwv_flow_utilities.string_to_table (v_line);
            --Check to see if the row of column headers has already been parsed through
            IF(v_first_line_done != true)THEN
              v_first_line_done := true;
              --Check column order in spreadsheet
              IF(v_data_array(1)    LIKE '%Username%' AND
                  v_data_array(2)  LIKE '%NDN%' AND
                  v_data_array(3)  LIKE '%PCFN%') THEN
                v_error_cd := 0;
                v_line := NULL;
              ELSE
                v_error_cd := 1;
              END IF;
            --If first line is done and the column order is correct then
            ELSIF(v_first_line_done = true AND v_error_cd = 0) THEN
              -- Insert data into target table 
              EXECUTE IMMEDIATE 'insert into TEMP_MM_UPDATE
              (USERNAME,
               RPT_FLAG,
               PCFN)
              values (:1,:2,:3)'
               USING
                v_data_array(1),
                v_data_array(2),
                v_data_array(3);
               -- Clear out
                v_line := NULL; v_sr_no := v_sr_no + 1;
            END IF;
          END IF;
        exception
          WHEN OTHERS then
            v_errmsg := SQLERRM;
            insert into temp_mm_update (username,error_desc)
            values (:P1_USER_ID, v_errmsg);
    v_line := NULL; v_sr_no := v_sr_no + 1;
      END;
      END LOOP;
    
      DELETE FROM WWV_FLOW_FILES where name = :P2_FILE_UPLOAD;
      DELETE FROM TEMP_MM_UPDATE WHERE USERNAME IS NULL AND PCFN IS NULL;
      IF(v_error_cd = 1) THEN
        INSERT INTO temp_mm_update (USERNAME, ERROR_DESC)
        VALUES (:P1_USER_ID, 'Error. Please check column order in spreadsheet.');
      END IF;
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        insert into temp_mm_update (username,error_desc)
        values (:P1_USER_ID, 'No Data Found.');
      WHEN OTHERS then
        v_errmsg := SQLERRM;
        insert into temp_mm_update (username,error_desc)
        values (:P1_USER_ID, v_errmsg);
    END;
    
  • How to continue the loop loop T/F until it is wrong

    Need help!

    I want to compare 2 numbers (low and high).

    If salvation > Lo - false cases: go to the next step

    If Lo > Hi - real deal: display the error and ask the user enter again until it is correct (case false)

    Can you post your code? It would make it much easier to see what is the problem. In the meantime, I have attached an example of code that basically does the same thing you want to do.

  • How to get you to your rear camera works again after upgrading 8.3 on an iPhone 5?

    How to get you to your rear camera works again after upgrading 8.3 on an iPhone 5?

    Is 8.3 typo?

    After which update exactly?

  • How I continuously loop frames with pause for 20 seconds in each image of the scene even without going to the next scene?

    How I continuously loop frames with pause for 20 seconds in each image of the scene even without going to the next scene? There are buttons for other scenes in these images. The below works well until I got to the last frame of the scene, then he goes to the next scene and plays. How can I make one loop continuously.

    Stop();

    var: timer = new Timer (20000,0); / / <--

    timer.addEventListener (TimerEvent.TIMER, timerHandler);

    Timer.Start ();

    function timerHandler(event:TimerEvent):void {}

    this.nextFrame ();

    or if you want to jump for example 5 executives

    this.gotoAndStop(this.currentFrame+5);

    }

    Thanks for any help.

    If you want to stop your timer, use the stop() method:

    Timer.Stop ();

    PS when you use the adobe forums, please check the useful/correct, if there is.

  • AFTER ERROR CONTINUE to LOOP (or any other way)

    Hi all
    I have to keep my loop for next after the error.

    ---
    BEGIN
    FOR rs
    (SELECT 'my select stmt' FROM DUAL)
    )
    LOOP
    NULL;-if there is error update error information in the ERR_LOG table and continue the loop
    END LOOP;
    EXCEPTION
    WHILE OTHERS THEN
    INSERT INTO ERR_LOG VALUES ('error details')
    NULL;
    END;
    ---

    or apart from Above method we have another way to implement above solution?

    Thank you
    Isabelle Dhaneenja

    You can declare an another begin... end with its own exception handler to catch the error.

    BEGIN
    FOR rs
    (SELECT 'my select stmt' FROM DUAL
    )
    LOOP
    NULL;--if there has error update error info to ERR_LOG table and continue loop
       begin
       null;
       EXCEPTION
       WHEN OTHERS THEN
       INSERT INTO ERR_LOG VALUES('error details' )
       end:
    END LOOP;
    
    END;
    
  • Stopping everything in a loop after the last element of a 2D array

    How to stop a while loop after the last element of a 2d array.  I tried an uninitialized matrix wiring constant and comparison with table 2d, which has been indexed to a 1 d table, but that did not work.

    Hahaha, Hey, it's true what they say, a picture is worth a thousand words

  • Windows Installer loop after installation of the training software

    I have a MSI file missing because of training software now Installer is stuck in a loop, after that I tried to uninstall the program.p

    Hi MWRN,

    · What is the exact error message that you receive with the error code?

    · What is the service pack installed on the computer?

    · Do you remember any recent changes on the computer?

    Try the steps listed in the link below: how to solve the problems that may occur when you install, uninstall, or upgrade one program on a Windows computer: http://support.microsoft.com/kb/2438651

  • How to disable automatic reboot after BSOD XPSP3.

    It continues to, and I need to know how an automatic restart not after it BSOD, I can see this error message I receive.

    Preference does not change the registry, thank you.

    Make a right click my computer and select Properties. Click on the Advanced tab click settings under Startup and recovery. Under system failure, uncheck 'automatically restart '. Click OK.

  • Transaction is written to the log file and it is not written to undo tablespace. During a failure of the system how oracle rolls back the transaction.

    Hi all

    My question is:

    Transaction is written to the log file and it is not written to undo tablespace.

    During a failure of the system how oracle rolls back the transaction.

    I have already provided the answer, you ignored if well (you seem to only read the responses by people of your country).

    Redo log is always written * first * before * writing to the data block (redo log writing is much more aggressive). So it DOESN 'T MATTER if you lose these scriptures of rollback segment.

    Valuation: rear roller followed by roll forward, using redo log files and/or archive redo log files.

    Sybrand Bakker

    Senior Oracle DBA

  • Support the contact - person I'm trying to communicate with a person that I paid for my subscription to the CC and it is to show that I have not bought the product.  The page to contact technical support is a labyrinth and continues to loop back to the sa

    I am trying to contact a person that I paid for my subscription to the CC and it is to show that I have not bought the product.  The page contact technical support is a labyrinth and continues to loop back to the same place without giving me any contact information! Help, please!

    Move the debate towards Adobe Creative cloud

    We have checked your account details, we see active participation of Photography Photoshop program.  Please make sure that you are connected with correct Adobe Id to Adobe.com to get it. You can check:Adobe Store | Order FAQ and your online payment

    To install Creative Cloud app - https://helpx.adobe.com/creative-cloud/help/install-apps.html, you can also Learn how to enable or disable Adobe applications from here.

    Kindly let us know in case you have further questions on your membership.

    I hope this helps.

  • Premiere Pro debug event - Premiere Pro has encountered an error.  [..-.. \src\TickTime.cpp-290 button] continue alone. After you click Next message: Sorry, a serious error has occurred which requires Adobe Premiere Pro stop. We will try to save yo

    Premiere Pro debug event - Premiere Pro has encountered an error.  [..-.. \src\TickTime.cpp-290 button] continue alone. After you click Next message: Sorry, a serious error has occurred which requires Adobe Premiere Pro stop. We will try to save your current project.  Button OK I don t open my project - please help me! My project of losing many hours of work of panic!

    Hello

    Follow this: FAQ: how to fix projects that get an error "TickTime.cpp - 290" after opening a project.

    Thank you

    Regalo

  • How to continue using ESXi 4.1 in free mode?

    Well, I need to know how to continue to use ESXi 4.1 in free mode.

    I installed ESXi 4.1 vSphere and installed time-limited evaluation license.

    Now that the trial license has expired, how to return to the free license?

    I tried this: go to license Features, Edit, then "Assign an existing license key for this host" and chose "evaluation Mode...". (Not LicenseKey) "but he said I'm not a license.

    So, how can I continue using ESXi 4.1 in free mode after the use of time-limited evaluation license that has now expired?

    A detailed explanation of a person who has really, actually used an evaluation license and has successfully passed regularly in fr. old mode under license will be more appropriate.

    Thanks in advance.

    Once you have taken of / found your license free key just use the console vsphere and go to configuration | license and enter the key.

  • How to recover a database after you add a data since the last file backup.

    How to recover a database after you add a data file to a tablspace existing since the last user managed backup.

    PS: I am aware that the user managed backups are not used and RMAN is used these days.

    At the stage of the mount: select name from v$ datafile;
    The last entry indicates a file named /xxx/xxx/.../UNNAMEDXXX.dbf

    Now

    ALTER database create datafile ' / xxx/xxx/.../UNNAMEDXXX.dbf' as 'path_where_you_want_to_add_the_datafile ';

    The name of the data file must match the name that added in production

    This will create a data file to the required location.

    Once the file has been created, you can continue with recovery.

  • How to stop a loop?

    I have a bunch of lively type but it continues to loop and I want him to stop on the last keyframe. How do I add a "stop" action or can I just turn off the "loopback" somewhere?

    It is advisable to create a layer for actionscript, but it is not serious for the features.  layers do not yet exist in your swf file.

Maybe you are looking for

  • ICloud messages after the mac is restarted

    Dear people, I have a question When you start the mac I get every time iCloud messages (see the illustration) There are a lot of 10 they keep coming back very annoying Someone has an idea of what I can do about it? I have Mac OSX version 10.11.3 Than

  • I have a massive (10 pages) paper jam in my canon pixma mx432

    My printer was printing a job, when I noticed there was only 2 pieces of paper left so I tried to add a little more and he must have done at the wrong time... now there are 15 pages of paper stuck and I can see them at the entrance and the exit tight

  • It is legal to use Windows XP Home Edition for commercial purposes?

    I am facing issues of authority of the Indonesian Government on the use of Windows XP Edition family in my shop. Although my Windows certificate and had been forwarded to the audit conducted by the BSA software, the Government continues to officer in

  • Amplifier

    Dear Sir / Madam,. I recently bought a Linksys amplifier, in order to improve my network speed. I have a lenovo tablet laptop without a cd drive, so I downloaded setup of your site (version 3), but I get an error every time after about 90%. I have an

  • VLAN Tag vlan vs unidentified

    I am running Dell Power Connect 5548 and 5524 in an arrangement of battery on 3 floors. I have a question on the Middle floor by which DHCP addresses are not to be issued to clients in vlan 90 See below GFLOOR interface gigabitethernet1/0/48channel-g