Restarting failed BPEL instances in production

1. Assume there are 1000 transactions per hour. If one of the 3rd party services is down (say Oracle Apps) for an hour and 1000 bpel instances have failed, How do we restart the failed 1000 instances at the same time (or in a single click)? We want to avoid the administrator going and starting each BPEL instances separately.
2. If the BPEL flow has 10 activities in the flow and all instances have failed in the 6th activity (calling Oracle Apps Adapter service), when we restart the failed instance, Will it again redo the first 5 activities or will it start exactly from where it failed?
Thanks,
Joe

You said:
1 Assume there are 1000 transactions per hour. If one of the 3rd party services is down (say Oracle Apps) for an hour and 1000 bpel instances have failed, How do we restart the failed 1000 instances at the same time (or in a single click)? We want to avoid the administrator going and starting each BPEL instances separately.
It could be that processes are restarted by the BPEL PM by itself. Otherwise the message of the instances are recorded in the dehydration store. You can recover the message from this recover area via the BPEL console. You can selected them all and recover them at once. Or you create a Java program using the BPEL API to perform this. BUT it all depends on your process design! If a process fails, it should go into the exception flow and handled by the exception process, aka error-hosipital. If processes should be re-started you must design it.
2. If the BPEL flow has 10 activities in the flow and all instances have failed in the 6th activity (calling Oracle Apps Adapter service), when we restart the failed instance, Will it again redo the first 5 activities or will it start exactly from where it failed?
It depends in the process-type; synchronous or a-synchronous. A synchronous process will fail and restarteing should be done via the calling process, because the sync process does not dehydrate. An a-sync process will de-hydrate his process state on specific aktivities; receive/invoke/wait, when a process fails it will contuniue from his last process state.

