Compare commits

..

6 Commits

16 changed files with 414 additions and 509 deletions

10
pom.xml
View File

@ -5,7 +5,7 @@
<groupId>com.inteligr8.alfresco</groupId> <groupId>com.inteligr8.alfresco</groupId>
<artifactId>aps-public-rest-api</artifactId> <artifactId>aps-public-rest-api</artifactId>
<version>3.0.2</version> <version>3.0-SNAPSHOT</version>
<name>Alfresco Process Services ReST API for Java</name> <name>Alfresco Process Services ReST API for Java</name>
<description>An APS API library for building REST API clients that support both the CXF and Jersey frameworks</description> <description>An APS API library for building REST API clients that support both the CXF and Jersey frameworks</description>
@ -43,9 +43,9 @@
<maven.compiler.release>11</maven.compiler.release> <maven.compiler.release>11</maven.compiler.release>
<maven.compiler.debuglevel>lines,vars,source</maven.compiler.debuglevel> <maven.compiler.debuglevel>lines,vars,source</maven.compiler.debuglevel>
<jersey.version>3.1.8</jersey.version> <jersey.version>3.1.10</jersey.version>
<cxf.version>4.0.2</cxf.version> <cxf.version>4.1.0</cxf.version>
<jackson.version>2.17.2</jackson.version> <jackson.version>2.18.1</jackson.version>
</properties> </properties>
<dependencies> <dependencies>
@ -61,7 +61,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.module</groupId> <groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId> <artifactId>jackson-module-jakarta-xmlbind-annotations</artifactId>
<version>${jackson.version}</version> <version>${jackson.version}</version>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -17,6 +17,11 @@ package com.inteligr8.activiti.api;
import java.io.File; import java.io.File;
import java.time.LocalDate; import java.time.LocalDate;
import com.inteligr8.activiti.model.Job;
import com.inteligr8.activiti.model.ProcessInstanceAction;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.SortOrder;
import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE; import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET; import jakarta.ws.rs.GET;
@ -27,12 +32,6 @@ import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import com.inteligr8.activiti.model.ProcessInstanceAction;
import com.inteligr8.activiti.model.ProcessInstanceAction.ActionValue;
import com.inteligr8.activiti.model.Job;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.SortOrder;
public interface BaseJobsApi { public interface BaseJobsApi {
@GET @GET
@ -53,17 +52,6 @@ public interface BaseJobsApi {
@PathParam("jobId") String jobId, @PathParam("jobId") String jobId,
ProcessInstanceAction execute); ProcessInstanceAction execute);
default void executeJob(
String jobId,
ActionValue action) {
this.executeJob(jobId, new ProcessInstanceAction(action));
}
default void executeJob(
String jobId) {
this.executeJob(jobId, new ProcessInstanceAction(ActionValue.Execute));
}
@GET @GET
@Path("{jobId}/execution-stacktrace") @Path("{jobId}/execution-stacktrace")
@Produces({ MediaType.APPLICATION_OCTET_STREAM }) @Produces({ MediaType.APPLICATION_OCTET_STREAM })

View File

@ -16,6 +16,13 @@ package com.inteligr8.activiti.api;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.inteligr8.activiti.model.Execution;
import com.inteligr8.activiti.model.ProcessInstanceAction;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.SortOrder;
import com.inteligr8.activiti.model.Variable;
import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET; import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST; import jakarta.ws.rs.POST;
@ -26,15 +33,6 @@ import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.inteligr8.activiti.model.ProcessInstanceAction;
import com.inteligr8.activiti.model.ProcessInstanceAction.ActionValue;
import com.inteligr8.activiti.model.Execution;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.SignalEventAction;
import com.inteligr8.activiti.model.SortOrder;
import com.inteligr8.activiti.model.Variable;
@Path("/api/runtime/executions") @Path("/api/runtime/executions")
public interface ExecutionApi { public interface ExecutionApi {
@ -68,35 +66,6 @@ public interface ExecutionApi {
List<String> getActiveActivities( List<String> getActiveActivities(
@PathParam("executionId") String executionId); @PathParam("executionId") String executionId);
default Execution signal(
String processInstanceId,
List<Variable> variables) {
ProcessInstanceAction action = new ProcessInstanceAction(ActionValue.Signal);
if (variables != null && !variables.isEmpty())
action.setVariables(variables);
return this.execute(processInstanceId, action);
}
default Execution signalReceived(
String processInstanceId,
String signal,
List<Variable> variables) {
ProcessInstanceAction action = new SignalEventAction(ActionValue.SignalReceived, signal);
if (variables != null && !variables.isEmpty())
action.setVariables(variables);
return this.execute(processInstanceId, action);
}
default Execution messageReceived(
String processInstanceId,
String message,
List<Variable> variables) {
ProcessInstanceAction action = new SignalEventAction(ActionValue.MessageReceived, message);
if (variables != null && !variables.isEmpty())
action.setVariables(variables);
return this.execute(processInstanceId, action);
}
@PUT @PUT
@Path("{executionId}") @Path("{executionId}")
@Consumes({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON })
@ -105,61 +74,39 @@ public interface ExecutionApi {
@PathParam("executionId") String executionId, @PathParam("executionId") String executionId,
ProcessInstanceAction action); ProcessInstanceAction action);
default ResultList<Execution> getWithoutTenant( @GET
String executionId, @Produces({ MediaType.APPLICATION_JSON })
String activityId, ResultList<Execution> getByTenant(
String processDefinitionKey, @QueryParam("id") String executionId,
String processDefinitionId, @QueryParam("activityId") String activityId,
String processInstanceId, @QueryParam("processDefinitionKey") String processDefinitionKey,
String messageEventSubscriptionName, @QueryParam("processDefinitionId") String processDefinitionId,
String signalEventSubscriptionName, @QueryParam("processInstanceId") String processInstanceId,
String parentId, @QueryParam("messageEventSubscriptionName") String messageEventSubscriptionName,
Sort sort, @QueryParam("signalEventSubscriptionName") String signalEventSubscriptionName,
SortOrder sortOrder, @QueryParam("parentId") String parentId,
Integer pageStart, @QueryParam("tenantId") String tenantId,
Integer pageSize) { @QueryParam("sort") Sort sort,
return this.getByAny(executionId, activityId, processDefinitionKey, processDefinitionId, processInstanceId, @QueryParam("order") SortOrder sortOrder,
messageEventSubscriptionName, signalEventSubscriptionName, parentId, null, null, true, @QueryParam("start") Integer pageStart,
sort, sortOrder, pageStart, pageSize); @QueryParam("size") Integer pageSize);
}
default ResultList<Execution> getByTenant( @GET
String executionId, @Produces({ MediaType.APPLICATION_JSON })
String activityId, ResultList<Execution> getByTenants(
String processDefinitionKey, @QueryParam("id") String executionId,
String processDefinitionId, @QueryParam("activityId") String activityId,
String processInstanceId, @QueryParam("processDefinitionKey") String processDefinitionKey,
String messageEventSubscriptionName, @QueryParam("processDefinitionId") String processDefinitionId,
String signalEventSubscriptionName, @QueryParam("processInstanceId") String processInstanceId,
String parentId, @QueryParam("messageEventSubscriptionName") String messageEventSubscriptionName,
String tenantId, @QueryParam("signalEventSubscriptionName") String signalEventSubscriptionName,
Sort sort, @QueryParam("parentId") String parentId,
SortOrder sortOrder, @QueryParam("tenantIdLike") String tenantIdLike,
Integer pageStart, @QueryParam("sort") Sort sort,
Integer pageSize) { @QueryParam("order") SortOrder sortOrder,
return this.getByAny(executionId, activityId, processDefinitionKey, processDefinitionId, processInstanceId, @QueryParam("start") Integer pageStart,
messageEventSubscriptionName, signalEventSubscriptionName, parentId, tenantId, null, false, @QueryParam("size") Integer pageSize);
sort, sortOrder, pageStart, pageSize);
}
default ResultList<Execution> getByTenants(
String executionId,
String activityId,
String processDefinitionKey,
String processDefinitionId,
String processInstanceId,
String messageEventSubscriptionName,
String signalEventSubscriptionName,
String parentId,
String tenantIdLike,
Sort sort,
SortOrder sortOrder,
Integer pageStart,
Integer pageSize) {
return this.getByAny(executionId, activityId, processDefinitionKey, processDefinitionId, processInstanceId,
messageEventSubscriptionName, signalEventSubscriptionName, parentId, null, tenantIdLike, false,
sort, sortOrder, pageStart, pageSize);
}
@GET @GET
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
@ -207,12 +154,6 @@ public interface ExecutionApi {
void updateVariables( void updateVariables(
@PathParam("executionId") String executionId, @PathParam("executionId") String executionId,
List<Variable> variables); List<Variable> variables);
default void updateVariable(
String executionId,
Variable variable) {
this.updateVariable(executionId, variable.getName(), variable);
}
@PUT @PUT
@Path("{executionId}/variables/{variableName}") @Path("{executionId}/variables/{variableName}")

View File

@ -15,12 +15,10 @@
package com.inteligr8.activiti.api; package com.inteligr8.activiti.api;
import com.inteligr8.activiti.api.ProcessInstanceApi.Sort; import com.inteligr8.activiti.api.ProcessInstanceApi.Sort;
import com.inteligr8.activiti.model.ProcessDefinition;
import com.inteligr8.activiti.model.ProcessDefinitionAction; import com.inteligr8.activiti.model.ProcessDefinitionAction;
import com.inteligr8.activiti.model.ResultList; import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.SortOrder; 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.Consumes;
import jakarta.ws.rs.GET; import jakarta.ws.rs.GET;
@ -40,16 +38,6 @@ public interface ProcessDefinitionApi {
ProcessDefinition get( ProcessDefinition get(
@PathParam("processDefinitionId") String processDefinitionId); @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 @PUT
@Path("{processDefinitionId}") @Path("{processDefinitionId}")
@Consumes({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON })
@ -57,61 +45,9 @@ public interface ProcessDefinitionApi {
@PathParam("processDefinitionId") String processDefinitionId, @PathParam("processDefinitionId") String processDefinitionId,
ProcessDefinitionAction action); ProcessDefinitionAction action);
default ResultList<ProcessInstance> 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<ProcessInstance> 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 @GET
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
public ResultList<ProcessInstance> getByAny( public ResultList<ProcessDefinition> getByAny(
@QueryParam("category") String category, @QueryParam("category") String category,
@QueryParam("categoryLike") String categoryLike, @QueryParam("categoryLike") String categoryLike,
@QueryParam("categoryNotEquals") String categoryNotEquals, @QueryParam("categoryNotEquals") String categoryNotEquals,

View File

@ -17,6 +17,13 @@ package com.inteligr8.activiti.api;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.inteligr8.activiti.model.ProcessInstanceAction;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.SortOrder;
import com.inteligr8.activiti.model.Variable;
import com.inteligr8.alfresco.activiti.model.ProcessInstance;
import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE; import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET; import jakarta.ws.rs.GET;
@ -28,14 +35,6 @@ import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.inteligr8.activiti.model.ProcessInstanceAction;
import com.inteligr8.activiti.model.ProcessInstanceAction.ActionValue;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.SortOrder;
import com.inteligr8.activiti.model.Variable;
import com.inteligr8.alfresco.activiti.model.ProcessInstance;
@Path("/api/runtime/process-instances") @Path("/api/runtime/process-instances")
public interface ProcessInstanceApi { public interface ProcessInstanceApi {
@ -61,16 +60,6 @@ public interface ProcessInstanceApi {
void delete( void delete(
@PathParam("processInstanceId") String processInstanceId); @PathParam("processInstanceId") String processInstanceId);
default void activate(
String processInstanceId) {
this.act(processInstanceId, new ProcessInstanceAction(ActionValue.Activate));
}
default void suspend(
String processInstanceId) {
this.act(processInstanceId, new ProcessInstanceAction(ActionValue.Suspend));
}
@PUT @PUT
@Path("{processInstanceId}") @Path("{processInstanceId}")
@Consumes({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON })
@ -78,70 +67,43 @@ public interface ProcessInstanceApi {
@PathParam("processInstanceId") String processInstanceId, @PathParam("processInstanceId") String processInstanceId,
ProcessInstanceAction action); ProcessInstanceAction action);
default ResultList<ProcessInstance> getWithoutTenant( @GET
String processInstanceId, @Produces({ MediaType.APPLICATION_JSON })
String processDefinitionKey, public ResultList<ProcessInstance> getByTenant(
String processDefinitionId, @QueryParam("id") String processInstanceId,
String businessKey, @QueryParam("processDefinitionKey") String processDefinitionKey,
String involvedUser, @QueryParam("processDefinitionId") String processDefinitionId,
Boolean suspended, @QueryParam("businessKey") String businessKey,
String superProcessInstanceId, @QueryParam("involvedUser") String involvedUser,
String subProcessInstanceId, @QueryParam("suspended") Boolean suspended,
Boolean excludeSubprocesses, @QueryParam("superProcessInstanceId") String superProcessInstanceId,
Boolean includeProcessVariables, @QueryParam("subProcessInstanceId") String subProcessInstanceId,
Sort sort, @QueryParam("excludeSubprocesses") Boolean excludeSubprocesses,
SortOrder sortOrder, @QueryParam("includeProcessVariables") Boolean includeProcessVariables,
Integer pageStart, @QueryParam("tenantId") String tenantId,
Integer pageSize) { @QueryParam("sort") Sort sort,
return this.getByAny(processInstanceId, processDefinitionKey, processDefinitionId, @QueryParam("order") SortOrder sortOrder,
businessKey, involvedUser, suspended, superProcessInstanceId, subProcessInstanceId, @QueryParam("start") Integer pageStart,
excludeSubprocesses, includeProcessVariables, null, null, true, @QueryParam("size") Integer pageSize);
sort, sortOrder, pageStart, pageSize);
}
default ResultList<ProcessInstance> getByTenant( @GET
String processInstanceId, @Produces({ MediaType.APPLICATION_JSON })
String processDefinitionKey, public ResultList<ProcessInstance> getByTenants(
String processDefinitionId, @QueryParam("id") String processInstanceId,
String businessKey, @QueryParam("processDefinitionKey") String processDefinitionKey,
String involvedUser, @QueryParam("processDefinitionId") String processDefinitionId,
Boolean suspended, @QueryParam("businessKey") String businessKey,
String superProcessInstanceId, @QueryParam("involvedUser") String involvedUser,
String subProcessInstanceId, @QueryParam("suspended") Boolean suspended,
Boolean excludeSubprocesses, @QueryParam("superProcessInstanceId") String superProcessInstanceId,
Boolean includeProcessVariables, @QueryParam("subProcessInstanceId") String subProcessInstanceId,
String tenantId, @QueryParam("excludeSubprocesses") Boolean excludeSubprocesses,
Sort sort, @QueryParam("includeProcessVariables") Boolean includeProcessVariables,
SortOrder sortOrder, @QueryParam("tenantIdLike") String tenantIdLike,
Integer pageStart, @QueryParam("sort") Sort sort,
Integer pageSize) { @QueryParam("order") SortOrder sortOrder,
return this.getByAny(processInstanceId, processDefinitionKey, processDefinitionId, @QueryParam("start") Integer pageStart,
businessKey, involvedUser, suspended, superProcessInstanceId, subProcessInstanceId, @QueryParam("size") Integer pageSize);
excludeSubprocesses, includeProcessVariables, tenantId, null, false,
sort, sortOrder, pageStart, pageSize);
}
default ResultList<ProcessInstance> getByTenants(
String processInstanceId,
String processDefinitionKey,
String processDefinitionId,
String businessKey,
String involvedUser,
Boolean suspended,
String superProcessInstanceId,
String subProcessInstanceId,
Boolean excludeSubprocesses,
Boolean includeProcessVariables,
String tenantIdLike,
Sort sort,
SortOrder sortOrder,
Integer pageStart,
Integer pageSize) {
return this.getByAny(processInstanceId, processDefinitionKey, processDefinitionId,
businessKey, involvedUser, suspended, superProcessInstanceId, subProcessInstanceId,
excludeSubprocesses, includeProcessVariables, null, tenantIdLike, false,
sort, sortOrder, pageStart, pageSize);
}
@GET @GET
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
@ -196,12 +158,6 @@ public interface ProcessInstanceApi {
void updateVariables( void updateVariables(
@PathParam("processInstanceId") String processInstanceId, @PathParam("processInstanceId") String processInstanceId,
List<Variable> variables); List<Variable> variables);
default void updateVariable(
String processInstanceId,
Variable variable) {
this.updateVariable(processInstanceId, variable.getName(), variable);
}
@PUT @PUT
@Path("{processInstanceId}/variables/{variableName}") @Path("{processInstanceId}/variables/{variableName}")

View File

@ -0,0 +1,243 @@
package com.inteligr8.activiti.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ProcessDefinition extends Datum {
@JsonProperty("category")
private String category;
@JsonProperty("deploymentId")
private String deploymentId;
@JsonProperty("deploymentUrl")
private String deploymentUrl;
@JsonProperty("diagramResource")
private String diagramResource;
@JsonProperty("description")
private String description;
@JsonProperty("graphicalNotationDefined")
private boolean graphicalNotationDefined;
@JsonProperty("id")
private String id;
@JsonProperty("key")
private String key;
@JsonProperty("name")
private String name;
@JsonProperty("resource")
private String resource;
@JsonProperty("startFormDefined")
private boolean startFormDefined;
@JsonProperty("suspended")
private boolean suspended;
@JsonProperty("tenantId")
private String tenantId;
@JsonProperty("url")
private String url;
@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 getDeploymentUrl() {
return deploymentUrl;
}
public void setDeploymentUrl(String deploymentUrl) {
this.deploymentUrl = deploymentUrl;
}
public ProcessDefinition withDeploymentUrl(String deploymentUrl) {
this.deploymentUrl = deploymentUrl;
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 String getDiagramResource() {
return diagramResource;
}
public void setDiagramResource(String diagramResource) {
this.diagramResource = diagramResource;
}
public ProcessDefinition withDiagramResource(String diagramResource) {
this.diagramResource = diagramResource;
return this;
}
public boolean isGraphicalNotationDefined() {
return graphicalNotationDefined;
}
public void setGraphicalNotationDefined(boolean graphicalNotationDefined) {
this.graphicalNotationDefined = graphicalNotationDefined;
}
public ProcessDefinition withGraphicalNotationDefined(boolean graphicalNotationDefined) {
this.graphicalNotationDefined = graphicalNotationDefined;
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 getResource() {
return resource;
}
public void setResource(String resource) {
this.resource = resource;
}
public ProcessDefinition withResource(String resource) {
this.resource = resource;
return this;
}
public boolean isStartFormDefined() {
return startFormDefined;
}
public void setStartFormDefined(boolean startFormDefined) {
this.startFormDefined = startFormDefined;
}
public ProcessDefinition withStartFormDefined(boolean startFormDefined) {
this.startFormDefined = startFormDefined;
return this;
}
public boolean isSuspended() {
return suspended;
}
public void setSuspended(boolean suspended) {
this.suspended = suspended;
}
public ProcessDefinition withSuspended(boolean suspended) {
this.suspended = suspended;
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 String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public ProcessDefinition withUrl(String url) {
this.url = url;
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;
}
}

View File

@ -0,0 +1,12 @@
package com.inteligr8.alfresco.activiti;
/**
* This interface appends CXF implementation specific methods to the JAX-RS API
* of the APS Protected ReST API. This is due to a lack of multi-part in the
* JAX-RS specification.
*
* @author brian@inteligr8.com
*/
public interface ApsProtectedRestCxfApi extends ApsProtectedRestApi, ApsPublicRestCxfApi {
}

View File

@ -0,0 +1,12 @@
package com.inteligr8.alfresco.activiti;
/**
* This interface appends Jersey implementation specific methods to the JAX-RS
* API of the APS Protected ReST API. This is due to a lack of multi-part in
* the JAX-RS specification.
*
* @author brian@inteligr8.com
*/
public interface ApsProtectedRestJerseyApi extends ApsProtectedRestApi, ApsPublicRestJerseyApi {
}

View File

@ -16,6 +16,12 @@ package com.inteligr8.alfresco.activiti.api;
import java.io.File; import java.io.File;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.alfresco.activiti.model.AppDefinitionPublishRepresentation;
import com.inteligr8.alfresco.activiti.model.AppDefinitionRepresentation;
import com.inteligr8.alfresco.activiti.model.AppDefinitionSaveRepresentation;
import com.inteligr8.alfresco.activiti.model.AppDefinitionUpdateResultRepresentation;
import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE; import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET; import jakarta.ws.rs.GET;
@ -26,22 +32,22 @@ import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces; import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import com.inteligr8.alfresco.activiti.model.AppDefinitionPublishRepresentation; @Path("/api/enterprise")
import com.inteligr8.alfresco.activiti.model.AppDefinitionRepresentation;
import com.inteligr8.alfresco.activiti.model.AppDefinitionSaveRepresentation;
import com.inteligr8.alfresco.activiti.model.AppDefinitionUpdateResultRepresentation;
@Path("/api/enterprise/app-definitions")
public interface AppDefinitionsApi { public interface AppDefinitionsApi {
@GET @GET
@Path("{modelId}") @Path("runtime-app-definitions")
@Produces({ MediaType.APPLICATION_JSON })
ResultList<AppDefinitionRepresentation> get();
@GET
@Path("app-definitions/{modelId}")
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
AppDefinitionRepresentation get( AppDefinitionRepresentation get(
@PathParam("modelId") Long appId); @PathParam("modelId") Long appId);
@PUT @PUT
@Path("{modelId}") @Path("app-definitions/{modelId}")
@Consumes({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
AppDefinitionUpdateResultRepresentation update( AppDefinitionUpdateResultRepresentation update(
@ -49,22 +55,29 @@ public interface AppDefinitionsApi {
AppDefinitionSaveRepresentation updatedModel); AppDefinitionSaveRepresentation updatedModel);
@DELETE @DELETE
@Path("{appDefinitionId}") @Path("app-definitions/{appDefinitionId}")
void delete( void delete(
@PathParam("appDefinitionId") Long appId); @PathParam("appDefinitionId") Long appId);
@GET @GET
@Path("{modelId}/export") @Path("app-definitions/{modelId}/export")
@Produces({ MediaType.APPLICATION_JSON, "application/zip" }) @Produces({ MediaType.APPLICATION_JSON, "application/zip" })
File export( File export(
@PathParam("modelId") Long appId); @PathParam("modelId") Long appId);
// @POST
// @Path("runtime-app-definitions")
// @Consumes({ MediaType.APPLICATION_JSON })
// @Produces({ MediaType.APPLICATION_JSON })
// void publish(
// AppDefinitionsRepresentation publishModel);
@POST @POST
@Path("{modelId}/publish") @Path("app-definitions/{modelId}/publish")
@Consumes({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
AppDefinitionUpdateResultRepresentation publish( AppDefinitionUpdateResultRepresentation publish(
@PathParam("modelId") Long appId, @PathParam("modelId") Long appId,
AppDefinitionPublishRepresentation publishModel); AppDefinitionPublishRepresentation publishModel);
} }

View File

@ -51,7 +51,7 @@ public interface AppDeploymentsApi {
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
ResultListDataRepresentation<AppDeployment> query( ResultListDataRepresentation<AppDeployment> query(
@QueryParam("nameLike") String nameLike, @QueryParam("nameLike") String nameLike,
@QueryParam("tenantId") Integer tenantId, @QueryParam("tenantId") Long tenantId,
@QueryParam("latest") Boolean latest, @QueryParam("latest") Boolean latest,
@QueryParam("start") Integer start, @QueryParam("start") Integer start,
@QueryParam("sort") String sort, @QueryParam("sort") String sort,

View File

@ -29,7 +29,9 @@ public interface ModelsApi {
enum ModelType { enum ModelType {
Process(0), Process(0),
Form(2), Form(2),
App(3); App(3),
DecisionTable(4),
DataModel(5);
private int id; private int id;
private ModelType(int id) { private ModelType(int id) {

View File

@ -29,7 +29,7 @@ public interface ProcessDefinitionsApi {
@Produces({ "application/json" }) @Produces({ "application/json" })
ResultListDataRepresentation<ProcessDefinition> get( ResultListDataRepresentation<ProcessDefinition> get(
@QueryParam("latest") Boolean latest, @QueryParam("latest") Boolean latest,
@QueryParam("appDefinitionId") Integer appDefinitionId, @QueryParam("appDefinitionId") Long appDefinitionId,
@QueryParam("deploymentId") String deploymentId); @QueryParam("deploymentId") String deploymentId);
} }

View File

@ -138,11 +138,6 @@ public interface TemplatesApi {
@QueryParam("sort") TemplateSort sort, @QueryParam("sort") TemplateSort sort,
@QueryParam("tenantId") Long tenantId); @QueryParam("tenantId") Long tenantId);
default Response getDocumentTemplate(
DocumentTemplateLight template) {
return this.getDocumentTemplate(template.getId(), System.currentTimeMillis());
}
@GET @GET
@Path("document-templates/{templateId}") @Path("document-templates/{templateId}")
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
@ -158,7 +153,7 @@ public interface TemplatesApi {
}) })
public Response getDocumentTemplate( public Response getDocumentTemplate(
@PathParam("templateId") long id, @PathParam("templateId") long id,
@QueryParam("version") long version); @QueryParam("version") Long version);
@DELETE @DELETE
@Path("document-templates/{templateId}") @Path("document-templates/{templateId}")

View File

@ -40,13 +40,13 @@ public class AppDefinition {
@JsonProperty("icon") @JsonProperty("icon")
private String icon; private String icon;
@JsonProperty("id") @JsonProperty("id")
private Integer id; private Long id;
@JsonProperty("modelId") @JsonProperty("modelId")
private Integer modelId; private Long modelId;
@JsonProperty("name") @JsonProperty("name")
private String name; private String name;
@JsonProperty("tenantId") @JsonProperty("tenantId")
private Integer tenantId; private Long tenantId;
@JsonProperty("theme") @JsonProperty("theme")
private String theme; private String theme;
@JsonIgnore @JsonIgnore
@ -113,31 +113,31 @@ public class AppDefinition {
} }
@JsonProperty("id") @JsonProperty("id")
public Integer getId() { public Long getId() {
return id; return id;
} }
@JsonProperty("id") @JsonProperty("id")
public void setId(Integer id) { public void setId(Long id) {
this.id = id; this.id = id;
} }
public AppDefinition withId(Integer id) { public AppDefinition withId(Long id) {
this.id = id; this.id = id;
return this; return this;
} }
@JsonProperty("modelId") @JsonProperty("modelId")
public Integer getModelId() { public Long getModelId() {
return modelId; return modelId;
} }
@JsonProperty("modelId") @JsonProperty("modelId")
public void setModelId(Integer modelId) { public void setModelId(Long modelId) {
this.modelId = modelId; this.modelId = modelId;
} }
public AppDefinition withModelId(Integer modelId) { public AppDefinition withModelId(Long modelId) {
this.modelId = modelId; this.modelId = modelId;
return this; return this;
} }
@ -158,16 +158,16 @@ public class AppDefinition {
} }
@JsonProperty("tenantId") @JsonProperty("tenantId")
public Integer getTenantId() { public Long getTenantId() {
return tenantId; return tenantId;
} }
@JsonProperty("tenantId") @JsonProperty("tenantId")
public void setTenantId(Integer tenantId) { public void setTenantId(Long tenantId) {
this.tenantId = tenantId; this.tenantId = tenantId;
} }
public AppDefinition withTenantId(Integer tenantId) { public AppDefinition withTenantId(Long tenantId) {
this.tenantId = tenantId; this.tenantId = tenantId;
return this; return this;
} }

View File

@ -1,205 +1,12 @@
package com.inteligr8.alfresco.activiti.model; package com.inteligr8.alfresco.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.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
/** /**
* AppDefinitionRepresentation * AppDefinitionRepresentation
* <p> * <p>
* *
* *
*/ */
@JsonInclude(JsonInclude.Include.NON_NULL) public class AppDefinitionRepresentation extends AppDefinition {
@JsonPropertyOrder({
"defaultAppId",
"deploymentId",
"description",
"icon",
"id",
"modelId",
"name",
"tenantId",
"theme"
})
public class AppDefinitionRepresentation {
@JsonProperty("defaultAppId")
private String defaultAppId;
@JsonProperty("deploymentId")
private String deploymentId;
@JsonProperty("description")
private String description;
@JsonProperty("icon")
private String icon;
@JsonProperty("id")
private Integer id;
@JsonProperty("modelId")
private Integer modelId;
@JsonProperty("name")
private String name;
@JsonProperty("tenantId")
private Integer tenantId;
@JsonProperty("theme")
private String theme;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("defaultAppId")
public String getDefaultAppId() {
return defaultAppId;
}
@JsonProperty("defaultAppId")
public void setDefaultAppId(String defaultAppId) {
this.defaultAppId = defaultAppId;
}
public AppDefinitionRepresentation withDefaultAppId(String defaultAppId) {
this.defaultAppId = defaultAppId;
return this;
}
@JsonProperty("deploymentId")
public String getDeploymentId() {
return deploymentId;
}
@JsonProperty("deploymentId")
public void setDeploymentId(String deploymentId) {
this.deploymentId = deploymentId;
}
public AppDefinitionRepresentation withDeploymentId(String deploymentId) {
this.deploymentId = deploymentId;
return this;
}
@JsonProperty("description")
public String getDescription() {
return description;
}
@JsonProperty("description")
public void setDescription(String description) {
this.description = description;
}
public AppDefinitionRepresentation withDescription(String description) {
this.description = description;
return this;
}
@JsonProperty("icon")
public String getIcon() {
return icon;
}
@JsonProperty("icon")
public void setIcon(String icon) {
this.icon = icon;
}
public AppDefinitionRepresentation withIcon(String icon) {
this.icon = icon;
return this;
}
@JsonProperty("id")
public Integer getId() {
return id;
}
@JsonProperty("id")
public void setId(Integer id) {
this.id = id;
}
public AppDefinitionRepresentation withId(Integer id) {
this.id = id;
return this;
}
@JsonProperty("modelId")
public Integer getModelId() {
return modelId;
}
@JsonProperty("modelId")
public void setModelId(Integer modelId) {
this.modelId = modelId;
}
public AppDefinitionRepresentation withModelId(Integer modelId) {
this.modelId = modelId;
return this;
}
@JsonProperty("name")
public String getName() {
return name;
}
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
public AppDefinitionRepresentation withName(String name) {
this.name = name;
return this;
}
@JsonProperty("tenantId")
public Integer getTenantId() {
return tenantId;
}
@JsonProperty("tenantId")
public void setTenantId(Integer tenantId) {
this.tenantId = tenantId;
}
public AppDefinitionRepresentation withTenantId(Integer tenantId) {
this.tenantId = tenantId;
return this;
}
@JsonProperty("theme")
public String getTheme() {
return theme;
}
@JsonProperty("theme")
public void setTheme(String theme) {
this.theme = theme;
}
public AppDefinitionRepresentation withTheme(String theme) {
this.theme = theme;
return this;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
public AppDefinitionRepresentation withAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
return this;
}
} }

View File

@ -91,7 +91,7 @@ public class Task extends Datum {
@JsonProperty("parentTaskName") @JsonProperty("parentTaskName")
private String parentTaskName; private String parentTaskName;
@JsonProperty("priority") @JsonProperty("priority")
private Long priority; private Integer priority;
@JsonProperty("processDefinitionCategory") @JsonProperty("processDefinitionCategory")
private String processDefinitionCategory; private String processDefinitionCategory;
@JsonProperty("processDefinitionDeploymentId") @JsonProperty("processDefinitionDeploymentId")
@ -105,7 +105,7 @@ public class Task extends Datum {
@JsonProperty("processDefinitionName") @JsonProperty("processDefinitionName")
private String processDefinitionName; private String processDefinitionName;
@JsonProperty("processDefinitionVersion") @JsonProperty("processDefinitionVersion")
private Long processDefinitionVersion; private Integer processDefinitionVersion;
@JsonProperty("processInstanceId") @JsonProperty("processInstanceId")
private String processInstanceId; private String processInstanceId;
@JsonProperty("processInstanceName") @JsonProperty("processInstanceName")
@ -370,15 +370,15 @@ public class Task extends Datum {
return this; return this;
} }
public Long getPriority() { public Integer getPriority() {
return priority; return priority;
} }
public void setPriority(Long priority) { public void setPriority(Integer priority) {
this.priority = priority; this.priority = priority;
} }
public Task withPriority(Long priority) { public Task withPriority(Integer priority) {
this.priority = priority; this.priority = priority;
return this; return this;
} }
@ -461,15 +461,15 @@ public class Task extends Datum {
return this; return this;
} }
public Long getProcessDefinitionVersion() { public Integer getProcessDefinitionVersion() {
return processDefinitionVersion; return processDefinitionVersion;
} }
public void setProcessDefinitionVersion(Long processDefinitionVersion) { public void setProcessDefinitionVersion(Integer processDefinitionVersion) {
this.processDefinitionVersion = processDefinitionVersion; this.processDefinitionVersion = processDefinitionVersion;
} }
public Task withProcessDefinitionVersion(Long processDefinitionVersion) { public Task withProcessDefinitionVersion(Integer processDefinitionVersion) {
this.processDefinitionVersion = processDefinitionVersion; this.processDefinitionVersion = processDefinitionVersion;
return this; return this;
} }