All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.effektif.workflow.impl.job.Job Maven / Gradle / Ivy

/*
 * Copyright 2014 Effektif GmbH.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.effektif.workflow.impl.job;

import java.util.LinkedList;

import org.joda.time.LocalDateTime;

import com.effektif.workflow.api.json.JsonIgnore;
import com.effektif.workflow.api.model.WorkflowId;
import com.effektif.workflow.api.model.WorkflowInstanceId;
import com.effektif.workflow.impl.util.Time;
import com.effektif.workflow.impl.workflowinstance.ActivityInstanceImpl;
import com.effektif.workflow.impl.workflowinstance.LockImpl;


/**
 * @author Tom Baeyens
 */
public class Job {
  
  // private static final Logger log = LoggerFactory.getLogger(Job.class);

  public JobService jobService;

  public JobType jobType;
  
  public String id;
  public String key;
  public LocalDateTime dueDate;
  public LockImpl lock;
  public LinkedList executions;
  /** retries left.  null when no retries have been performed. 0 when this job has permanently failed. */
  public Long retries;
  public Long retryDelay;
  public LocalDateTime done;
  public Boolean dead;

  public String organizationId;
  public String sourceWorkflowId;
  public WorkflowId workflowId;
  public WorkflowInstanceId workflowInstanceId;
  public String activityInstanceId;

  public boolean isDue() {
    return dueDate ==null || dueDate.compareTo(Time.now())<=0;
  }

  public boolean isDone() {
    return done!=null;
  }

  public boolean isDead() {
    return Boolean.TRUE.equals(dead);
  }
  
  /** setting the id means the job service will ensure there is 
   * exactly 1 such job in the system. */
  public Job key(String key) {
    this.key = key;
    return this;
  }

  /** convenience method to set all activity instance related properties in one go */
  public Job activityInstance(ActivityInstanceImpl activityInstance) {
    activityInstanceId(activityInstance.getId());
    workflowInstanceId(activityInstance.getWorkflowInstance().getId());
    workflowId(activityInstance.getWorkflowInstance().getWorkflow().getId());
    sourceWorkflowId(activityInstance.getWorkflowInstance().getWorkflow().getSourceWorkflowId());
    return this;
  }

  public Job activityInstanceId(String activityInstanceId) {
    this.activityInstanceId = activityInstanceId;
    return this;
  }
  
  public Job done(LocalDateTime done) {
    this.done = done;
    return this;
  }
  
  public Job dueDate(LocalDateTime dueDate) {
    this.dueDate = dueDate;
    return this;
  }
  
  public Job lock(LockImpl lock) {
    this.lock = lock;
    return this;
  }
  
  public Job organizationId(String organizationId) {
    this.organizationId = organizationId;
    return this;
  }
  
  public Job sourceWorkflowId(String sourceWorkflowId) {
    this.sourceWorkflowId = sourceWorkflowId;
    return this;
  }
  
  public Job workflowId(WorkflowId workflowId) {
    this.workflowId = workflowId;
    return this;
  }
  
  public Job workflowInstanceId(WorkflowInstanceId workflowInstanceId) {
    this.workflowInstanceId = workflowInstanceId;
    return this;
  }
  
  public Job jobType(JobType jobType) {
    this.jobType = jobType;
    return this;
  }
  
  public Boolean getDead() {
    return dead;
  }
  
  public void setDead(Boolean dead) {
    this.dead = dead;
  }

  public void rescheduleFromNow(int delayInMillis) {
    rescheduleFor(Time.now().plusMillis((int)delayInMillis));
  }

  public void rescheduleFor(LocalDateTime dueDate) {
    this.dueDate = dueDate;
  }

  
  public JobService getJobService() {
    return jobService;
  }

  
  public JobType getJobType() {
    return jobType;
  }

  
  public String getId() {
    return id;
  }

  
  public String getKey() {
    return key;
  }

  
  public LocalDateTime getDueDate() {
    return dueDate;
  }

  
  public LockImpl getLock() {
    return lock;
  }

  
  public LinkedList getExecutions() {
    return executions;
  }

  
  public Long getRetries() {
    return retries;
  }

  
  public Long getRetryDelay() {
    return retryDelay;
  }

  
  public LocalDateTime getDone() {
    return done;
  }

  
  public String getOrganizationId() {
    return organizationId;
  }

  
  public String getSourceWorkflowId() {
    return sourceWorkflowId;
  }

  
  public WorkflowId getWorkflowId() {
    return workflowId;
  }

  
  public WorkflowInstanceId getWorkflowInstanceId() {
    return workflowInstanceId;
  }

  
  public String getActivityInstanceId() {
    return activityInstanceId;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy