[jboss-user] [JBoss jBPM] - Re: Threads and jbpm
jcarlos_andia
do-not-reply at jboss.com
Mon Feb 11 15:37:07 EST 2008
Solved. Created the timer within an ActionHandler:
First define an event on the state:
| public void createTimer(State myState){
| Delegation delegate=new Delegation("com.jotatech.vgrc.action.visual.MyActionHandler");
|
| Event myEvent=new Event(Event.EVENTTYPE_NODE_ENTER);
|
| Action myAction=new Action(delegate);
| myAction.setName("[ACTION]");
|
| myEvent.addAction(myAction);
|
| myState.setAction(myAction);
| myState.addEvent(myEvent);
| }
|
Then in the ActionHandler:
| public class MyActionHandler implements ActionHandler{
|
| private static final long serialVersionUID = -7574831777028763706L;
|
| public void execute(ExecutionContext context) throws Exception{
|
| if(context.getTimer()==null){
| System.out.println("ADDING TIMER ...");
| Calendar cal=Calendar.getInstance();
| BusinessCalendar bc=new BusinessCalendar();
| Duration duration=new Duration("20 seconds");
| Date dueDate=bc.add(cal.getTime(), duration);
|
| Timer myTimer=new Timer();
| myTimer.setName("[TIMER] "+context.getEventSource().getName());
| myTimer.setDueDate(dueDate);
| myTimer.setRepeat("20 seconds");
| myTimer.setRetries(3);
|
| myTimer.setAction(context.getAction());
|
| context.setTimer(myTimer);
|
| context.getJbpmContext().getServices().getSchedulerService().createTimer(myTimer);
| }else{
| System.out.println("EXECUTING ...");
| /* CODE YOU WANT THE TIMER TO EXECUTE */
| }
| }
|
Hope this helps anybody with the same problem. Question: how can I inject a SEAM component or a Stateful session bean in the timer? I mean: I can't do Component.getInstance("SEAMComponent") or Component.getInstance("MySFSB"). Maybe a way to merge both SEAM and JBPM Contexts? Thanks in advance.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4128486#4128486
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4128486
More information about the jboss-user
mailing list