From 9019889239ba830d29981eece1fe2d9ee9b03577 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Mon, 23 Sep 2024 15:11:34 -0400 Subject: [PATCH] added ProcessDefinitionApi --- .../activiti/ActivitiPublicRestApi.java | 5 + .../activiti/api/ProcessDefinitionApi.java | 136 ++++++++++++++++++ .../model/ProcessDefinitionAction.java | 89 ++++++++++++ 3 files changed, 230 insertions(+) create mode 100644 src/main/java/com/inteligr8/activiti/api/ProcessDefinitionApi.java create mode 100644 src/main/java/com/inteligr8/activiti/model/ProcessDefinitionAction.java diff --git a/src/main/java/com/inteligr8/activiti/ActivitiPublicRestApi.java b/src/main/java/com/inteligr8/activiti/ActivitiPublicRestApi.java index ae6ac0c..d425e9c 100644 --- a/src/main/java/com/inteligr8/activiti/ActivitiPublicRestApi.java +++ b/src/main/java/com/inteligr8/activiti/ActivitiPublicRestApi.java @@ -18,6 +18,7 @@ import com.inteligr8.activiti.api.DeadletterJobsApi; import com.inteligr8.activiti.api.ExecutionApi; import com.inteligr8.activiti.api.JobsApi; import com.inteligr8.activiti.api.ManagementApi; +import com.inteligr8.activiti.api.ProcessDefinitionApi; import com.inteligr8.activiti.api.ProcessInstanceApi; import com.inteligr8.activiti.api.RuntimeApi; import com.inteligr8.activiti.api.TimerJobsApi; @@ -52,6 +53,10 @@ public interface ActivitiPublicRestApi { return this.getApi(TimerJobsApi.class); } + default ProcessDefinitionApi getProcessDefinitionApi() { + return this.getApi(ProcessDefinitionApi.class); + } + default ProcessInstanceApi getProcessInstanceApi() { return this.getApi(ProcessInstanceApi.class); } diff --git a/src/main/java/com/inteligr8/activiti/api/ProcessDefinitionApi.java b/src/main/java/com/inteligr8/activiti/api/ProcessDefinitionApi.java new file mode 100644 index 0000000..db9f2b5 --- /dev/null +++ b/src/main/java/com/inteligr8/activiti/api/ProcessDefinitionApi.java @@ -0,0 +1,136 @@ +/* + * 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 com.inteligr8.activiti.api.ProcessInstanceApi.Sort; +import com.inteligr8.activiti.model.ProcessDefinitionAction; +import com.inteligr8.activiti.model.ResultList; +import com.inteligr8.activiti.model.SortOrder; +import com.inteligr8.activiti.model.ProcessDefinitionAction.ActionValue; +import com.inteligr8.alfresco.activiti.model.ProcessDefinition; +import com.inteligr8.alfresco.activiti.model.ProcessInstance; + +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.GET; +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/repository/process-definitions") +public interface ProcessDefinitionApi { + + @GET + @Path("{processDefinitionId}") + @Produces({ MediaType.APPLICATION_JSON }) + ProcessDefinition get( + @PathParam("processDefinitionId") String processDefinitionId); + + default void activate( + String processDefinitionId) { + this.act(processDefinitionId, new ProcessDefinitionAction(ActionValue.Activate)); + } + + default void suspend( + String processDefinitionId) { + this.act(processDefinitionId, new ProcessDefinitionAction(ActionValue.Suspend)); + } + + @PUT + @Path("{processDefinitionId}") + @Consumes({ MediaType.APPLICATION_JSON }) + void act( + @PathParam("processDefinitionId") String processDefinitionId, + ProcessDefinitionAction action); + + default ResultList getByTenant( + String category, + String categoryLike, + String categoryNotEquals, + String key, + String keyLike, + String name, + String nameLike, + String resourceName, + String resourceNameLike, + String version, + Boolean suspended, + boolean latest, + String deploymentId, + String startableByUser, + String tenantId, + Sort sort, + SortOrder sortOrder, + Integer pageStart, + Integer pageSize) { + return this.getByAny(category, categoryLike, categoryNotEquals, key, keyLike, + name, nameLike, resourceName, resourceNameLike, version, + suspended, latest, deploymentId, startableByUser, + tenantId, null, sort, sortOrder, pageStart, pageSize); + } + + default ResultList getByTenants( + String category, + String categoryLike, + String categoryNotEquals, + String key, + String keyLike, + String name, + String nameLike, + String resourceName, + String resourceNameLike, + String version, + Boolean suspended, + boolean latest, + String deploymentId, + String startableByUser, + String tenantIdLike, + Sort sort, + SortOrder sortOrder, + Integer pageStart, + Integer pageSize) { + return this.getByAny(category, categoryLike, categoryNotEquals, key, keyLike, + name, nameLike, resourceName, resourceNameLike, version, + suspended, latest, deploymentId, startableByUser, + null, tenantIdLike, sort, sortOrder, pageStart, pageSize); + } + + @GET + @Produces({ MediaType.APPLICATION_JSON }) + public ResultList getByAny( + @QueryParam("category") String category, + @QueryParam("categoryLike") String categoryLike, + @QueryParam("categoryNotEquals") String categoryNotEquals, + @QueryParam("key") String key, + @QueryParam("keyLike") String keyLike, + @QueryParam("name") String name, + @QueryParam("nameLike") String nameLike, + @QueryParam("resourceName") String resourceName, + @QueryParam("resourceNameLike") String resourceNameLike, + @QueryParam("version") String version, + @QueryParam("suspended") Boolean suspended, + @QueryParam("latest") Boolean latest, + @QueryParam("deploymentId") String deploymentId, + @QueryParam("startableByUser") String startableByUser, + @QueryParam("tenantId") String tenantId, + @QueryParam("tenantIdLike") String tenantIdLike, + @QueryParam("sort") Sort sort, + @QueryParam("order") SortOrder sortOrder, + @QueryParam("start") Integer pageStart, + @QueryParam("size") Integer pageSize); + +} diff --git a/src/main/java/com/inteligr8/activiti/model/ProcessDefinitionAction.java b/src/main/java/com/inteligr8/activiti/model/ProcessDefinitionAction.java new file mode 100644 index 0000000..787669c --- /dev/null +++ b/src/main/java/com/inteligr8/activiti/model/ProcessDefinitionAction.java @@ -0,0 +1,89 @@ +package com.inteligr8.activiti.model; + +import java.time.OffsetDateTime; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ProcessDefinitionAction { + + public enum ActionValue { + @JsonProperty("suspend") + Suspend, + @JsonProperty("activate") + Activate + } + + @JsonProperty("action") + private ActionValue action; + @JsonProperty("includeProcessInstances") + private boolean includeProcessInstances; + @JsonProperty("date") + private OffsetDateTime date; + @JsonProperty("category") + private String category; + + /** + * No args constructor for use in serialization + */ + public ProcessDefinitionAction() { + } + + public ProcessDefinitionAction(ActionValue action) { + this.action = action; + } + + public ActionValue getAction() { + return action; + } + + public void setAction(ActionValue action) { + this.action = action; + } + + public ProcessDefinitionAction withAction(ActionValue action) { + this.action = action; + return this; + } + + public boolean isIncludeProcessInstances() { + return includeProcessInstances; + } + + public void setIncludeProcessInstances(boolean includeProcessInstances) { + this.includeProcessInstances = includeProcessInstances; + } + + public ProcessDefinitionAction withIncludeProcessInstances(boolean includeProcessInstances) { + this.includeProcessInstances = includeProcessInstances; + return this; + } + + public OffsetDateTime getDate() { + return date; + } + + public void setDate(OffsetDateTime date) { + this.date = date; + } + + public ProcessDefinitionAction withDate(OffsetDateTime date) { + this.date = date; + return this; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public ProcessDefinitionAction withCategory(String category) { + this.category = category; + return this; + } + +}