Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2005, JBoss Inc., and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jbpm.jms;
 
 
Individual job processing command.

Author(s):
Alejandro Guizar
 
 public class ExecuteJobCommand implements Command {
 
   private final long jobId;
 
   private static final long serialVersionUID = 1L;
   private static final Log log = LogFactory.getLog(ExecuteJobCommand.class);
 
   public ExecuteJobCommand(long jobId) {
     this. = jobId;
   }
 
   public Object execute(JbpmContext jbpmContextthrows Exception {
     Job job = acquireJob(jbpmContext);
     if (job != nullexecuteJob(jobjbpmContext);
     return job;
   }
 
   private static Job acquireJob(long jobIdJbpmContext jbpmContext) {
     boolean debug = .isDebugEnabled();
     if (debug.debug("acquiring job: " + jobId);
     Job job = jbpmContext.getJobSession().getJob(jobId);
 
     // job could have been deleted manually
     // or by ending the process instance
     if (job != null) {
       // register process instance for automatic save
       // see https://jira.jboss.org/jira/browse/JBPM-1015
       ProcessInstance processInstance = job.getProcessInstance();
       jbpmContext.addAutoSaveProcessInstance(processInstance);
 
       // if job is exclusive, lock process instance
       if (job.isExclusive()) {
         jbpmContext.getGraphSession().lockProcessInstance(processInstance);
       }
 
       // mark job as locked to prevent it from being deleted
       job.setLockOwner(Thread.currentThread().getName());
       if (debug.debug("acquired " + job);
     }
     else {
       .warn("job not found: " + jobId);
     }
 
     return job;
   }
 
   private static void executeJob(Job jobJbpmContext jbpmContextthrows Exception {
     if (.isDebugEnabled()) .debug("executing " + job);
     if (job.execute(jbpmContext)) {
       // clear job
       jbpmContext.getJobSession().deleteJob(job);
     }
     else {
       // job is a repetitive timer
       Timer timer = jbpmContext.getJobSession().loadTimer(job.getId());
       JmsConnectorService schedulerService = (JmsConnectorServicejbpmContext.getServices()
         .getSchedulerService();
       schedulerService.sendMessage(timer);
     }
   }
 
   @Override
  public String toString() {
    return "ExecuteJobCommand(" +  + ")";
  }
New to GrepCode? Check out our FAQ X