Some 'more, in-depth' information on Oracle BPEL PM, ESB and other SOA, day2day things

Tuesday, April 11, 2006

BPEL: Scheduling reoccuring processes

After seing some questions around periodically starting new BPELProcess instances, I thought to publish some ideas here...

Suppose you want to have a new process triggered every minute, what are the options?

  • Implement a master process, that has a <while> and a <wait> that is configured for the time to make the process sleepling

    • Advantage: It's BPEL

    • Disadvantage: As it contains a wait and some other activities that might lead to (de)hydration, you fill you database



  • Use the Oracle RDBMS Job Scheduler (dbms_job package) that will start your process periodically

    • Advantage: One time implemented, backed up with the DB, and pattform independend

    • Disadvantage: It's bound to an Oracle DB, and you need to know at least some pl\sql, the rest is java



  • Use a Timer EJB (provided with a j2ee compliant java container)

    • Advantage: it's a statefull bean, so it will get saved, and revovered when the container goes down, use java to implement

    • Disadvantage: Dependend on the container you are using



  • Use QUARTZ, the open source scheduler

    • Advantage: It's opensource and Oracle BPELPM uses it for scheduling





Having questions? send your feedback on Scheduling reoccuring processes here

9 Comments:

Anonymous Anonymous said...

Where can i get information about a Oracle job initiating a BPEL process

Thanks
Satish

1:59 PM

 
Anonymous Anonymous said...

You can create a PLSQL stored procedure to invoke your BPEL process and schedule it using DBMS_JOB (DBMS_SCHEDULER in Oracle 10g).
Read this http://www.oracle.com/technology/tech/webservices/htdocs/samples/dbwebservice/DBWebServices_PLSQL.html
and this http://www.oracle.com/technology/products/database/scheduler/index.html

10:09 PM

 
Anonymous Anonymous said...

Hi Clemen,
We use DBMS_SCHEDULER to invoke PL/SQL procedure which calls BPEL Process(=WS).
I've read http://www.oracle.com/technology/tech/webservices/htdocs/samples/dbwebservice/DBWebServices_PLSQL.html
and build it. Everything works fine except an issue with demo_soap.add_parameter which is designed only for
simple data types. I need to pass complex xml doc as an input parameter. Do you have any ideas?
Thank you in advance.
Sergey.

10:11 PM

 
Anonymous Alex said...

Does anyone have any information on how to create a Quartz scheduled job given that it is embedded somewhere within orabpel?

For instance, we have found the following files:

OraHome_1/integration/orabpel/domains/default/config/quartz-config.properties
OraHome_1/integration/orabpel/system/appserver/oc4j/j2ee/home/applications/owf/owf/WEB-INF/quartz.properties
OraHome_1/integration/orabpel/system/services/config/owf_quartz.properties

However, it is unclear from these files what you actually need to do with them.

Are you saying that there is someway of configuring a job within the Oracle configuration files, or do you have to do that separately as you would normalling with Quartz? If so, how?

Thanks

4:20 AM

 
Blogger Peter Lorenzen said...

Hi Clemen,

I would like to use the BPEL approach but I get this error: "Initial activity is invalid. An initial activity must be of a receive or pick activity" How do I get around this?

3:13 PM

 
Blogger Peter Lorenzen said...

Hi Clemen,

I would like to use the BPEL approach but I get this error: "Initial activity is invalid. An initial activity must be of a receive or pick activity" How do I get around this?

3:15 PM

 
Anonymous Roman said...

Peter, if your process doesn't start with a receive, try to wrap it...
Roman

11:21 AM

 
Blogger Peter Lorenzen said...

Thanks Roman,

But how? :-)

4:00 PM

 
Blogger senthil said...

Hi Clemens,

I am trying to start a BPEL process according to a timed schedule using the Quartz Scheduler, for eg. everyday at 7.30pm

I inserted the following lines of code in bpel.xml

(activationAgents)
(activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink=" File_QuartzScheduler " heartBeatInterval="10")
(property name="schedulerCallout")DefaultSchedulerCalloutImpl(/property)
(property name="endpointScheduleOn")0 30 19 * * ?(/property)
(property name="endpointScheduleOff")0 31 19 * * ?(/property)
(/activationAgent)
(/activationAgents)

8:35 AM

 

Post a Comment

<< Home