Commit 49a4e85b authored by Brian Long's avatar Brian Long
Browse files

add TaskApi

parent ebc5b304
Loading
Loading
Loading
Loading
+133 −0
Original line number Diff line number Diff line
/*
 * This program 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 3 of the License, or (at your
 * option) any later version.
 * 
 * This program 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 General Public License for
 * more details.
 * 
 * You should have received a copy of the GNU General Public License along
 * with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
package com.inteligr8.activiti.api;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.inteligr8.activiti.model.ProcessInstance;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.Task;
import com.inteligr8.activiti.model.TaskAction;
import com.inteligr8.activiti.model.TasksQueryParams;
import com.inteligr8.activiti.model.Variable;
import com.inteligr8.activiti.model.VariableScope;

import jakarta.ws.rs.BeanParam;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.DefaultValue;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;

@Path("/api/runtime/tasks")
public interface TaskApi {
    
    public enum Sort {
        @JsonProperty("createTime")
        CreateTime,
        @JsonProperty("dueDate")
        DueDate,
        @JsonProperty("priority")
        Priority,
        @JsonProperty("tenantId")
        TenantId,
        @JsonProperty("taskDefinitionKey")
        TaskDefinitionKey;
    }

    @GET
    @Path("{taskId}")
    @Produces({ MediaType.APPLICATION_JSON })
    Task get(
            @PathParam("taskId") String taskId);

    @DELETE
    @Path("{taskId}")
    void delete(
            @PathParam("taskId") String taskId,
            @QueryParam("cascadeHistory") @DefaultValue("false") Boolean cascadeHistory,
            @QueryParam("deleteReason") String deleteReason);

    @PUT
    @Path("{taskId}")
    @Consumes({ MediaType.APPLICATION_JSON })
    void update(
            @PathParam("taskId") String taskId,
            Task task);

    @POST
    @Path("{taskId}")
    @Consumes({ MediaType.APPLICATION_JSON })
    void act(
            @PathParam("taskId") String taskId,
            TaskAction action);

    @GET
    @Produces({ MediaType.APPLICATION_JSON })
    public ResultList<ProcessInstance> query(
            @BeanParam TasksQueryParams params);

    @GET
    @Path("{taskId}/variables")
    @Produces({ MediaType.APPLICATION_JSON })
    List<Variable> getVariables(
            @PathParam("taskId") String taskId,
            @QueryParam("scope") VariableScope scope);

    @GET
    @Path("{taskId}/variables/{variableName}")
    @Produces({ MediaType.APPLICATION_JSON })
    Variable getVariable(
            @PathParam("taskId") String taskId,
            @PathParam("variableName") String variableName,
            @QueryParam("scope") VariableScope scope);

    @POST
    @Path("{taskId}/variables")
    @Consumes({ MediaType.APPLICATION_JSON })
    void createVariables(
            @PathParam("taskId") String taskId,
            List<Variable> variables);
    
    @PUT
    @Path("{taskId}/variables/{variableName}")
    @Consumes({ MediaType.APPLICATION_JSON })
    void updateVariable(
            @PathParam("taskId") String taskId,
            @PathParam("variableName") String variableName,
            Variable variable);
    
    @DELETE
    @Path("{taskId}/variables/{variableName}")
    @Consumes({ MediaType.APPLICATION_JSON })
    void deleteVariable(
            @PathParam("taskId") String taskId,
            @PathParam("variableName") String variableName,
            @QueryParam("scope") VariableScope scope);
    
    @DELETE
    @Path("{taskId}/variables")
    @Consumes({ MediaType.APPLICATION_JSON })
    void deleteTaskVariables(
            @PathParam("taskId") String taskId);

}
+381 −0
Original line number Diff line number Diff line

package com.inteligr8.activiti.model;

import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.inteligr8.alfresco.activiti.model.Variable;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "assignee",
    "createTime",
    "delegationState",
    "description",
    "dueDate",
    "executionId",
    "executionUrl",
    "id",
    "name",
    "owner",
    "parentTaskId",
    "parentTaskUrl",
    "priority",
    "processDefinitionId",
    "processDefinitionUrl",
    "processInstanceId",
    "processInstanceUrl",
    "suspended",
    "taskDefinitionKey",
    "tenantId",
    "url",
    "variables"
})
public class Task extends Datum {

    @JsonProperty("assignee")
    private String assignee;
    @JsonProperty("createTime")
    @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXX")
    private OffsetDateTime createTime;
    @JsonProperty("delegationState")
    private DelegationState delegationState;
    @JsonProperty("description")
    private String description;
    @JsonProperty("dueDate")
    @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXX")
    private OffsetDateTime dueDate;
    @JsonProperty("executionId")
    private String executionId;
    @JsonProperty("executionUrl")
    private String executionUrl;
    @JsonProperty("id")
    private String id;
    @JsonProperty("name")
    private String name;
    @JsonProperty("owner")
    private String owner;
    @JsonProperty("parentTaskId")
    private String parentTaskId;
    @JsonProperty("parentTaskUrl")
    private String parentTaskUrl;
    @JsonProperty("priority")
    private Integer priority;
    @JsonProperty("processDefinitionId")
    private String processDefinitionId;
    @JsonProperty("processDefinitionUrl")
    private String processDefinitionUrl;
    @JsonProperty("processInstanceId")
    private String processInstanceId;
    @JsonProperty("processInstanceUrl")
    private String processInstanceUrl;
    @JsonProperty("suspended")
    private Boolean suspended;
    @JsonProperty("taskDefinitionKey")
    private String taskDefinitionKey;
    @JsonProperty("tenantId")
    private String tenantId;
    @JsonProperty("url")
    private String url;
    @JsonProperty("variables")
    private List<Variable> variables = new ArrayList<Variable>();

    /**
     * No args constructor for use in serialization
     */
    public Task() {
    }

    public String getAssignee() {
        return assignee;
    }
    
    public void setAssignee(String assignee) {
        this.assignee = assignee;
    }

    public Task withAssignee(String assignee) {
        this.assignee = assignee;
        return this;
    }

    public OffsetDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(OffsetDateTime created) {
        this.createTime = created;
    }

    public Task withCreateTime(OffsetDateTime created) {
        this.createTime = created;
        return this;
    }
    
    public DelegationState getDelegationState() {
        return delegationState;
    }
    
    public void setDelegationState(DelegationState delegationState) {
        this.delegationState = delegationState;
    }
    
    public Task withDelegationState(DelegationState delegationState) {
        this.delegationState = delegationState;
        return this;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Task withDescription(String description) {
        this.description = description;
        return this;
    }

    public OffsetDateTime getDueDate() {
        return dueDate;
    }

    public void setDueDate(OffsetDateTime dueDate) {
        this.dueDate = dueDate;
    }

    public Task withDueDate(OffsetDateTime dueDate) {
        this.dueDate = dueDate;
        return this;
    }

    public String getExecutionId() {
        return executionId;
    }

    public void setExecutionId(String executionId) {
        this.executionId = executionId;
    }

    public Task withExecutionId(String executionId) {
        this.executionId = executionId;
        return this;
    }
    
    public String getExecutionUrl() {
        return executionUrl;
    }
    
    public void setExecutionUrl(String executionUrl) {
        this.executionUrl = executionUrl;
    }
    
    public Task withExecutionUrl(String executionUrl) {
        this.executionUrl = executionUrl;
        return this;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Task withId(String id) {
        this.id = id;
        return this;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Task withName(String name) {
        this.name = name;
        return this;
    }
    
    public String getOwner() {
        return owner;
    }
    
    public void setOwner(String owner) {
        this.owner = owner;
    }
    
    public Task withOwner(String owner) {
        this.owner = owner;
        return this;
    }

    public String getParentTaskId() {
        return parentTaskId;
    }

    public void setParentTaskId(String parentTaskId) {
        this.parentTaskId = parentTaskId;
    }

    public Task withParentTaskId(String parentTaskId) {
        this.parentTaskId = parentTaskId;
        return this;
    }
    
    public String getParentTaskUrl() {
        return parentTaskUrl;
    }
    
    public void setParentTaskUrl(String parentTaskUrl) {
        this.parentTaskUrl = parentTaskUrl;
    }

    public Task withParentTaskUrl(String parentTaskUrl) {
        this.parentTaskUrl = parentTaskUrl;
        return this;
    }

    public Integer getPriority() {
        return priority;
    }

    public void setPriority(Integer priority) {
        this.priority = priority;
    }

    public Task withPriority(Integer priority) {
        this.priority = priority;
        return this;
    }

    public String getProcessDefinitionId() {
        return processDefinitionId;
    }

    public void setProcessDefinitionId(String processDefinitionId) {
        this.processDefinitionId = processDefinitionId;
    }

    public Task withProcessDefinitionId(String processDefinitionId) {
        this.processDefinitionId = processDefinitionId;
        return this;
    }

    public String getProcessDefinitionUrl() {
        return processDefinitionUrl;
    }

    public void setProcessDefinitionUrl(String processDefinitionUrl) {
        this.processDefinitionUrl = processDefinitionUrl;
    }

    public Task withProcessDefinitionUrl(String processDefinitionUrl) {
        this.processDefinitionUrl = processDefinitionUrl;
        return this;
    }

    public String getProcessInstanceId() {
        return processInstanceId;
    }

    public void setProcessInstanceId(String processInstanceId) {
        this.processInstanceId = processInstanceId;
    }

    public Task withProcessInstanceId(String processInstanceId) {
        this.processInstanceId = processInstanceId;
        return this;
    }
    
    public String getProcessInstanceUrl() {
        return processInstanceUrl;
    }
    
    public void setProcessInstanceUrl(String processInstanceUrl) {
        this.processInstanceUrl = processInstanceUrl;
    }

    public Task withProcessInstanceUrl(String processInstanceUrl) {
        this.processInstanceUrl = processInstanceUrl;
        return this;
    }

    public Boolean getSuspended() {
        return suspended;
    }

    public void setSuspended(Boolean suspended) {
        this.suspended = suspended;
    }

    public Task withSuspended(Boolean suspended) {
        this.suspended = suspended;
        return this;
    }

    public String getTaskDefinitionKey() {
        return taskDefinitionKey;
    }

    public void setTaskDefinitionKey(String taskDefinitionKey) {
        this.taskDefinitionKey = taskDefinitionKey;
    }

    public Task withTaskDefinitionKey(String taskDefinitionKey) {
        this.taskDefinitionKey = taskDefinitionKey;
        return this;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public Task withTenantId(String tenantId) {
        this.tenantId = tenantId;
        return this;
    }
    
    public String getUrl() {
        return url;
    }
    
    public void setUrl(String url) {
        this.url = url;
    }
    
    public Task withUrl(String url) {
        this.url = url;
        return this;
    }

    public List<Variable> getVariables() {
        return variables;
    }

    public void setVariables(List<Variable> variables) {
        this.variables = variables;
    }

    public Task withVariables(List<Variable> variables) {
        this.variables = variables;
        return this;
    }

}
+78 −0
Original line number Diff line number Diff line
package com.inteligr8.activiti.model;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class TaskAction {

    public enum ActionValue {
        @JsonProperty("complete")
        Complete,
        @JsonProperty("claim")
        Claim,
        @JsonProperty("delegate")
        Delegate,
        @JsonProperty("resolve")
        Resolve
    }
    
    @JsonProperty("action")
    private ActionValue action;
    @JsonProperty("assignee")
    private String assignee;
    @JsonProperty("variables")
    private List<Variable> variables;

    /**
     * No args constructor for use in serialization
     */
    public TaskAction() {
    }
    
    public TaskAction(ActionValue action) {
        this.action = action;
    }

    public ActionValue getAction() {
        return action;
    }

    public void setAction(ActionValue action) {
        this.action = action;
    }

	public TaskAction withAction(ActionValue action) {
        this.action = action;
        return this;
    }

    public String getAssignee() {
        return assignee;
    }
    
    public void setAssignee(String assignee) {
        this.assignee = assignee;
    }

    public TaskAction withAssignee(String assignee) {
        this.assignee = assignee;
        return this;
    }
	
	public List<Variable> getVariables() {
        return variables;
    }
	
	public void setVariables(List<Variable> variables) {
        this.variables = variables;
    }
    
    public TaskAction withVariables(List<Variable> variables) {
        this.variables = variables;
        return this;
    }

}
+660 −0

File added.

Preview size limit exceeded, changes collapsed.