diff --git a/src/main/java/com/inteligr8/activiti/ActivitiPublicRestApi.java b/src/main/java/com/inteligr8/activiti/ActivitiPublicRestApi.java new file mode 100644 index 0000000..00c0b7c --- /dev/null +++ b/src/main/java/com/inteligr8/activiti/ActivitiPublicRestApi.java @@ -0,0 +1,33 @@ +/* + * 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 . + */ +package com.inteligr8.activiti; + +import com.inteligr8.activiti.api.ManagementApi; + +/** + * This interface consolidates the JAX-RS APIs available in the open-source + * Activiti Public ReST API. + * + * @author brian@inteligr8.com + */ +public interface ActivitiPublicRestApi { + + T getApi(Class apiClass); + + default ManagementApi getManagementApi() { + return this.getApi(ManagementApi.class); + } + +} diff --git a/src/main/java/com/inteligr8/activiti/api/ManagementApi.java b/src/main/java/com/inteligr8/activiti/api/ManagementApi.java new file mode 100644 index 0000000..4ce3e80 --- /dev/null +++ b/src/main/java/com/inteligr8/activiti/api/ManagementApi.java @@ -0,0 +1,173 @@ +/* + * 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 . + */ +package com.inteligr8.activiti.api; + +import java.io.File; +import java.time.LocalDate; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.inteligr8.activiti.model.Engine; +import com.inteligr8.activiti.model.EngineProperties; +import com.inteligr8.activiti.model.ExecuteAction; +import com.inteligr8.activiti.model.ExecuteAction.Action; +import com.inteligr8.activiti.model.Job; +import com.inteligr8.activiti.model.ResultList; + +@Path("/api/management") +public interface ManagementApi { + + public enum JobType { + @JsonProperty("jobs") + Job, + @JsonProperty("deadletter-jobs") + DeadletterJob + } + + @GET + @Path("engine") + @Produces({ "application/json" }) + public Engine getEngine(); + + @GET + @Path("properties") + @Produces({ "application/json" }) + public EngineProperties getEngineProperties(); + + @GET + @Path("{jobType}/{jobId}") + @Produces({ "application/json" }) + public Job getJob( + @PathParam("jobType") JobType jobType, + @PathParam("jobId") String jobId); + + @DELETE + @Path("{jobType}/{jobId}") + public void deleteJob( + @PathParam("jobType") JobType jobType, + @PathParam("jobId") String jobId); + + @POST + @Path("{jobType}/{jobId}") + @Consumes({ "application/json" }) + public void executeJob( + @PathParam("jobType") JobType jobType, + @PathParam("jobId") String jobId, + ExecuteAction execute); + + default void executeJob( + JobType jobType, + String jobId, + Action action) { + this.executeJob(jobType, jobId, new ExecuteAction(action)); + } + + default void executeJob( + JobType jobType, + String jobId) { + this.executeJob(jobType, jobId, new ExecuteAction(Action.Execute)); + } + + @GET + @Path("{jobType}/{jobId}/execution-stacktrace") + @Produces({ "application/octet-stream" }) + public File getJobStacktrace( + @PathParam("jobType") JobType jobType, + @PathParam("jobId") String jobId); + + @GET + @Path("{jobType}") + @Produces({ "application/json" }) + public ResultList queryJobs( + @PathParam("jobType") JobType jobType, + @QueryParam("id") String jobId, + @QueryParam("processInstanceId") String processInstanceId, + @QueryParam("executionId") String executionId, + @QueryParam("processDefinitionId") String processDefinitionId, + @QueryParam("withRetriesLeft") Boolean withRetriesLeft, + @QueryParam("executable") Boolean executable, + @QueryParam("timersOnly") Boolean timersOnly, + @QueryParam("messagesOnly") Boolean messagesOnly, + @QueryParam("withException") Boolean withException, + @QueryParam("dueBefore") LocalDate dueBefore, + @QueryParam("dueAfter") LocalDate dueAfter, + @QueryParam("exceptionMessage") String exceptionMessage, + @QueryParam("withoutTenantId") Boolean withoutTenatId, + @QueryParam("sort") String sort); + + @GET + @Path("{jobType}") + @Produces({ "application/json" }) + public ResultList queryJobs( + @PathParam("jobType") JobType jobType, + @QueryParam("id") String jobId, + @QueryParam("processInstanceId") String processInstanceId, + @QueryParam("executionId") String executionId, + @QueryParam("processDefinitionId") String processDefinitionId, + @QueryParam("withRetriesLeft") Boolean withRetriesLeft, + @QueryParam("executable") Boolean executable, + @QueryParam("timersOnly") Boolean timersOnly, + @QueryParam("messagesOnly") Boolean messagesOnly, + @QueryParam("withException") Boolean withException, + @QueryParam("dueBefore") LocalDate dueBefore, + @QueryParam("dueAfter") LocalDate dueAfter, + @QueryParam("exceptionMessage") String exceptionMessage, + @QueryParam("tenantId") String tenantId, + @QueryParam("tenantIdLike") String tenantIdLike, + @QueryParam("sort") String sort); + + default ResultList queryTimerJobs( + JobType jobType, + @QueryParam("id") String jobId, + @QueryParam("processInstanceId") String processInstanceId, + @QueryParam("executionId") String executionId, + @QueryParam("processDefinitionId") String processDefinitionId, + @QueryParam("withRetriesLeft") Boolean withRetriesLeft, + @QueryParam("executable") Boolean executable, + @QueryParam("withException") Boolean withException, + @QueryParam("dueBefore") LocalDate dueBefore, + @QueryParam("dueAfter") LocalDate dueAfter, + @QueryParam("exceptionMessage") String exceptionMessage, + @QueryParam("withoutTenantId") Boolean withoutTenantId, + @QueryParam("sort") String sort) { + return this.queryJobs(jobType, jobId, processInstanceId, executionId, processDefinitionId, withRetriesLeft, executable, true, false, withException, dueBefore, dueAfter, exceptionMessage, withoutTenantId, sort); + } + + default ResultList queryMessagesJobs( + JobType jobType, + @QueryParam("id") String jobId, + @QueryParam("processInstanceId") String processInstanceId, + @QueryParam("executionId") String executionId, + @QueryParam("processDefinitionId") String processDefinitionId, + @QueryParam("withRetriesLeft") Boolean withRetriesLeft, + @QueryParam("executable") Boolean executable, + @QueryParam("withException") Boolean withException, + @QueryParam("dueBefore") LocalDate dueBefore, + @QueryParam("dueAfter") LocalDate dueAfter, + @QueryParam("exceptionMessage") String exceptionMessage, + @QueryParam("withoutTenantId") Boolean withoutTenantId, + @QueryParam("sort") String sort) { + return this.queryJobs(jobType, jobId, processInstanceId, executionId, processDefinitionId, withRetriesLeft, executable, false, true, withException, dueBefore, dueAfter, exceptionMessage, withoutTenantId, sort); + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/Datum.java b/src/main/java/com/inteligr8/activiti/model/Datum.java similarity index 86% rename from src/main/java/com/inteligr8/alfresco/activiti/model/Datum.java rename to src/main/java/com/inteligr8/activiti/model/Datum.java index 477caf6..89eb1bc 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/Datum.java +++ b/src/main/java/com/inteligr8/activiti/model/Datum.java @@ -1,18 +1,15 @@ -package com.inteligr8.alfresco.activiti.model; +package com.inteligr8.activiti.model; import java.util.HashMap; import java.util.Map; + import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ - -}) public class Datum { @JsonIgnore diff --git a/src/main/java/com/inteligr8/activiti/model/Engine.java b/src/main/java/com/inteligr8/activiti/model/Engine.java new file mode 100644 index 0000000..fe2abf4 --- /dev/null +++ b/src/main/java/com/inteligr8/activiti/model/Engine.java @@ -0,0 +1,76 @@ +package com.inteligr8.activiti.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class Engine { + + @JsonProperty("name") + private String name; + @JsonProperty("version") + private String version; + @JsonProperty("resourceUrl") + private String resourceUrl; + @JsonProperty("exception") + private String exception; + + /** + * No args constructor for use in serialization + */ + public Engine() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Engine withName(String name) { + this.name = name; + return this; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public Engine withVersion(String version) { + this.version = version; + return this; + } + + public String getResourceUrl() { + return resourceUrl; + } + + public void setResourceUrl(String resourceUrl) { + this.resourceUrl = resourceUrl; + } + + public Engine withResourceUrl(String resourceUrl) { + this.resourceUrl = resourceUrl; + return this; + } + + public String getException() { + return exception; + } + + public void setException(String exception) { + this.exception = exception; + } + + public Engine withException(String exception) { + this.exception = exception; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/activiti/model/EngineProperties.java b/src/main/java/com/inteligr8/activiti/model/EngineProperties.java new file mode 100644 index 0000000..6b9c95a --- /dev/null +++ b/src/main/java/com/inteligr8/activiti/model/EngineProperties.java @@ -0,0 +1,61 @@ +package com.inteligr8.activiti.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class EngineProperties { + + @JsonProperty("next.dbid") + private String nextDbid; + @JsonProperty("schema.history") + private String schemaHistory; + @JsonProperty("schema.version") + private String schemaVersion; + + /** + * No args constructor for use in serialization + */ + public EngineProperties() { + } + + public String getNextDbid() { + return nextDbid; + } + + public void setNextDbid(String nextDbid) { + this.nextDbid = nextDbid; + } + + public EngineProperties withNextDbid(String nextDbid) { + this.nextDbid = nextDbid; + return this; + } + + public String getSchemaHistory() { + return schemaHistory; + } + + public void setSchemaHistory(String schemaHistory) { + this.schemaHistory = schemaHistory; + } + + public EngineProperties withSchemaHistory(String schemaHistory) { + this.schemaHistory = schemaHistory; + return this; + } + + public String getSchemaVersion() { + return schemaVersion; + } + + public void setSchemaVersion(String schemaVersion) { + this.schemaVersion = schemaVersion; + } + + public EngineProperties withSchemaVersion(String schemaVersion) { + this.schemaVersion = schemaVersion; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/activiti/model/ExecuteAction.java b/src/main/java/com/inteligr8/activiti/model/ExecuteAction.java new file mode 100644 index 0000000..9c50b41 --- /dev/null +++ b/src/main/java/com/inteligr8/activiti/model/ExecuteAction.java @@ -0,0 +1,40 @@ +package com.inteligr8.activiti.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ExecuteAction { + + public enum Action { + @JsonProperty("execute") + Execute + } + + @JsonProperty("action") + private Action action; + + /** + * No args constructor for use in serialization + */ + public ExecuteAction() { + } + + public ExecuteAction(Action action) { + this.action = action; + } + + public Action getAction() { + return action; + } + + public void setAction(Action action) { + this.action = action; + } + + public ExecuteAction withAction(Action action) { + this.action = action; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/activiti/model/Job.java b/src/main/java/com/inteligr8/activiti/model/Job.java new file mode 100644 index 0000000..8414439 --- /dev/null +++ b/src/main/java/com/inteligr8/activiti/model/Job.java @@ -0,0 +1,189 @@ + +package com.inteligr8.activiti.model; + +import java.time.OffsetDateTime; + +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; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class Job extends Datum { + + @JsonProperty("id") + private String id; + @JsonProperty("processInstanceId") + private String processInstanceId; + @JsonProperty("processInstanceUrl") + private String processInstanceUrl; + @JsonProperty("processDefinitionId") + private String processDefinitionId; + @JsonProperty("processDefinitionUrl") + private String processDefinitionUrl; + @JsonProperty("executionId") + private String executionId; + @JsonProperty("executionUrl") + private String executionUrl; + @JsonProperty("retries") + private int retries; + @JsonProperty("exceptionMessage") + private String exceptionMessage; + @JsonProperty("dueDate") + private OffsetDateTime dueDate; + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + @JsonProperty("tenantId") + private String tenantId; + + /** + * No args constructor for use in serialization + */ + public Job() { + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Job withId(String id) { + this.id = id; + return this; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public Job withProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + return this; + } + + public String getProcessInstanceUrl() { + return processInstanceUrl; + } + + public void setProcessInstanceUrl(String processInstanceUrl) { + this.processInstanceUrl = processInstanceUrl; + } + + public Job withProcessInstanceUrl(String processInstanceUrl) { + this.processInstanceUrl = processInstanceUrl; + return this; + } + + public String getProcessDefinitionId() { + return processDefinitionId; + } + + public void setProcessDefinitionId(String processDefinitionId) { + this.processDefinitionId = processDefinitionId; + } + + public Job withProcessDefinitionId(String processDefinitionId) { + this.processDefinitionId = processDefinitionId; + return this; + } + + public String getProcessDefinitionUrl() { + return processDefinitionUrl; + } + + public void setProcessDefinitionUrl(String processDefinitionUrl) { + this.processDefinitionUrl = processDefinitionUrl; + } + + public Job withProcessDefinitionUrl(String processDefinitionUrl) { + this.processDefinitionUrl = processDefinitionUrl; + return this; + } + + public String getExecutionId() { + return executionId; + } + + public void setExecutionId(String executionId) { + this.executionId = executionId; + } + + public Job withExecutionId(String executionId) { + this.executionId = executionId; + return this; + } + + public String getExecutionUrl() { + return executionUrl; + } + + public void setExecutionUrl(String executionUrl) { + this.executionUrl = executionUrl; + } + + public Job withExecutionUrl(String executionUrl) { + this.executionUrl = executionUrl; + return this; + } + + public int getRetries() { + return retries; + } + + public void setRetries(int retries) { + this.retries = retries; + } + + public Job withRetries(int retries) { + this.retries = retries; + return this; + } + + public String getExceptionMessage() { + return exceptionMessage; + } + + public void setExceptionMessage(String exceptionMessage) { + this.exceptionMessage = exceptionMessage; + } + + public Job withExceptionMessage(String exceptionMessage) { + this.exceptionMessage = exceptionMessage; + return this; + } + + public OffsetDateTime getDueDate() { + return dueDate; + } + + public void setDueDate(OffsetDateTime dueDate) { + this.dueDate = dueDate; + } + + public Job withDueDate(OffsetDateTime dueDate) { + this.dueDate = dueDate; + return this; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public Job withTenantId(String tenantId) { + this.tenantId = tenantId; + return this; + } + + + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ResultList.java b/src/main/java/com/inteligr8/activiti/model/ResultList.java similarity index 63% rename from src/main/java/com/inteligr8/alfresco/activiti/model/ResultList.java rename to src/main/java/com/inteligr8/activiti/model/ResultList.java index 919203d..a202241 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/ResultList.java +++ b/src/main/java/com/inteligr8/activiti/model/ResultList.java @@ -1,5 +1,5 @@ -package com.inteligr8.alfresco.activiti.model; +package com.inteligr8.activiti.model; import java.util.LinkedList; import java.util.List; @@ -8,16 +8,28 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; @JsonInclude(JsonInclude.Include.NON_NULL) -public class ResultList { - +public class ResultList extends Datum { + + @JsonProperty("data") + private List data = new LinkedList(); @JsonProperty("size") private Integer size; @JsonProperty("total") private Integer total; @JsonProperty("start") private Integer start; - @JsonProperty("data") - private List data = new LinkedList(); + @JsonProperty("sort") + private String sort; + @JsonProperty("order") + private String order; + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } public Integer getSize() { return size; @@ -43,12 +55,20 @@ public class ResultList { this.start = start; } - public List getData() { - return data; - } + public String getSort() { + return sort; + } - public void setData(List data) { - this.data = data; - } + public void setSort(String sort) { + this.sort = sort; + } + + public String getOrder() { + return order; + } + + public void setOrder(String order) { + this.order = order; + } } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java index 3c90f08..d7a7010 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java @@ -14,10 +14,11 @@ */ package com.inteligr8.alfresco.activiti; +import com.inteligr8.activiti.ActivitiPublicRestApi; import com.inteligr8.alfresco.activiti.api.AdminApi; import com.inteligr8.alfresco.activiti.api.AppDefinitionsApi; import com.inteligr8.alfresco.activiti.api.AppVersionApi; -import com.inteligr8.alfresco.activiti.api.HistoricProcessInstancesApi; +import com.inteligr8.alfresco.activiti.api.HistoricApi; import com.inteligr8.alfresco.activiti.api.ModelsApi; import com.inteligr8.alfresco.activiti.api.ProcessInstancesApi; import com.inteligr8.alfresco.activiti.api.ProfileApi; @@ -30,7 +31,7 @@ import com.inteligr8.alfresco.activiti.api.TasksApi; * * @author brian@inteligr8.com */ -public interface ApsPublicRestApi { +public interface ApsPublicRestApi extends ActivitiPublicRestApi { T getApi(Class apiClass); @@ -46,8 +47,8 @@ public interface ApsPublicRestApi { return this.getApi(AppVersionApi.class); } - default HistoricProcessInstancesApi getHistoricProcessInstancesApi() { - return this.getApi(HistoricProcessInstancesApi.class); + default HistoricApi getHistoricProcessInstancesApi() { + return this.getApi(HistoricApi.class); } default ModelsApi getModelsApi() { diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/AdminApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/AdminApi.java index 0b38b3d..7022b18 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/api/AdminApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/AdminApi.java @@ -26,9 +26,9 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; +import com.inteligr8.activiti.model.ResultList; import com.inteligr8.alfresco.activiti.model.Group; import com.inteligr8.alfresco.activiti.model.GroupLight; -import com.inteligr8.alfresco.activiti.model.ResultList; import com.inteligr8.alfresco.activiti.model.Tenant; import com.inteligr8.alfresco.activiti.model.UserLight; diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/GroupsApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/GroupsApi.java index 41cffe7..0346529 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/api/GroupsApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/GroupsApi.java @@ -20,8 +20,8 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; +import com.inteligr8.activiti.model.ResultList; import com.inteligr8.alfresco.activiti.model.GroupLight; -import com.inteligr8.alfresco.activiti.model.ResultList; import com.inteligr8.alfresco.activiti.model.UserLight; @Path("/api/enterprise/groups") diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/HistoricProcessInstancesApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/HistoricApi.java similarity index 73% rename from src/main/java/com/inteligr8/alfresco/activiti/api/HistoricProcessInstancesApi.java rename to src/main/java/com/inteligr8/alfresco/activiti/api/HistoricApi.java index 2a16d05..5db781e 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/api/HistoricProcessInstancesApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/HistoricApi.java @@ -20,16 +20,24 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; import com.inteligr8.alfresco.activiti.model.HistoricProcessInstanceQueryRepresentation; +import com.inteligr8.alfresco.activiti.model.HistoricTaskQueryRepresentation; import com.inteligr8.alfresco.activiti.model.ProcessInstance; import com.inteligr8.alfresco.activiti.model.ResultListDataRepresentation; +import com.inteligr8.alfresco.activiti.model.Task; -@Path("/api/enterprise/historic-process-instances") -public interface HistoricProcessInstancesApi { +@Path("/api/enterprise") +public interface HistoricApi { @POST - @Path("query") + @Path("historic-process-instances/query") @Consumes({ "application/json" }) @Produces({ "application/json" }) ResultListDataRepresentation query(HistoricProcessInstanceQueryRepresentation request); + @POST + @Path("historic-tasks/query") + @Consumes({ "application/json" }) + @Produces({ "application/json" }) + ResultListDataRepresentation query(HistoricTaskQueryRepresentation request); + } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/ProcessDefinitionsApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/ProcessDefinitionsApi.java new file mode 100644 index 0000000..676280d --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/ProcessDefinitionsApi.java @@ -0,0 +1,35 @@ +/* + * 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 . + */ +package com.inteligr8.alfresco.activiti.api; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; + +import com.inteligr8.alfresco.activiti.model.ProcessDefinition; +import com.inteligr8.alfresco.activiti.model.ResultListDataRepresentation; + +@Path("/api/enterprise/process-definitions") +public interface ProcessDefinitionsApi { + + @GET + @Produces({ "application/json" }) + ResultListDataRepresentation get( + @QueryParam("latest") Boolean latest, + @QueryParam("appDefinitionId") Integer appDefinitionId, + @QueryParam("deploymentId") String deploymentId); + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/ProcessInstancesApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/ProcessInstancesApi.java index 7be99d2..a9cfa53 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/api/ProcessInstancesApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/ProcessInstancesApi.java @@ -27,7 +27,9 @@ import javax.ws.rs.Produces; import com.inteligr8.alfresco.activiti.model.CreateProcessInstance; import com.inteligr8.alfresco.activiti.model.ProcessInstance; +import com.inteligr8.alfresco.activiti.model.ProcessInstanceFilterRepresentation; import com.inteligr8.alfresco.activiti.model.ProcessInstanceQueryRepresentation; +import com.inteligr8.alfresco.activiti.model.ProcessInstanceVariable; import com.inteligr8.alfresco.activiti.model.ResultListDataRepresentation; import com.inteligr8.alfresco.activiti.model.Variable; @@ -39,6 +41,12 @@ public interface ProcessInstancesApi { @Produces({ "application/json" }) ProcessInstance create(CreateProcessInstance processInstance); + @POST + @Path("filter") + @Consumes({ "application/json" }) + @Produces({ "application/json" }) + ResultListDataRepresentation filter(ProcessInstanceFilterRepresentation request); + @POST @Path("query") @Consumes({ "application/json" }) @@ -64,6 +72,11 @@ public interface ProcessInstancesApi { @Produces({ "application/json" }) ProcessInstance suspend(@PathParam("processInstanceId") String processInstanceId); + @GET + @Path("{processInstanceId}/historic-variables") + @Produces({ "application/json" }) + List getHistoricVariables(@PathParam("processInstanceId") String processInstanceId); + @GET @Path("{processInstanceId}/variables") @Produces({ "application/json" }) @@ -88,6 +101,6 @@ public interface ProcessInstancesApi { @DELETE @Path("{processInstanceId}/variables/{variableName}") - void deleteVariable(@PathParam("processInstanceId") String processInstanceId, @PathParam("variableName") String variableName); + void removeVariable(@PathParam("processInstanceId") String processInstanceId, @PathParam("variableName") String variableName); } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/ShareApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/ShareApi.java index 21ed9b0..9a3da50 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/api/ShareApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/ShareApi.java @@ -22,7 +22,7 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; -import com.inteligr8.alfresco.activiti.model.ResultList; +import com.inteligr8.activiti.model.ResultList; import com.inteligr8.alfresco.activiti.model.ShareInfoRequest; import com.inteligr8.alfresco.activiti.model.SharePermission; diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/TasksApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/TasksApi.java index 86f8844..1bce98f 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/api/TasksApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/TasksApi.java @@ -19,36 +19,111 @@ import java.util.List; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; +import com.inteligr8.alfresco.activiti.model.AssigneeIdentifier; +import com.inteligr8.alfresco.activiti.model.HistoricTaskQueryRepresentation; +import com.inteligr8.alfresco.activiti.model.ResultListDataRepresentation; import com.inteligr8.alfresco.activiti.model.Task; +import com.inteligr8.alfresco.activiti.model.TaskQueryRepresentation; import com.inteligr8.alfresco.activiti.model.TaskUpdate; +import com.inteligr8.alfresco.activiti.model.UserIdentifier; import com.inteligr8.alfresco.activiti.model.Variable; @Path("/api/enterprise/tasks") public interface TasksApi { + @GET + @Path("{taskId}") + @Produces({ "application/json" }) + Task get(@PathParam("taskId") String taskId); + @PUT @Path("{taskId}") @Consumes({ "application/json" }) @Produces({ "application/json" }) - public Task update(@PathParam("taskId") String taskId, TaskUpdate taskUpdate); + Task update(@PathParam("taskId") String taskId, TaskUpdate taskUpdate); + + @DELETE + @Path("{taskId}") + @Produces({ "application/json" }) + void delete(@PathParam("taskId") String taskId); + + @POST + @Path("query") + @Produces({ "application/json" }) + ResultListDataRepresentation query(TaskQueryRepresentation request); + + @POST + @Path("filter") + @Produces({ "application/json" }) + ResultListDataRepresentation query(HistoricTaskQueryRepresentation request); + + @PUT + @Path("{taskId}/action/assign") + @Consumes({ "application/json" }) + @Produces({ "application/json" }) + Task assign(@PathParam("taskId") String taskId, AssigneeIdentifier request); + + @PUT + @Path("{taskId}/action/claim") + void claim(@PathParam("taskId") String taskId); + + @PUT + @Path("{taskId}/action/complete") + void complete(@PathParam("taskId") String taskId); + + @PUT + @Path("{taskId}/action/delegate") + @Consumes({ "application/json" }) + void delegate(@PathParam("taskId") String taskId, UserIdentifier request); + + @PUT + @Path("{taskId}/action/involve") + @Consumes({ "application/json" }) + void involve(@PathParam("taskId") String taskId, UserIdentifier request); + + @POST + @Path("{taskId}/groups/{groupId}") + void involveGroup(@PathParam("taskId") String taskId, @PathParam("groupId") String groupId); + + @DELETE + @Path("{taskId}/groups/{groupId}") + void removeInvolvedGroup(@PathParam("taskId") String taskId, @PathParam("groupId") String groupId); + + @PUT + @Path("{taskId}/action/remove-involved") + @Consumes({ "application/json" }) + void removeInvolved(@PathParam("taskId") String taskId, UserIdentifier request); + + @PUT + @Path("{taskId}/action/resolve") + void resolve(@PathParam("taskId") String taskId); + + @PUT + @Path("{taskId}/action/unclaim") + void unclaim(@PathParam("taskId") String taskId); @GET @Path("{taskId}/variables") @Produces({ "application/json" }) List getVariables(@PathParam("taskId") String taskId, @QueryParam("scope") String scope); - @PUT + @POST @Path("{taskId}/variables") @Consumes({ "application/json" }) @Produces({ "application/json" }) List setVariables(@PathParam("taskId") String taskId, List variables); + @DELETE + @Path("{taskId}/variables") + List removeVariables(@PathParam("taskId") String taskId); + @GET @Path("{taskId}/variables/{variableName}") @Produces({ "application/json" }) @@ -62,6 +137,6 @@ public interface TasksApi { @DELETE @Path("{taskId}/variables/{variableName}") - void deleteVariable(@PathParam("taskId") String taskId, @PathParam("variableName") String variableName, @QueryParam("scope") String scope); + void removeVariable(@PathParam("taskId") String taskId, @PathParam("variableName") String variableName, @QueryParam("scope") String scope); } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/AssigneeIdentifier.java b/src/main/java/com/inteligr8/alfresco/activiti/model/AssigneeIdentifier.java new file mode 100644 index 0000000..cb63869 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/AssigneeIdentifier.java @@ -0,0 +1,42 @@ +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class AssigneeIdentifier { + + @JsonProperty + private String assignee; + @JsonProperty + private String email; + + public String getAssignee() { + return assignee; + } + + public void setAssignee(String assignee) { + this.assignee = assignee; + } + + public AssigneeIdentifier withAssignee(String assignee) { + this.assignee = assignee; + return this; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public AssigneeIdentifier withEmail(String email) { + this.email = email; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/HistoricProcessInstanceQueryRepresentation.java b/src/main/java/com/inteligr8/alfresco/activiti/model/HistoricProcessInstanceQueryRepresentation.java index c73c606..16b754f 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/HistoricProcessInstanceQueryRepresentation.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/HistoricProcessInstanceQueryRepresentation.java @@ -6,9 +6,11 @@ import java.time.OffsetDateTime; import java.util.LinkedList; import java.util.List; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonFormat.Shape; @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ @@ -43,8 +45,10 @@ public class HistoricProcessInstanceQueryRepresentation { @JsonProperty("finished") private Boolean finished; @JsonProperty("finishedAfter") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") private OffsetDateTime finishedAfter; @JsonProperty("finishedBefore") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") private OffsetDateTime finishedBefore; @JsonProperty("includeProcessVariables") private Boolean includeProcessVariables; @@ -69,8 +73,10 @@ public class HistoricProcessInstanceQueryRepresentation { @JsonProperty("start") private Integer start; @JsonProperty("startedAfter") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") private OffsetDateTime startedAfter; @JsonProperty("startedBefore") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") private OffsetDateTime startedBefore; @JsonProperty("startedBy") private String startedBy; diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/HistoricTaskQueryRepresentation.java b/src/main/java/com/inteligr8/alfresco/activiti/model/HistoricTaskQueryRepresentation.java new file mode 100644 index 0000000..97d30fb --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/HistoricTaskQueryRepresentation.java @@ -0,0 +1,835 @@ + + +package com.inteligr8.alfresco.activiti.model; + +import java.time.OffsetDateTime; +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; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "taskId", + "parentTaskId", + "taskName", + "taskNameLike", + "taskDefinitionKey", + "taskDefinitionKeyLike", + "finished", + "taskPriority", + "taskMinPriority", + "taskMaxPriority", + "taskAssignee", + "taskAssigneeLike", + "taskOwner", + "taskOwnerLike", + "taskInvolvedUser", + "taskCandidateGroup", + "taskCreatedOn", + "taskCreatedAfter", + "taskCreatedBefore", + "dueDate", + "dueDateAfter", + "dueDateBefore", + "withoutDueDate", + "taskCompletedOn", + "taskCompletedAfter", + "taskCompletedBefore", + "taskDeleteReason", + "taskDeleteReasonLike", + "taskDescription", + "taskDescriptionLike", + "processBusinessKey", + "processBusinessKeyLike", + "processDefinitionId", + "processDefinitionKey", + "processDefinitionKeyLike", + "processDefinitionName", + "processDefinitionNameLike", + "processFinished", + "processInstanceId", + "includeProcessVariables", + "includeTaskLocalVariables", + "processVariables", + "taskVariables", + "size", + "sort", + "order", + "start", + "tenantId", + "tenantIdLike", + "withoutTenantId", +}) +public class HistoricTaskQueryRepresentation { + + @JsonProperty("taskId") + private String taskId; + @JsonProperty("parentTaskId") + private String parentTaskId; + @JsonProperty("taskName") + private String taskName; + @JsonProperty("taskNameLike") + private String taskNameLike; + @JsonProperty("taskDefinitionKey") + private String taskDefinitionKey; + @JsonProperty("taskDefinitionKeyLike") + private String taskDefinitionKeyLike; + @JsonProperty("finished") + private Boolean finished; + @JsonProperty("taskPriority") + private Integer taskPriority; + @JsonProperty("taskMinPriority") + private Integer taskMinPriority; + @JsonProperty("taskMaxPriority") + private Integer taskMaxPriority; + @JsonProperty("taskAssignee") + private String taskAssignee; + @JsonProperty("taskAssigneeLike") + private String taskAssigneeLike; + @JsonProperty("taskOwner") + private String taskOwner; + @JsonProperty("taskOwnerLike") + private String taskOwnerLike; + @JsonProperty("taskInvolvedUser") + private String taskInvolvedUser; + @JsonProperty("taskCandidateGroup") + private String taskCandidateGroup; + @JsonProperty("taskCreatedOn") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime taskCreated; + @JsonProperty("taskCreatedBefore") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime taskCreatedBefore; + @JsonProperty("taskCreatedAfter") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime taskCreatedAfter; + @JsonProperty("dueDate") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime dueDate; + @JsonProperty("dueDateBefore") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime dueDateBefore; + @JsonProperty("dueDateAfter") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime dueDateAfter; + @JsonProperty("withoutDueDate") + private Boolean withoutDueDate; + @JsonProperty("taskCompletedOn") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime taskCompleted; + @JsonProperty("taskCompletedBefore") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime taskCompletedBefore; + @JsonProperty("taskCompletedAfter") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime taskCompletedAfter; + @JsonProperty("taskDeleteReason") + private String taskDeleteReason; + @JsonProperty("taskDeleteReasonLike") + private String taskDeleteReasonLike; + @JsonProperty("taskDescription") + private String taskDescription; + @JsonProperty("taskDescriptionLike") + private String taskDescriptionLike; + @JsonProperty("processBusinessKey") + private String processBusinessKey; + @JsonProperty("processBusinessKeyLike") + private String processBusinessKeyLike; + @JsonProperty("processDefinitionId") + private String processDefinitionId; + @JsonProperty("processDefinitionKey") + private String processDefinitionKey; + @JsonProperty("processDefinitionKeyLike") + private String processDefinitionKeyLike; + @JsonProperty("processDefinitionName") + private String processDefinitionName; + @JsonProperty("processDefinitionNameLike") + private String processDefinitionNameLike; + @JsonProperty("processFinished") + private Boolean processFinished; + @JsonProperty("processInstanceId") + private String processInstanceId; + @JsonProperty("includeProcessVariables") + private Boolean includeProcessVariables; + @JsonProperty("includeTaskLocalVariables") + private Boolean includeTaskLocalVariables; + @JsonProperty("taskVariables") + private List taskVariables; + @JsonProperty("processVariables") + private List processVariables; + @JsonProperty("size") + private Integer size; + @JsonProperty("sort") + private String sort; + @JsonProperty("order") + private String order; + @JsonProperty("start") + private Integer start; + @JsonProperty("tenantId") + private String tenantId; + @JsonProperty("tenantIdLike") + private String tenantIdLike; + @JsonProperty("withoutTenantId") + private Boolean withoutTenantId; + + /** + * No args constructor for use in serialization + */ + public HistoricTaskQueryRepresentation() { + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public HistoricTaskQueryRepresentation withTaskId(String taskId) { + this.taskId = taskId; + return this; + } + + public String getParentTaskId() { + return parentTaskId; + } + + public void setParentTaskId(String parentTaskId) { + this.parentTaskId = parentTaskId; + } + + public HistoricTaskQueryRepresentation withParentTaskId(String parentTaskId) { + this.parentTaskId = parentTaskId; + return this; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public HistoricTaskQueryRepresentation withTaskName(String taskName) { + this.taskName = taskName; + return this; + } + + public String getTaskNameLike() { + return taskNameLike; + } + + public void setTaskNameLike(String taskNameLike) { + this.taskNameLike = taskNameLike; + } + + public HistoricTaskQueryRepresentation withTaskNameLike(String taskNameLike) { + this.taskNameLike = taskNameLike; + return this; + } + + public String getTaskDefinitionKey() { + return taskDefinitionKey; + } + + public void setTaskDefinitionKey(String taskDefinitionKey) { + this.taskDefinitionKey = taskDefinitionKey; + } + + public HistoricTaskQueryRepresentation withTaskDefinitionKey(String taskDefinitionKey) { + this.taskDefinitionKey = taskDefinitionKey; + return this; + } + + public String getTaskDefinitionKeyLike() { + return taskDefinitionKeyLike; + } + + public void setTaskDefinitionKeyLike(String taskDefinitionKeyLike) { + this.taskDefinitionKeyLike = taskDefinitionKeyLike; + } + + public HistoricTaskQueryRepresentation withTaskDefinitionKeyLike(String taskDefinitionKeyLike) { + this.taskDefinitionKeyLike = taskDefinitionKeyLike; + return this; + } + + public Boolean getFinished() { + return finished; + } + + public void setFinished(Boolean finished) { + this.finished = finished; + } + + public HistoricTaskQueryRepresentation withFinished(Boolean finished) { + this.finished = finished; + return this; + } + + public Integer getTaskPriority() { + return taskPriority; + } + + public void setTaskPriority(Integer taskPriority) { + this.taskPriority = taskPriority; + } + + public HistoricTaskQueryRepresentation withTaskPriority(Integer taskPriority) { + this.taskPriority = taskPriority; + return this; + } + + public Integer getTaskMinPriority() { + return taskMinPriority; + } + + public void setTaskMinPriority(Integer taskMinPriority) { + this.taskMinPriority = taskMinPriority; + } + + public HistoricTaskQueryRepresentation withTaskMinPriority(Integer taskMinPriority) { + this.taskMinPriority = taskMinPriority; + return this; + } + + public Integer getTaskMaxPriority() { + return taskMaxPriority; + } + + public void setTaskMaxPriority(Integer taskMaxPriority) { + this.taskMaxPriority = taskMaxPriority; + } + + public HistoricTaskQueryRepresentation withTaskMaxPriority(Integer taskMaxPriority) { + this.taskMaxPriority = taskMaxPriority; + return this; + } + + public String getTaskAssignee() { + return taskAssignee; + } + + public void setTaskAssignee(String taskAssignee) { + this.taskAssignee = taskAssignee; + } + + public HistoricTaskQueryRepresentation withTaskAssignee(String taskAssignee) { + this.taskAssignee = taskAssignee; + return this; + } + + public String getTaskAssigneeLike() { + return taskAssigneeLike; + } + + public void setTaskAssigneeLike(String taskAssigneeLike) { + this.taskAssigneeLike = taskAssigneeLike; + } + + public HistoricTaskQueryRepresentation withTaskAssigneeLike(String taskAssigneeLike) { + this.taskAssigneeLike = taskAssigneeLike; + return this; + } + + public String getTaskOwner() { + return taskOwner; + } + + public void setTaskOwner(String taskOwner) { + this.taskOwner = taskOwner; + } + + public HistoricTaskQueryRepresentation withTaskOwner(String taskOwner) { + this.taskOwner = taskOwner; + return this; + } + + public String getTaskOwnerLike() { + return taskOwnerLike; + } + + public void setTaskOwnerLike(String taskOwnerLike) { + this.taskOwnerLike = taskOwnerLike; + } + + public HistoricTaskQueryRepresentation withTaskOwnerLike(String taskOwnerLike) { + this.taskOwnerLike = taskOwnerLike; + return this; + } + + public String getTaskInvolvedUser() { + return taskInvolvedUser; + } + + public void setTaskInvolvedUser(String taskInvolvedUser) { + this.taskInvolvedUser = taskInvolvedUser; + } + + public HistoricTaskQueryRepresentation withTaskInvolvedUser(String taskInvolvedUser) { + this.taskInvolvedUser = taskInvolvedUser; + return this; + } + + public String getTaskCandidateGroup() { + return taskCandidateGroup; + } + + public void setTaskCandidateGroup(String taskCandidateGroup) { + this.taskCandidateGroup = taskCandidateGroup; + } + + public HistoricTaskQueryRepresentation withTaskCandidateGroup(String taskCandidateGroup) { + this.taskCandidateGroup = taskCandidateGroup; + return this; + } + + public OffsetDateTime getTaskCreated() { + return taskCreated; + } + + public void setTaskCreated(OffsetDateTime taskCreated) { + this.taskCreated = taskCreated; + } + + public HistoricTaskQueryRepresentation withTaskCreated(OffsetDateTime taskCreated) { + this.taskCreated = taskCreated; + return this; + } + + public OffsetDateTime getTaskCreatedBefore() { + return taskCreatedBefore; + } + + public void setTaskCreatedBefore(OffsetDateTime taskCreatedBefore) { + this.taskCreatedBefore = taskCreatedBefore; + } + + public HistoricTaskQueryRepresentation withTaskCreatedBefore(OffsetDateTime taskCreatedBefore) { + this.taskCreatedBefore = taskCreatedBefore; + return this; + } + + public OffsetDateTime getTaskCreatedAfter() { + return taskCreatedAfter; + } + + public void setTaskCreatedAfter(OffsetDateTime taskCreatedAfter) { + this.taskCreatedAfter = taskCreatedAfter; + } + + public HistoricTaskQueryRepresentation withTaskCreatedAfter(OffsetDateTime taskCreatedAfter) { + this.taskCreatedAfter = taskCreatedAfter; + return this; + } + + public OffsetDateTime getDueDate() { + return dueDate; + } + + public void setDueDate(OffsetDateTime dueDate) { + this.dueDate = dueDate; + } + + public HistoricTaskQueryRepresentation withDueDate(OffsetDateTime dueDate) { + this.dueDate = dueDate; + return this; + } + + public OffsetDateTime getDueDateBefore() { + return dueDateBefore; + } + + public void setDueDateBefore(OffsetDateTime dueDateBefore) { + this.dueDateBefore = dueDateBefore; + } + + public HistoricTaskQueryRepresentation withDueDateBefore(OffsetDateTime dueDateBefore) { + this.dueDateBefore = dueDateBefore; + return this; + } + + public OffsetDateTime getDueDateAfter() { + return dueDateAfter; + } + + public void setDueDateAfter(OffsetDateTime dueDateAfter) { + this.dueDateAfter = dueDateAfter; + } + + public HistoricTaskQueryRepresentation withDueDateAfter(OffsetDateTime dueDateAfter) { + this.dueDateAfter = dueDateAfter; + return this; + } + + public Boolean getWithoutDueDate() { + return withoutDueDate; + } + + public void setWithoutDueDate(Boolean withoutDueDate) { + this.withoutDueDate = withoutDueDate; + } + + public HistoricTaskQueryRepresentation withWithoutDueDate(Boolean withoutDueDate) { + this.withoutDueDate = withoutDueDate; + return this; + } + + public OffsetDateTime getTaskCompleted() { + return taskCompleted; + } + + public void setTaskCompleted(OffsetDateTime taskCompleted) { + this.taskCompleted = taskCompleted; + } + + public HistoricTaskQueryRepresentation withTaskCompleted(OffsetDateTime taskCompleted) { + this.taskCompleted = taskCompleted; + return this; + } + + public OffsetDateTime getTaskCompletedBefore() { + return taskCompletedBefore; + } + + public void setTaskCompletedBefore(OffsetDateTime taskCompletedBefore) { + this.taskCompletedBefore = taskCompletedBefore; + } + + public HistoricTaskQueryRepresentation withTaskCompletedBefore(OffsetDateTime taskCompletedBefore) { + this.taskCompletedBefore = taskCompletedBefore; + return this; + } + + public OffsetDateTime getTaskCompletedAfter() { + return taskCompletedAfter; + } + + public void setTaskCompletedAfter(OffsetDateTime taskCompletedAfter) { + this.taskCompletedAfter = taskCompletedAfter; + } + + public HistoricTaskQueryRepresentation withTaskCompletedAfter(OffsetDateTime taskCompletedAfter) { + this.taskCompletedAfter = taskCompletedAfter; + return this; + } + + public String getTaskDeleteReason() { + return taskDeleteReason; + } + + public void setTaskDeleteReason(String taskDeleteReason) { + this.taskDeleteReason = taskDeleteReason; + } + + public HistoricTaskQueryRepresentation withTaskDeleteReason(String taskDeleteReason) { + this.taskDeleteReason = taskDeleteReason; + return this; + } + + public String getTaskDeleteReasonLike() { + return taskDeleteReasonLike; + } + + public void setTaskDeleteReasonLike(String taskDeleteReasonLike) { + this.taskDeleteReasonLike = taskDeleteReasonLike; + } + + public HistoricTaskQueryRepresentation withTaskDeleteReasonLike(String taskDeleteReasonLike) { + this.taskDeleteReasonLike = taskDeleteReasonLike; + return this; + } + + public String getTaskDescription() { + return taskDescription; + } + + public void setTaskDescription(String taskDescription) { + this.taskDescription = taskDescription; + } + + public HistoricTaskQueryRepresentation withTaskDescription(String taskDescription) { + this.taskDescription = taskDescription; + return this; + } + + public String getTaskDescriptionLike() { + return taskDescriptionLike; + } + + public void setTaskDescriptionLike(String taskDescriptionLike) { + this.taskDescriptionLike = taskDescriptionLike; + } + + public HistoricTaskQueryRepresentation withTaskDescriptionLike(String taskDescriptionLike) { + this.taskDescriptionLike = taskDescriptionLike; + return this; + } + + public String getProcessBusinessKey() { + return processBusinessKey; + } + + public void setProcessBusinessKey(String processBusinessKey) { + this.processBusinessKey = processBusinessKey; + } + + public HistoricTaskQueryRepresentation withProcessBusinessKey(String processBusinessKey) { + this.processBusinessKey = processBusinessKey; + return this; + } + + public String getProcessBusinessKeyLike() { + return processBusinessKeyLike; + } + + public void setProcessBusinessKeyLike(String processBusinessKeyLike) { + this.processBusinessKeyLike = processBusinessKeyLike; + } + + public HistoricTaskQueryRepresentation withProcessBusinessKeyLike(String processBusinessKeyLike) { + this.processBusinessKeyLike = processBusinessKeyLike; + return this; + } + + public String getProcessDefinitionId() { + return processDefinitionId; + } + + public void setProcessDefinitionId(String processDefinitionId) { + this.processDefinitionId = processDefinitionId; + } + + public HistoricTaskQueryRepresentation withProcessDefinitionId(String processDefinitionId) { + this.processDefinitionId = processDefinitionId; + return this; + } + + public String getProcessDefinitionKey() { + return processDefinitionKey; + } + + public void setProcessDefinitionKey(String processDefinitionKey) { + this.processDefinitionKey = processDefinitionKey; + } + + public HistoricTaskQueryRepresentation withProcessDefinitionKey(String processDefinitionKey) { + this.processDefinitionKey = processDefinitionKey; + return this; + } + + public String getProcessDefinitionKeyLike() { + return processDefinitionKeyLike; + } + + public void setProcessDefinitionKeyLike(String processDefinitionKeyLike) { + this.processDefinitionKeyLike = processDefinitionKeyLike; + } + + public HistoricTaskQueryRepresentation withProcessDefinitionKeyLike(String processDefinitionKeyLike) { + this.processDefinitionKeyLike = processDefinitionKeyLike; + return this; + } + + public String getProcessDefinitionName() { + return processDefinitionName; + } + + public void setProcessDefinitionName(String processDefinitionName) { + this.processDefinitionName = processDefinitionName; + } + + public HistoricTaskQueryRepresentation withProcessDefinitionName(String processDefinitionName) { + this.processDefinitionName = processDefinitionName; + return this; + } + + public String getProcessDefinitionNameLike() { + return processDefinitionNameLike; + } + + public void setProcessDefinitionNameLike(String processDefinitionNameLike) { + this.processDefinitionNameLike = processDefinitionNameLike; + } + + public HistoricTaskQueryRepresentation withProcessDefinitionNameLike(String processDefinitionNameLike) { + this.processDefinitionNameLike = processDefinitionNameLike; + return this; + } + + public Boolean getProcessFinished() { + return processFinished; + } + + public void setProcessFinished(Boolean processFinished) { + this.processFinished = processFinished; + } + + public HistoricTaskQueryRepresentation withProcessFinished(Boolean processFinished) { + this.processFinished = processFinished; + return this; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public HistoricTaskQueryRepresentation withProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + return this; + } + + public Boolean getIncludeProcessVariables() { + return includeProcessVariables; + } + + public void setIncludeProcessVariables(Boolean includeProcessVariables) { + this.includeProcessVariables = includeProcessVariables; + } + + public HistoricTaskQueryRepresentation withIncludeProcessVariables(Boolean includeProcessVariables) { + this.includeProcessVariables = includeProcessVariables; + return this; + } + + public Boolean getIncludeTaskLocalVariables() { + return includeTaskLocalVariables; + } + + public void setIncludeTaskLocalVariables(Boolean includeTaskLocalVariables) { + this.includeTaskLocalVariables = includeTaskLocalVariables; + } + + public HistoricTaskQueryRepresentation withIncludeTaskLocalVariables(Boolean includeTaskLocalVariables) { + this.includeTaskLocalVariables = includeTaskLocalVariables; + return this; + } + + public List getTaskVariables() { + return taskVariables; + } + + public void setTaskVariables(List taskVariables) { + this.taskVariables = taskVariables; + } + + public HistoricTaskQueryRepresentation withTaskVariables(List taskVariables) { + this.taskVariables = taskVariables; + return this; + } + + public List getProcessVariables() { + return processVariables; + } + + public void setProcessVariables(List processVariables) { + this.processVariables = processVariables; + } + + public HistoricTaskQueryRepresentation withProcessVariables(List processVariables) { + this.processVariables = processVariables; + return this; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public HistoricTaskQueryRepresentation withSize(Integer size) { + this.size = size; + return this; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort; + } + + public HistoricTaskQueryRepresentation withSort(String sort) { + this.sort = sort; + return this; + } + + public String getOrder() { + return order; + } + + public void setOrder(String order) { + this.order = order; + } + + public HistoricTaskQueryRepresentation withOrder(String order) { + this.order = order; + return this; + } + + public Integer getStart() { + return start; + } + + public void setStart(Integer start) { + this.start = start; + } + + public HistoricTaskQueryRepresentation withStart(Integer start) { + this.start = start; + return this; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public HistoricTaskQueryRepresentation withTenantId(String tenantId) { + this.tenantId = tenantId; + return this; + } + + public String getTenantIdLike() { + return tenantIdLike; + } + + public void setTenantIdLike(String tenantIdLike) { + this.tenantIdLike = tenantIdLike; + } + + public HistoricTaskQueryRepresentation withTenantIdLike(String tenantIdLike) { + this.tenantIdLike = tenantIdLike; + return this; + } + + public Boolean getWithoutTenantId() { + return withoutTenantId; + } + + public void setWithoutTenantId(Boolean withoutTenantId) { + this.withoutTenantId = withoutTenantId; + } + + public HistoricTaskQueryRepresentation withWithoutTenantId(Boolean withoutTenantId) { + this.withoutTenantId = withoutTenantId; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessDefinition.java b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessDefinition.java new file mode 100644 index 0000000..5da3b87 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessDefinition.java @@ -0,0 +1,166 @@ + + +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.inteligr8.activiti.model.Datum; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "id", + "key", + "name", + "description", + "hasStartForm", + "deploymentId", + "version", + "category", + "tenantId" +}) +public class ProcessDefinition extends Datum { + + @JsonProperty("category") + private String category; + @JsonProperty("deploymentId") + private String deploymentId; + @JsonProperty("description") + private String description; + @JsonProperty("hasStartForm") + private boolean hasStartForm; + @JsonProperty("id") + private String id; + @JsonProperty("key") + private String key; + @JsonProperty("name") + private String name; + @JsonProperty("tenantId") + private String tenantId; + @JsonProperty("version") + private Integer version; + + /** + * No args constructor for use in serialization + */ + public ProcessDefinition() { + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public ProcessDefinition withCategory(String category) { + this.category = category; + return this; + } + + public String getDeploymentId() { + return deploymentId; + } + + public void setDeploymentId(String deploymentId) { + this.deploymentId = deploymentId; + } + + public ProcessDefinition withDeploymentId(String deploymentId) { + this.deploymentId = deploymentId; + return this; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public ProcessDefinition withDescription(String description) { + this.description = description; + return this; + } + + public boolean isHasStartForm() { + return hasStartForm; + } + + public void setHasStartForm(boolean hasStartForm) { + this.hasStartForm = hasStartForm; + } + + public ProcessDefinition withHasStartForm(boolean hasStartForm) { + this.hasStartForm = hasStartForm; + return this; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public ProcessDefinition withId(String id) { + this.id = id; + return this; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public ProcessDefinition withKey(String key) { + this.key = key; + return this; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ProcessDefinition withName(String name) { + this.name = name; + return this; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public ProcessDefinition withTenantId(String tenantId) { + this.tenantId = tenantId; + return this; + } + + public Integer getVersion() { + return version; + } + + public void setVersion(Integer version) { + this.version = version; + } + + public ProcessDefinition withVersion(Integer version) { + this.version = version; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstance.java b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstance.java index c69fd67..52c16f6 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstance.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstance.java @@ -2,12 +2,16 @@ package com.inteligr8.alfresco.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.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonFormat.Shape; +import com.inteligr8.activiti.model.Datum; @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ @@ -35,7 +39,8 @@ public class ProcessInstance extends Datum { @JsonProperty("businessKey") private String businessKey; @JsonProperty("ended") - private String ended; + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime ended; @JsonProperty("graphicalNotationDefined") private Boolean graphicalNotationDefined; @JsonProperty("id") @@ -59,7 +64,8 @@ public class ProcessInstance extends Datum { @JsonProperty("startFormDefined") private Boolean startFormDefined; @JsonProperty("started") - private String started; + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime started; @JsonProperty("startedBy") private UserLight startedBy; @JsonProperty("suspended") @@ -88,15 +94,15 @@ public class ProcessInstance extends Datum { return this; } - public String getEnded() { + public OffsetDateTime getEnded() { return ended; } - public void setEnded(String ended) { + public void setEnded(OffsetDateTime ended) { this.ended = ended; } - public ProcessInstance withEnded(String ended) { + public ProcessInstance withEnded(OffsetDateTime ended) { this.ended = ended; return this; } @@ -244,15 +250,15 @@ public class ProcessInstance extends Datum { return this; } - public String getStarted() { + public OffsetDateTime getStarted() { return started; } - public void setStarted(String started) { + public void setStarted(OffsetDateTime started) { this.started = started; } - public ProcessInstance withStarted(String started) { + public ProcessInstance withStarted(OffsetDateTime started) { this.started = started; return this; } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceFilter.java b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceFilter.java new file mode 100644 index 0000000..6beb1d4 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceFilter.java @@ -0,0 +1,127 @@ + + +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.inteligr8.activiti.model.Datum; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "name", + "processDefinitionId", + "processDefinitionKey", + "sort", + "asc", + "state" +}) +public class ProcessInstanceFilter extends Datum { + + public enum State { + @JsonProperty("all") + All, + @JsonProperty("completed") + Completed, + @JsonProperty("running") + Running + } + + @JsonProperty("name") + private String name; + @JsonProperty("processDefinitionId") + private String processDefinitionId; + @JsonProperty("processDefinitionKey") + private String processDefinitionKey; + @JsonProperty("sort") + private String sort; + @JsonProperty("asc") + private Boolean asc; + @JsonProperty("state") + private State state; + + /** + * No args constructor for use in serialization + */ + public ProcessInstanceFilter() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ProcessInstanceFilter withName(String name) { + this.name = name; + return this; + } + + public String getProcessDefinitionId() { + return processDefinitionId; + } + + public void setProcessDefinitionId(String id) { + this.processDefinitionId = id; + } + + public ProcessInstanceFilter withProcessDefinitionId(String id) { + this.processDefinitionId = id; + return this; + } + + public String getProcessDefinitionKey() { + return processDefinitionKey; + } + + public void setProcessDefinitionKey(String key) { + this.processDefinitionKey = key; + } + + public ProcessInstanceFilter withProcessDefinitionKey(String key) { + this.processDefinitionKey = key; + return this; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort; + } + + public ProcessInstanceFilter withSort(String sort) { + this.sort = sort; + return this; + } + + public Boolean isAsc() { + return asc; + } + + public void setAsc(Boolean asc) { + this.asc = asc; + } + + public ProcessInstanceFilter withAsc(Boolean asc) { + this.asc = asc; + return this; + } + + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + + public ProcessInstanceFilter withState(State state) { + this.state = state; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceFilterRepresentation.java b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceFilterRepresentation.java new file mode 100644 index 0000000..ebc00f6 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceFilterRepresentation.java @@ -0,0 +1,101 @@ + + +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "filterId", + "filter", + "appDefinitionId", + "page", + "size" +}) +public class ProcessInstanceFilterRepresentation { + + @JsonProperty("filterId") + private Long filterId; + @JsonProperty("filter") + private ProcessInstanceFilter filter; + @JsonProperty("appDefinitionId") + private Long appDefinitionId; + @JsonProperty("page") + private Integer page; + @JsonProperty("size") + private Integer size; + + /** + * No args constructor for use in serialization + */ + public ProcessInstanceFilterRepresentation() { + } + + public Long getFilterId() { + return filterId; + } + + public void setFilterId(Long filterId) { + this.filterId = filterId; + } + + public ProcessInstanceFilterRepresentation withFilterId(Long filterId) { + this.filterId = filterId; + return this; + } + + public ProcessInstanceFilter getFilter() { + return filter; + } + + public void setFilter(ProcessInstanceFilter filter) { + this.filter = filter; + } + + public ProcessInstanceFilterRepresentation withFilter(ProcessInstanceFilter filter) { + this.filter = filter; + return this; + } + + public Long getAppDefinitionId() { + return appDefinitionId; + } + + public void setAppDefinitionId(Long appDefinitionId) { + this.appDefinitionId = appDefinitionId; + } + + public ProcessInstanceFilterRepresentation withAppDefinitionId(Long appDefinitionId) { + this.appDefinitionId = appDefinitionId; + return this; + } + + public Integer getPage() { + return page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public ProcessInstanceFilterRepresentation withPage(Integer page) { + this.page = page; + return this; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public ProcessInstanceFilterRepresentation withSize(Integer size) { + this.size = size; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceQueryRepresentation.java b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceQueryRepresentation.java index 2949b2c..971b23a 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceQueryRepresentation.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceQueryRepresentation.java @@ -45,6 +45,8 @@ public class ProcessInstanceQueryRepresentation { private String processDefinitionId; @JsonProperty("processInstanceId") private String processInstanceId; + @JsonProperty("page") + private Integer page; @JsonProperty("size") private Integer size; @JsonProperty("sort") @@ -98,6 +100,19 @@ public class ProcessInstanceQueryRepresentation { this.processInstanceId = processInstanceId; return this; } + + public Integer getPage() { + return page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public ProcessInstanceQueryRepresentation withPage(Integer page) { + this.page = page; + return this; + } public Integer getSize() { return size; diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceVariable.java b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceVariable.java new file mode 100644 index 0000000..06c9365 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ProcessInstanceVariable.java @@ -0,0 +1,73 @@ +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "id", + "type", + "value" +}) +public class ProcessInstanceVariable { + + @JsonProperty("id") + private String id; + @JsonProperty("type") + private String type; + @JsonProperty("value") + private Object value; + + /** + * No args constructor for use in serialization + */ + public ProcessInstanceVariable() { + } + + public ProcessInstanceVariable(String id, String type, Object value) { + this.id = id; + this.type = type; + this.value = value; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public ProcessInstanceVariable withId(String id) { + this.id = id; + return this; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public ProcessInstanceVariable withType(String type) { + this.type = type; + return this; + } + + public Object getValue() { + return value; + } + + public void setValue(Object value) { + this.value = value; + } + + public ProcessInstanceVariable withValue(Object value) { + this.value = value; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ResultListDataRepresentation.java b/src/main/java/com/inteligr8/alfresco/activiti/model/ResultListDataRepresentation.java index 3b47d86..ce0265d 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/ResultListDataRepresentation.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ResultListDataRepresentation.java @@ -2,15 +2,12 @@ package com.inteligr8.alfresco.activiti.model; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; + import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.inteligr8.activiti.model.Datum; /** @@ -26,7 +23,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; "start", "total" }) -public class ResultListDataRepresentation { +public class ResultListDataRepresentation extends Datum { @JsonProperty("data") private List data = new ArrayList<>(); @@ -36,8 +33,6 @@ public class ResultListDataRepresentation { private Integer start; @JsonProperty("total") private Integer total; - @JsonIgnore - private Map additionalProperties = new HashMap(); @JsonProperty("data") public List getData() { @@ -99,19 +94,4 @@ public class ResultListDataRepresentation { return this; } - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - - public ResultListDataRepresentation withAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - return this; - } - } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/Task.java b/src/main/java/com/inteligr8/alfresco/activiti/model/Task.java index 0c2b093..f94ffe0 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/Task.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/Task.java @@ -1,12 +1,16 @@ package com.inteligr8.alfresco.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.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonFormat.Shape; +import com.inteligr8.activiti.model.Datum; @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ @@ -43,7 +47,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; "taskDefinitionKey", "variables" }) -public class Task { +public class Task extends Datum { @JsonProperty("adhocTaskCanBeReassigned") private Boolean adhocTaskCanBeReassigned; @@ -52,15 +56,18 @@ public class Task { @JsonProperty("category") private String category; @JsonProperty("created") - private String created; + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime created; @JsonProperty("description") private String description; @JsonProperty("dueDate") - private String dueDate; + private OffsetDateTime dueDate; + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") @JsonProperty("duration") private Long duration; @JsonProperty("endDate") - private String endDate; + private OffsetDateTime endDate; + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") @JsonProperty("executionId") private String executionId; @JsonProperty("formKey") @@ -155,15 +162,15 @@ public class Task { return this; } - public String getCreated() { + public OffsetDateTime getCreated() { return created; } - public void setCreated(String created) { + public void setCreated(OffsetDateTime created) { this.created = created; } - public Task withCreated(String created) { + public Task withCreated(OffsetDateTime created) { this.created = created; return this; } @@ -181,15 +188,15 @@ public class Task { return this; } - public String getDueDate() { + public OffsetDateTime getDueDate() { return dueDate; } - public void setDueDate(String dueDate) { + public void setDueDate(OffsetDateTime dueDate) { this.dueDate = dueDate; } - public Task withDueDate(String dueDate) { + public Task withDueDate(OffsetDateTime dueDate) { this.dueDate = dueDate; return this; } @@ -207,15 +214,15 @@ public class Task { return this; } - public String getEndDate() { + public OffsetDateTime getEndDate() { return endDate; } - public void setEndDate(String endDate) { + public void setEndDate(OffsetDateTime endDate) { this.endDate = endDate; } - public Task withEndDate(String endDate) { + public Task withEndDate(OffsetDateTime endDate) { this.endDate = endDate; return this; } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/TaskFilter.java b/src/main/java/com/inteligr8/alfresco/activiti/model/TaskFilter.java new file mode 100644 index 0000000..7561d9c --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/TaskFilter.java @@ -0,0 +1,181 @@ + + +package com.inteligr8.alfresco.activiti.model; + +import java.time.OffsetDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonFormat.Shape; +import com.inteligr8.activiti.model.Datum; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "name", + "assignment", + "dueAfter", + "dueBefore", + "processDefinitionId", + "processDefinitionKey", + "sort", + "asc", + "state" +}) +public class TaskFilter extends Datum { + + public enum State { + @JsonProperty("all") + All, + @JsonProperty("completed") + Completed, + @JsonProperty("running") + Running + } + + @JsonProperty("name") + private String name; + @JsonProperty("assignment") + private String assignment; + @JsonProperty("dueBefore") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime dueBefore; + @JsonProperty("dueAfter") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime dueAfter; + @JsonProperty("processDefinitionId") + private String processDefinitionId; + @JsonProperty("processDefinitionKey") + private String processDefinitionKey; + @JsonProperty("sort") + private String sort; + @JsonProperty("asc") + private Boolean asc; + @JsonProperty("state") + private State state; + + /** + * No args constructor for use in serialization + */ + public TaskFilter() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public TaskFilter withName(String name) { + this.name = name; + return this; + } + + public String getAssignment() { + return assignment; + } + + public void setAssignment(String assignment) { + this.assignment = assignment; + } + + public TaskFilter withAssignment(String assignment) { + this.assignment = assignment; + return this; + } + + public OffsetDateTime getDueAfter() { + return dueAfter; + } + + public void setDueAfter(OffsetDateTime dueAfter) { + this.dueAfter = dueAfter; + } + + public TaskFilter withDueAfter(OffsetDateTime dueAfter) { + this.dueAfter = dueAfter; + return this; + } + + public OffsetDateTime getDueBefore() { + return dueBefore; + } + + public void setDueBefore(OffsetDateTime dueBefore) { + this.dueBefore = dueBefore; + } + + public TaskFilter withDueBefore(OffsetDateTime dueBefore) { + this.dueBefore = dueBefore; + return this; + } + + public String getProcessDefinitionId() { + return processDefinitionId; + } + + public void setProcessDefinitionId(String id) { + this.processDefinitionId = id; + } + + public TaskFilter withProcessDefinitionId(String id) { + this.processDefinitionId = id; + return this; + } + + public String getProcessDefinitionKey() { + return processDefinitionKey; + } + + public void setProcessDefinitionKey(String key) { + this.processDefinitionKey = key; + } + + public TaskFilter withProcessDefinitionKey(String key) { + this.processDefinitionKey = key; + return this; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort; + } + + public TaskFilter withSort(String sort) { + this.sort = sort; + return this; + } + + public Boolean isAsc() { + return asc; + } + + public void setAsc(Boolean asc) { + this.asc = asc; + } + + public TaskFilter withAsc(Boolean asc) { + this.asc = asc; + return this; + } + + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + + public TaskFilter withState(State state) { + this.state = state; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/TaskFilterRepresentation.java b/src/main/java/com/inteligr8/alfresco/activiti/model/TaskFilterRepresentation.java new file mode 100644 index 0000000..2b4f73c --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/TaskFilterRepresentation.java @@ -0,0 +1,101 @@ + + +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "filterId", + "filter", + "appDefinitionId", + "page", + "size" +}) +public class TaskFilterRepresentation { + + @JsonProperty("filterId") + private Long filterId; + @JsonProperty("filter") + private TaskFilter filter; + @JsonProperty("appDefinitionId") + private Long appDefinitionId; + @JsonProperty("page") + private Integer page; + @JsonProperty("size") + private Integer size; + + /** + * No args constructor for use in serialization + */ + public TaskFilterRepresentation() { + } + + public Long getFilterId() { + return filterId; + } + + public void setFilterId(Long filterId) { + this.filterId = filterId; + } + + public TaskFilterRepresentation withFilterId(Long filterId) { + this.filterId = filterId; + return this; + } + + public TaskFilter getFilter() { + return filter; + } + + public void setFilter(TaskFilter filter) { + this.filter = filter; + } + + public TaskFilterRepresentation withFilter(TaskFilter filter) { + this.filter = filter; + return this; + } + + public Long getAppDefinitionId() { + return appDefinitionId; + } + + public void setAppDefinitionId(Long appDefinitionId) { + this.appDefinitionId = appDefinitionId; + } + + public TaskFilterRepresentation withAppDefinitionId(Long appDefinitionId) { + this.appDefinitionId = appDefinitionId; + return this; + } + + public Integer getPage() { + return page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public TaskFilterRepresentation withPage(Integer page) { + this.page = page; + return this; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public TaskFilterRepresentation withSize(Integer size) { + this.size = size; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/TaskQueryRepresentation.java b/src/main/java/com/inteligr8/alfresco/activiti/model/TaskQueryRepresentation.java new file mode 100644 index 0000000..05bf318 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/TaskQueryRepresentation.java @@ -0,0 +1,243 @@ + + +package com.inteligr8.alfresco.activiti.model; + +import java.time.OffsetDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonFormat.Shape; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "text", + "assignment", + "taskId", + "dueAfter", + "dueBefore", + "processInstanceId", + "processDefinitionId", + "appDefinitionId", + "includeProcessInstance", + "includeProcessVariables", + "includeTaskLocalVariables", + "page", + "size", + "sort", + "start", + "state" +}) +public class TaskQueryRepresentation { + + public enum Sort { + @JsonProperty("created-asc") + CreatedAsc, + @JsonProperty("created-desc") + CreatedDesc, + @JsonProperty("due-asc") + DueAsc, + @JsonProperty("due-desc") + DueDesc, + } + + public enum State { + @JsonProperty("all") + All, + @JsonProperty("completed") + Completed, + @JsonProperty("active") + Active + } + + @JsonProperty("text") + private String text; + @JsonProperty("dueBefore") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime dueBefore; + @JsonProperty("dueAfter") + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime dueAfter; + @JsonProperty("taskId") + private String taskId; + @JsonProperty("processInstanceId") + private String processInstanceId; + @JsonProperty("processDefinitionId") + private String processDefinitionId; + @JsonProperty("appDefinitionId") + private Long appDefinitionId; + @JsonProperty("page") + private Integer page; + @JsonProperty("size") + private Integer size; + @JsonProperty("sort") + private Sort sort; + @JsonProperty("start") + private Integer start; + @JsonProperty("state") + private State state; + + /** + * No args constructor for use in serialization + */ + public TaskQueryRepresentation() { + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public TaskQueryRepresentation withText(String text) { + this.text = text; + return this; + } + + public OffsetDateTime getDueAfter() { + return dueAfter; + } + + public void setDueAfter(OffsetDateTime dueAfter) { + this.dueAfter = dueAfter; + } + + public TaskQueryRepresentation withDueAfter(OffsetDateTime dueAfter) { + this.dueAfter = dueAfter; + return this; + } + + public OffsetDateTime getDueBefore() { + return dueBefore; + } + + public void setDueBefore(OffsetDateTime dueBefore) { + this.dueBefore = dueBefore; + } + + public TaskQueryRepresentation withDueBefore(OffsetDateTime dueBefore) { + this.dueBefore = dueBefore; + return this; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public TaskQueryRepresentation withTaskId(String taskId) { + this.taskId = taskId; + return this; + } + + public Long getAppDefinitionId() { + return appDefinitionId; + } + + public void setAppDefinitionId(Long appDefinitionId) { + this.appDefinitionId = appDefinitionId; + } + + public TaskQueryRepresentation withAppDefinitionId(Long appDefinitionId) { + this.appDefinitionId = appDefinitionId; + return this; + } + + public String getProcessDefinitionId() { + return processDefinitionId; + } + + public void setProcessDefinitionId(String processDefinitionId) { + this.processDefinitionId = processDefinitionId; + } + + public TaskQueryRepresentation withProcessDefinitionId(String processDefinitionId) { + this.processDefinitionId = processDefinitionId; + return this; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public TaskQueryRepresentation withProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + return this; + } + + public Integer getPage() { + return page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public TaskQueryRepresentation withPage(Integer page) { + this.page = page; + return this; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public TaskQueryRepresentation withSize(Integer size) { + this.size = size; + return this; + } + + public Sort getSort() { + return sort; + } + + public void setSort(Sort sort) { + this.sort = sort; + } + + public TaskQueryRepresentation withSort(Sort sort) { + this.sort = sort; + return this; + } + + public Integer getStart() { + return start; + } + + public void setStart(Integer start) { + this.start = start; + } + + public TaskQueryRepresentation withStart(Integer start) { + this.start = start; + return this; + } + + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + + public TaskQueryRepresentation withState(State state) { + this.state = state; + return this; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/TaskUpdate.java b/src/main/java/com/inteligr8/alfresco/activiti/model/TaskUpdate.java index 32a2d92..708c725 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/TaskUpdate.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/TaskUpdate.java @@ -1,9 +1,13 @@ package com.inteligr8.alfresco.activiti.model; +import java.time.OffsetDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonFormat.Shape; @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ @@ -33,7 +37,8 @@ public class TaskUpdate { @JsonProperty("descriptionSet") private Boolean descriptionSet; @JsonProperty("dueDate") - private String dueDate; + @JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") + private OffsetDateTime dueDate; @JsonProperty("dueDateSet") private Boolean dueDateSet; @JsonProperty("formKey") @@ -111,15 +116,15 @@ public class TaskUpdate { return this; } - public String getDueDate() { + public OffsetDateTime getDueDate() { return dueDate; } - public void setDueDate(String dueDate) { + public void setDueDate(OffsetDateTime dueDate) { this.dueDate = dueDate; } - public TaskUpdate withDueDate(String dueDate) { + public TaskUpdate withDueDate(OffsetDateTime dueDate) { this.dueDate = dueDate; return this; } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/UserIdentifier.java b/src/main/java/com/inteligr8/alfresco/activiti/model/UserIdentifier.java new file mode 100644 index 0000000..36c2f0c --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/UserIdentifier.java @@ -0,0 +1,42 @@ +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class UserIdentifier { + + @JsonProperty + private String userId; + @JsonProperty + private String email; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public UserIdentifier withUserId(String userId) { + this.userId = userId; + return this; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public UserIdentifier withEmail(String email) { + this.email = email; + return this; + } + +}