Similar Messages

  • Manual Recovery of BPEL Instances -- Failed

    Hi
    I am facing some issue related to Manual Recovery Process. All my BPEL instances are sitting in the Manual Recovery Mode, when I try to Recover / Call the instances, the console if failing to deliver the Conversation ID.
    Can any one help me out..
    Regards
    Kirthi

    Hi,
    When I try to recover the instance that is waiting for manual recovery, I didn't see anything happening.
    Also the the fault policy is active and working fine during the retry intervals. That means If I disable one of the webservices and enable them during the retry it is success after some failure retries.
    Any ides why the recovery not working in SOA 10.1.3.3
    --Khaleel                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • BPEL instance getting restarted automatically

    Hi All,
    The BPEL instance is getting restarted automatically for every 10 minutes.
    Below is the error found in the log.
    Any help will be appareciated..
    <2010-08-27 18:15:43,486> <INFO> <collaxa> <ConnectionFactoryImpl::init> Initialized connection factory jdbc/BPELServerDataSourceWorkflow
    <2010-08-27 18:15:43,486> <INFO> <collaxa> <ConnectionFactoryImpl::init> Initialized connection factory jdbc/BPELServerDataSource
    10/08/27 18:15:43 System.getProperty(dehydration.store)=null
    <2010-08-27 18:15:44,044> <INFO> <collaxa> <ServerManager::__init> Detected datasource 'oracle'
    <2010-08-27 18:15:44,061> <INFO> <collaxa> <gsServerSchemaManager::validateCompatibility> Detected database version '2.0.4'
    <2010-08-27 18:15:44,062> <INFO> <collaxa> <ServerAdaptorManager::init> Initialized adaptors for platform 'ias_10g'
    10/08/27 18:15:45
    GMS: address is 10.90.188.91:11326
    -------------------------------------------------------

    Hi,
    Could some one please help me.
    I suppose it could be of a below property?
    Could some one please explain what this is all about?
    <web-app application="jamagent" name="jamagent" load-on-startup="true" root="/jamagent" ohs-routing="false" />

  • How to reinvoke Failed BPEL Process.

    Hi All,
    Is there any way to re-trigger the failed BPEL process?
    without copying the request xml from failed BPEL process and pasting this request xml to new instance of same service.
    Thanks in Advance
    Edited by: vikky123 on Feb 14, 2011 4:13 PM

    hi vikky
    There is no link available...
    You have edit instances.jsp pages and other related jsp pages* for both Synchrounous & Asynchronous ( methods / operations )
    go to the bpel console / testSuite URL location and see the jsp file ( may be xmlAudit*.jsp page) check that file.
    This file contains the PAYLOAD that you need to RE-Initiate..
    Thanks & Regards,
    anvv sharma

  • Make a BPEL instance recoverable from a BPEL fault hanler?

    Hi
    Does anybody know of a way to make a BPEL instance recoverable from a BPEL catch fault handler, e.g. using Java to programatically instruct the service engine to do the same thing as when using the fault management framework and fault policies to perform a human-intervention action?
    A scenario where this would be very useful is when you have a transformation that fails, e.g. due to missing values in a DVM or XREF. Then, instead of having to do a resend from the source system, you would solve the issue in the affected DVM or XREF and then recover the instance.
    Regards
    Lars

    Hi,
    I don't know of an expiclit way of achieving this directly from within a BPEL Fault handler (e.g. Java API Calls). However an approach i have used is to be a little creative with the use of additional components. You could either place the xForm in a spearate component. Thay way be invoking from the parent component the invoke will receive the fault. Hence your fault framework and fault policies can configure the appropraite actions beacuse the fault occurs on an invoke. Another approach is if you did not want to move the transform is to call a spearate component that just throws a fault. This would have a similar approach as the invoke would receive the fault.
    Regards Dave

  • Long Running Bpel Instance.

    Hi All,
    One of My bpel process spawns 100 child bpel process. out of which 60 are in recover(invokes), and 40 bpel processes are in running state.
    These 40 bpel instances are still in open.running state, even though I restarted the server.
    Can any one provide the reason for this?
    Thanks in Advance.

    Hi Ranjan,
    Our BPEL process was not showing any activity after DB adapter invocation and state was showing as open.running.
    So we went to "recover invoke" tab under "adminisrtation" tab and selected activity, so my process was recovered.
    Thanks for responding.

  • DB 7.8 Restart fails with SQL error -9407, unexpected error 3

    Hello,
    MaxDB Instance (7.8.01.18)  fails to restart with the error
    "SQL error -9407 System error: unexpected error 3
    Internal errorcode 6433 "system_error" 20017, Restart Filesystem failed with
    'System error unexpected error'
    9, File directory restart failed; error '3'
    31, Error linking entry to parent; file no '000000004066',
    parent file no '000000000000000000033D',
    file type 'IndexFile', error '11'
    We had the problem "[-8]: Execution failed, parse again" with one table,
    then we tried to restart the database. Now it doesn't come up any more.
    Is there another possibility instead of a recovery?
    Greetings
    Ulrich

    Your problem description sounds very similar to the following error:
    PTS1237652:
    "Appearance:
    Restart fails with file directory corruption:
    31,Error linking entry to parent; file no 'xxx', parent file no 'yyy', file type 'IndexFile', error '11'
    Preconditions and circumstances:
    During a recreate index operation the index was dropped and recreated manually.
    Workaround:
    None. The system must be recovered to the time just before the index was recreated."
    Please note that this is one of those issues that has only been fixed with 7.8.02. 7.8.02 is currently in customer testing, if anyone wants to join, just open a CSS message and test this version before we make it generally available for download.
    Best regards,
    Thorsten

  • Tracking: BPEL Instance Payload

    Hi All,
    I tried to look around for a solution in forums but could find one.
    I want to keep track of all the BPEL instances (Successful, Faulted, etc.,) payloads initially and at the end. For example inputVariable and outputVariable data.
    I saw that the paylod is logged in to XML_DOCUMENT table in orabpel schema. Do I need to use this table to keep tracking?
    Also I guess we can use sensors to log the payload to some temp tables and keep tracking.
    Is there any other better solution to achieve the above solution.
    If any one has implemented or has any good solution, please advise me (You can mail me at ramana.rangaraju at yahoo dot com). Any documentation or pointers are greatly appreciated.
    Thanks in advance.
    Regards
    Ramana.

    Hi Ramana,
    just another hint.
    You don't even have to use JMS/AQ. The sensor information can be stored in the database schema ORABPEL and will be accessible using the view orabpel.bpel_variable_sensor_values or your own customized view. If your sole aim is to monitor this data, a web-application could be sufficient.
    For more information see the ReportSchema tutorial provided with BPEL-Server
    (You should find it somewhere in a directory like oracle\product\10.1.3.1\OraBPEL_1\bpel\samples\tutorials\125.ReportsSchema)
    Kind regards
    Marco

  • How to delete the BPEL instance in Java code

    Hi all,
    How to delete the BPEL instance which I initiate in Java code?
    Thanks
    Jayson

    Hi,
    take a look here
    http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28986/toc.htm
    Interface IInstanceHandle
    void      delete()
    Delete the instance from the process domain.

  • Java.lang.OutOfMemoryError -- Is there a way to limit BPEL instances number

    Hi All,
    My BPEL process is using JMS adapter to read the JMS queue. Whenever a new message arrives, a new BPEL instance is created. However, when the message gets bigger and multiple messages arrive at queue at the same time, the OC4J gets java OutOfMemory (heap space) error and was forced shutdown. I'm wondering if there's any way to limit the BPEL instance created, say, only one at a time, and the messages would be processed in sequence. Would this be a good way to not use so much heap at one time? Is there a way to limit the BPEL instance created?
    Thanks for your help!
    Michelle

    Take a look at how to configure Jms polling interval (talks about a property that you can set to introduce a delay in between dequeues). That might be of some help to start with.
    It is supposed to work exactly the way you want it i.e the activation agent does a dequeue and hand off to bpel engine (which creates an instance and uses the same thread to run as much of that instance as possible i.e till the first dehydration point). So, if your process has a dehydration point right at the beginning (which could be due to invocation of another async process, or wait or ...), you could very well see this thread go right back and process the next available message.
    I believe this is a generic problem that is not necessarily jms adapter specific. One way would be to split up your process into three processes:
    1. "Kickoff" process which contains just a "receive" associated with the activation agent followed by an invocation of a "Controller" process
    2. "Controller" process which checks for the provided input as to which process it needs to invoke, and then goes on to check how many instances of that process are currently running; if this number is below a certain threshold, kick off the main process providing it the necessary payload gotten from the "KickOff" process
    3. "Main" process which is same as your current process except that it is a typical async process without the adapter "receive" partner link
    So, the idea being that for any process where you want to introduce a control-flow mechanism, you would split it into #1 and #3 above. Have one generic Controller process, which caters to all of the processes.
    Would be interested in learning if others have solved this in a generic way.

  • Where is the BPEL Instance payload stored in soa database?

    Hi all,
    Given an instance id, I need to get the payload used to invoke the BPEL.
    I searched in the soa database. Also I went through the bpel client apis. But I couldn't find any. Is there any table in the BPEL dehydration store that can give me the entire bpel instance input payload given the instance_id?
    Thanks,
    Shyamala

    Hi,
    have you tried to unzip the blob inside the xml_document table?
    the dockey is availalbe via document_ci_ref

  • Looking to use BPEL Instance and counter inside of a transformation

    I'm trying to find a way to include the BPEL instance and a counter within a BPEL transformation to create a unique key.
    Example, picking up files with multiple lines and no unique keys, each file is processed as a unique BPEL instance (key 1), and would like to use the row number (of the file, but not specified in the file) as the second key.
    My process takes a file from a file adapter and loads it into a database adapter if that helps.
    Any ideas would be appreciated.

    We ended up finding a Node-set Function -> Position to return the position inside of the dataset.

  • Sequential Instantiation of BPEL instances for a BPEL process

    Hi,
    We are using Oracle SOA 10.1.3.4 & AIA2.5. We have a situation where the instances of a particular bpel process have to be executed in sequence. Also, the new instance should NOT be instantiated unless the previous instance is completed.
    For example.. Lets say a SyncBPELReqABCS is invoking SyncBPELProvABCS via ESB. SyncBPELReqABCS is looping and spawning multiple instances of SyncBPELProvABCS in a certain sequential order in Asynchronous Fire-and-Forget model. Lets say bpel-instance#1, bpel-instance#2 and bpel-instance#3 are instances of SyncBPELProvABCS process. Even though SyncBPELReqABCS invokes (spawns) SyncBPELProvABCS in a fire and forget model, the bpel-instance#2 should not begin unless bpel-instance#1 is completed and bpel-instance#3 shuld not begin unless bpel-instance#2 is completed. This is because there is a dependancy between instacnes of SyncBPELProvABCS process.
    Can this be achieved in Oracle SOA?? Can we restrict the instacnes of SyncBPELProvABCS to be created in this manner?
    This is similar to "incompatability" of concurrent programs in ORACLE EBusiness Suite where one concurrent program waits till another concurrent program completes.
    Please let me know if I am not clear. Appreciate an immediate help!
    Thanks,

    Hello,
    Now that I look back at this tread, I can see that the questions I was asking and those of the original poster were somewhat different.
    But they both fall under the heading of "Sequential Instantiation of BPEL instances for a BPEL process", and so I thought I would post some findings we've come across regarding that topic here.
    There were a couple steps that helped us achieve the behavior we were looking for, and the were...
    1) Change the BPEL oneWayDeliveryPolicy from "async.persist" to "sync"
    This can be done in a couple locations. The first is within the EM application that comes bundled with SOA 11g, and the place to go is:EM > [farm name] > SOA > soa-infra (right click) > SOA Administration > BPEL Properties > More BPEL Configuration Properties > OneWayDeliveryPolicyOnce that value has been changed to "sync" (without the quotes), you'll need to stop and start the managed servers that run your SOA instance(s).
    As you might expect, making a change at the "server level" like this impacts the default behavior of all composites deployed within your SOA instance. The second place to make this change - within the deployment descriptors for your BPEL process - impacts only the BPEL process that is being modified. To make the change at this level, you would edit your project's composite.xml file and, for each BPEL component, specify:  <component name="BPELProcess1" version="2.0">
        <implementation.bpel src="BPELProcess1.bpel"/>
        <property name="bpel.config.oneWayDeliveryPolicy">sync</property>
        <property name="bpel.config.transaction">required</property>
      </component>What does this change do? Well, I don't claim to have a complete understanding, but in theory it prevents a thread handoff from taking place between the service that is initiates your BPEL process (like a receive) and the actual BPEL engine thread that processes the request.
    In our case, where calls between (and within) composites were all of the synchronous "fire and forget" variety, this change also caused the entire processing of a message (across three different composites) to happen in a single thread (each message handoff was one-way, and with the oneWayDeliveryPolicy set to "sync", each was handled in a synchronous manner).
    This also seemed to have the effect of serializing our message processing. For example, in a test case where a BPEL process reads from a JMS queue and 250 messages are enqueued, with the oneWayDeliveryPolicy set to "async.persist", I'd typically go in to EM and, on each refresh, find 5-8 instances of the composite that processes those messages to be in a "Running" state. Once the change to "sync" was made, I'd only see at most only 2 (where one had actually already finished; the audit system just hadn't yet caught up to that fact yet).
    This also means that, with a "sync" delivery policy, messages (at least in our environment) are processed more slowly, but that was ok with us as we were more concerned with the behavior than the speed.
    For details on this and other BPEL deployment descriptor properties, see:
    http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10224/bp_app_deploydesc.htm
    Also, it's important to note that making the above change will alter the boundaries of your transactions as well as how faults are propagated. For more details, see:
    http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10224/soa_transactions.htm
    2) Front BPEL process with a Mediator object and enable message resequencing
    While we're using the above change as a standard practice in our environment, this second change has only been nominally tested - but it could be of interest and so I'll mention it here.
    Once you've updated your composite to include a mediator object in front of your BPEL process (if there isn't one there already), edit the .mplan for your mediator and change the "Resequence Level" from the default value of "operations" to "component". Then change the "Resequence Mode" from "off" to "FIFO" and specify an X-Path expression by which the mediator will be able to group your messages. This will help ensure that the messages are being processed in the order you expect.
    More information about resequencing within the mediator component can be found:
    http://download.oracle.com/docs/cd/E14571_01/integration.1111/e10224/med_resequencer.htm
    Hopefully the above information is useful - if not for the original poster, then for someone who comes along later with similar questions.
    - Nathan

  • OWB 9.0.4 ability to restart failed ETL jobs ?

    Hi all,
    Does OWB 9.0.4 provide the ability to restart failed ETL jobs ?
    For example in a Module of 20 mappings, 15 mappings have completed with success. Mapping 16 fails and hence OWF exists with failure. In the event the problem is rectified can OWB restart at mapping 16 rather than from mapping 1.
    Regards
    Nick

    Nick,
    At the moment there is no way to explicitly start from mapping 16, unless there are specific conditions that caused your mapping to fail.
    For example, if you have enabled resumable statements on the database level and your mapping would run into a situation where these can be leveraged (e.g. you run out of tablespace) then you could resume the execution and the process flow would continue.
    Also, if there is an external situation that causes your execution to fail (e.g. mapping does not exist) then you can use Workflow's restart capabilities to resume.
    If however there is a data reason why a mapping fails, then you will have to manually intervene and resolve the process. If your mappings have been defined in such a way that only changed data is being captured (may be a good idea after all...) then you could just rerun the entire process flow. In other cases... I am afraid you'll have to go in manually to execute the individual mappings and fix the process flow as such.
    Mark.

  • AWR snapsohots not generating after restart of the instance

    oracle : 10.2.0.3
    OS : Linux 64-bit
    Issue : AWR snapshots are being generated after restart of the instance.
    I restarted the instance at 31.01.2010 8 AM CST.
    SQL> select STARTUP_TIME from  v$instance;
    STARTUP_T
    31-JAN-10
    SQL> select max(begin_interval_time)   from DBA_HIST_SNAPSHOT
      2  /
    MAX(BEGIN_INTERVAL_TIME)
    31-JAN-10 08.00.04.996 AMto my surprise the AWR reports are not being generated from 8 AM till now 8PM.
    What could be the reason ? Do I need to do any thing manual initiation ?
    Edited by: [email protected] on Feb 1, 2010 8:41 AM

    SELECT STARTUP_TIME     FROM DBA_HIST_SNAPSHOT WHERE STARTUP_TIME > TRUNC(SYSDATE);
    post results from SQL above

Maybe you are looking for