Compare commits

..

64 Commits

Author SHA1 Message Date
ad8712fa54 v3.0.1 pom 2024-09-23 15:14:25 -04:00
e354c5be2f Merge branch 'develop' into stable 2024-09-23 15:12:16 -04:00
a146654ea9 Merge branch 'develop' into stable 2024-08-15 12:26:21 -04:00
44d87548bf v2.0.17 pom 2023-11-16 11:38:52 -05:00
775498670e Merge branch 'develop' into stable 2023-11-16 11:38:33 -05:00
9ba16c4b3b v2.0.16 pom 2023-11-16 09:25:24 -05:00
8937539a77 Merge branch 'develop' into stable 2023-11-16 09:21:57 -05:00
b359502c86 v2.0.15 pom 2023-11-15 20:27:38 -05:00
3e3cb195b3 Merge branch 'develop' into stable 2023-11-15 20:00:00 -05:00
6dff96f35f v2.0.14 pom 2023-11-15 16:30:13 -05:00
09d6f5b885 Merge branch 'develop' into stable 2023-11-15 16:25:43 -05:00
bf779a8d18 v2.0.13 pom 2023-11-13 17:35:23 -05:00
6e0e1eaa1c Merge branch 'develop' into stable 2023-11-13 17:35:08 -05:00
f4183d7897 v2.0.12 pom 2023-11-13 17:14:08 -05:00
cced7e76e4 Merge branch 'develop' into stable 2023-11-13 17:08:53 -05:00
550a01278a v2.0.11 pom 2023-06-01 10:25:17 -04:00
39abfcfc22 Merge branch 'develop' into stable 2023-06-01 10:24:56 -04:00
31b1823b76 v2.0.10 pom 2023-05-30 13:28:28 -04:00
20a9504301 Merge branch 'develop' into stable 2023-05-30 13:28:00 -04:00
b4b57b7594 v2.0.10 pom 2023-05-30 12:46:54 -04:00
6067a2e551 Merge branch 'develop' into stable 2023-05-30 12:46:36 -04:00
dbbf71b692 v2.0.9 pom 2023-05-30 10:53:36 -04:00
8dd46fd1f1 Merge branch 'develop' into stable 2023-05-30 10:53:11 -04:00
12530dd951 v2.0.8 pom 2023-05-28 11:56:05 -04:00
998d69f3b9 Merge branch 'develop' into stable 2023-05-28 11:54:12 -04:00
a358be79fb Merge branch 'develop' into stable 2023-05-27 12:31:08 -04:00
8d2b207886 v2.0.6 pom 2023-01-19 17:06:10 -05:00
cddf59689a Merge branch 'develop' into stable 2023-01-19 17:04:42 -05:00
fd80199050 v2.0.5 pom 2023-01-10 17:07:06 -05:00
e29b460ed4 Merge branch 'develop' into stable 2023-01-10 17:06:24 -05:00
a98005618a v2.0.4 pom 2022-12-02 12:18:38 -05:00
3dcdfe7415 Merge branch 'develop' into stable 2022-12-02 12:16:21 -05:00
1e17f5f638 Merge branch 'develop' into stable 2022-10-03 10:20:23 -04:00
7eba0541b4 Merge branch 'develop' into stable 2022-10-03 09:59:06 -04:00
a1ea5ddf17 v2.0.1 pom 2022-05-03 17:11:54 -04:00
6596bf16b1 Merge branch 'develop' into stable 2022-05-03 17:11:23 -04:00
df7c41628a Merge branch 'develop' into stable 2022-05-02 23:40:01 +01:00
96880f911f v1.2.3 pom 2022-04-18 15:50:07 -04:00
707053915f updated common-rest-api to support multipart 2022-04-18 15:48:12 -04:00
57efd8fe4e Merge branch 'develop' into stable 2022-04-18 15:46:53 -04:00
59adc9cea4 v1.2.2 pom 2022-04-07 23:49:57 -04:00
92b038f65b Merge branch 'develop' into stable 2022-04-07 23:48:42 -04:00
e917e3c5aa v1.2.1 pom 2022-03-28 15:04:40 -04:00
6853324d2d Merge branch 'develop' into stable 2022-03-28 14:48:35 -04:00
debfb8d998 updated commons-api to v1.1.2 2021-12-10 17:15:50 -05:00
2c77100246 Merge branch 'develop' into stable 2021-12-10 17:15:42 -05:00
3521365f86 v1.1.3 pom 2021-10-27 14:40:57 -04:00
bca4ea6db0 Merge branch 'develop' into stable 2021-10-27 14:40:30 -04:00
5d2fb8e47b v1.1.2 pom 2021-09-03 13:24:45 -04:00
9d4c8b5cbf Merge branch 'develop' into stable 2021-09-03 13:24:19 -04:00
e5cb8e7517 Merge branch 'develop' into stable 2021-09-01 14:41:53 -04:00
94f3de6386 v1.1.1 pom 2021-09-01 14:41:18 -04:00
a3ab8a5c08 Merge branch 'develop' into stable 2021-08-31 13:28:40 -04:00
78f006849f v1.0.3-v1 pom & common v1.0.1 2021-07-07 11:10:36 -04:00
3d0cb56680 Merge branch 'develop' into stable 2021-07-07 11:09:59 -04:00
6dbb73fa17 using common v1.0.0 2021-06-16 16:10:27 -04:00
7c0dfe919e v1.0.2-v1 pom 2021-06-16 16:03:17 -04:00
8c31f098d4 Merge branch 'develop' into stable 2021-06-16 16:02:42 -04:00
fe41dbef76 v1.0.1-v1 pom 2021-06-04 13:36:28 -04:00
4fe407de0f Merge branch 'develop' into stable 2021-06-04 13:36:05 -04:00
f7ad93797e Merge branch 'develop' into stable 2021-06-03 21:18:31 -04:00
aad2ed6406 Merge branch 'develop' into stable 2021-06-02 14:46:29 -04:00
6125c6b92e Merge branch 'develop' into stable 2021-05-18 21:49:20 -04:00
d81322dd33 v1.11-v2 pom 2021-05-17 15:51:37 -04:00
18 changed files with 533 additions and 487 deletions

10
pom.xml
View File

@ -5,7 +5,7 @@
<groupId>com.inteligr8.alfresco</groupId>
<artifactId>aps-public-rest-api</artifactId>
<version>3.0-SNAPSHOT</version>
<version>3.0.1</version>
<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>
@ -43,9 +43,9 @@
<maven.compiler.release>11</maven.compiler.release>
<maven.compiler.debuglevel>lines,vars,source</maven.compiler.debuglevel>
<jersey.version>3.1.10</jersey.version>
<cxf.version>4.1.0</cxf.version>
<jackson.version>2.18.1</jackson.version>
<jersey.version>3.1.8</jersey.version>
<cxf.version>4.0.2</cxf.version>
<jackson.version>2.17.2</jackson.version>
</properties>
<dependencies>
@ -61,7 +61,7 @@
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jakarta-xmlbind-annotations</artifactId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>

View File

@ -17,11 +17,6 @@ package com.inteligr8.activiti.api;
import java.io.File;
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.DELETE;
import jakarta.ws.rs.GET;
@ -32,6 +27,11 @@ import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
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;
public interface BaseJobsApi {
@GET
@ -52,6 +52,17 @@ public interface BaseJobsApi {
@PathParam("jobId") String jobId,
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
@Path("{jobId}/execution-stacktrace")
@Produces({ MediaType.APPLICATION_OCTET_STREAM })
@ -69,10 +80,7 @@ public interface BaseJobsApi {
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("withoutTenantId") Boolean withoutTenatId,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
@ -86,10 +94,7 @@ public interface BaseJobsApi {
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("tenantId") String tenantId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
@ -104,10 +109,7 @@ public interface BaseJobsApi {
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("withoutTenantId") Boolean withoutTenatId,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
@ -123,10 +125,7 @@ public interface BaseJobsApi {
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("tenantId") String tenantId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
@ -142,10 +141,7 @@ public interface BaseJobsApi {
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("withoutTenantId") Boolean withoutTenatId,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
@ -162,9 +158,6 @@ public interface BaseJobsApi {
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("tenantId") String tenantId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@QueryParam("sort") String sort);
}

View File

@ -16,13 +16,6 @@ package com.inteligr8.activiti.api;
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.GET;
import jakarta.ws.rs.POST;
@ -33,6 +26,15 @@ import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
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")
public interface ExecutionApi {
@ -66,6 +68,35 @@ public interface ExecutionApi {
List<String> getActiveActivities(
@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
@Path("{executionId}")
@Consumes({ MediaType.APPLICATION_JSON })
@ -74,39 +105,61 @@ public interface ExecutionApi {
@PathParam("executionId") String executionId,
ProcessInstanceAction action);
@GET
@Produces({ MediaType.APPLICATION_JSON })
ResultList<Execution> getByTenant(
@QueryParam("id") String executionId,
@QueryParam("activityId") String activityId,
@QueryParam("processDefinitionKey") String processDefinitionKey,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("messageEventSubscriptionName") String messageEventSubscriptionName,
@QueryParam("signalEventSubscriptionName") String signalEventSubscriptionName,
@QueryParam("parentId") String parentId,
@QueryParam("tenantId") String tenantId,
@QueryParam("sort") Sort sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
default ResultList<Execution> getWithoutTenant(
String executionId,
String activityId,
String processDefinitionKey,
String processDefinitionId,
String processInstanceId,
String messageEventSubscriptionName,
String signalEventSubscriptionName,
String parentId,
Sort sort,
SortOrder sortOrder,
Integer pageStart,
Integer pageSize) {
return this.getByAny(executionId, activityId, processDefinitionKey, processDefinitionId, processInstanceId,
messageEventSubscriptionName, signalEventSubscriptionName, parentId, null, null, true,
sort, sortOrder, pageStart, pageSize);
}
@GET
@Produces({ MediaType.APPLICATION_JSON })
ResultList<Execution> getByTenants(
@QueryParam("id") String executionId,
@QueryParam("activityId") String activityId,
@QueryParam("processDefinitionKey") String processDefinitionKey,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("messageEventSubscriptionName") String messageEventSubscriptionName,
@QueryParam("signalEventSubscriptionName") String signalEventSubscriptionName,
@QueryParam("parentId") String parentId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") Sort sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
default ResultList<Execution> getByTenant(
String executionId,
String activityId,
String processDefinitionKey,
String processDefinitionId,
String processInstanceId,
String messageEventSubscriptionName,
String signalEventSubscriptionName,
String parentId,
String tenantId,
Sort sort,
SortOrder sortOrder,
Integer pageStart,
Integer pageSize) {
return this.getByAny(executionId, activityId, processDefinitionKey, processDefinitionId, processInstanceId,
messageEventSubscriptionName, signalEventSubscriptionName, parentId, tenantId, null, false,
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
@Produces({ MediaType.APPLICATION_JSON })
@ -154,6 +207,12 @@ public interface ExecutionApi {
void updateVariables(
@PathParam("executionId") String executionId,
List<Variable> variables);
default void updateVariable(
String executionId,
Variable variable) {
this.updateVariable(executionId, variable.getName(), variable);
}
@PUT
@Path("{executionId}/variables/{variableName}")

View File

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

View File

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

View File

@ -1,243 +0,0 @@
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

@ -1,36 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.inteligr8.alfresco.activiti;
import com.inteligr8.alfresco.activiti.api.ShareApi;
import com.inteligr8.alfresco.activiti.api.TemplatesApi;
/**
* This interface consolidates the JAX-RS APIs available in the Activiti & APS
* public ReST APIs, plus some useful non-public APIs available in APS.
*
* @author brian@inteligr8.com
*/
public interface ApsProtectedRestApi extends ApsPublicRestApi {
default ShareApi getShareApi() {
return this.getApi(ShareApi.class);
}
default TemplatesApi getTemplatesApi() {
return this.getApi(TemplatesApi.class);
}
}

View File

@ -1,12 +0,0 @@
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

@ -1,12 +0,0 @@
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

@ -17,30 +17,28 @@ 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.AppDeploymentsApi;
import com.inteligr8.alfresco.activiti.api.AppVersionApi;
import com.inteligr8.alfresco.activiti.api.HistoricApi;
import com.inteligr8.alfresco.activiti.api.ModelsApi;
import com.inteligr8.alfresco.activiti.api.ProcessDefinitionsApi;
import com.inteligr8.alfresco.activiti.api.ProcessInstancesApi;
import com.inteligr8.alfresco.activiti.api.ProfileApi;
import com.inteligr8.alfresco.activiti.api.ShareApi;
import com.inteligr8.alfresco.activiti.api.TasksApi;
import com.inteligr8.alfresco.activiti.api.TemplatesApi;
/**
* This interface consolidates the JAX-RS APIs available in the Activiti & APS
* public ReST APIs.
* This interface consolidates the JAX-RS APIs available in the APS Public
* ReST API.
*
* @author brian@inteligr8.com
*/
public interface ApsPublicRestApi extends ActivitiPublicRestApi {
<T> T getApi(Class<T> apiClass);
default AdminApi getAdminApi() {
return this.getApi(AdminApi.class);
}
default AppDeploymentsApi getAppDeploymentsApi() {
return this.getApi(AppDeploymentsApi.class);
}
default AppDefinitionsApi getAppDefinitionsApi() {
return this.getApi(AppDefinitionsApi.class);
@ -57,10 +55,6 @@ public interface ApsPublicRestApi extends ActivitiPublicRestApi {
default ModelsApi getModelsApi() {
return this.getApi(ModelsApi.class);
}
default ProcessDefinitionsApi getProcessDefinitionsApi() {
return this.getApi(ProcessDefinitionsApi.class);
}
default ProcessInstancesApi getProcessInstancesApi() {
return this.getApi(ProcessInstancesApi.class);
@ -73,5 +67,17 @@ public interface ApsPublicRestApi extends ActivitiPublicRestApi {
default TasksApi getTasksApi() {
return this.getApi(TasksApi.class);
}
/**
* The following are not part of the official open source or enterprise APIs
*/
default ShareApi getShareApi() {
return this.getApi(ShareApi.class);
}
default TemplatesApi getTemplatesApi() {
return this.getApi(TemplatesApi.class);
}
}

View File

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

View File

@ -30,7 +30,7 @@ public interface AppDeploymentsApi {
@GET
@Path("runtime-app-deployment")
@Produces({ MediaType.APPLICATION_JSON })
@Produces({ "application/json" })
AppDeployment get(
@QueryParam("deploymentId") String deploymentId);
@ -51,7 +51,7 @@ public interface AppDeploymentsApi {
@Produces({ MediaType.APPLICATION_JSON })
ResultListDataRepresentation<AppDeployment> query(
@QueryParam("nameLike") String nameLike,
@QueryParam("tenantId") Long tenantId,
@QueryParam("tenantId") Integer tenantId,
@QueryParam("latest") Boolean latest,
@QueryParam("start") Integer start,
@QueryParam("sort") String sort,

View File

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

View File

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

View File

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

View File

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

View File

@ -1,12 +1,205 @@
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
* <p>
*
*
*/
public class AppDefinitionRepresentation extends AppDefinition {
@JsonInclude(JsonInclude.Include.NON_NULL)
@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")
private String parentTaskName;
@JsonProperty("priority")
private Integer priority;
private Long priority;
@JsonProperty("processDefinitionCategory")
private String processDefinitionCategory;
@JsonProperty("processDefinitionDeploymentId")
@ -105,7 +105,7 @@ public class Task extends Datum {
@JsonProperty("processDefinitionName")
private String processDefinitionName;
@JsonProperty("processDefinitionVersion")
private Integer processDefinitionVersion;
private Long processDefinitionVersion;
@JsonProperty("processInstanceId")
private String processInstanceId;
@JsonProperty("processInstanceName")
@ -370,15 +370,15 @@ public class Task extends Datum {
return this;
}
public Integer getPriority() {
public Long getPriority() {
return priority;
}
public void setPriority(Integer priority) {
public void setPriority(Long priority) {
this.priority = priority;
}
public Task withPriority(Integer priority) {
public Task withPriority(Long priority) {
this.priority = priority;
return this;
}
@ -461,15 +461,15 @@ public class Task extends Datum {
return this;
}
public Integer getProcessDefinitionVersion() {
public Long getProcessDefinitionVersion() {
return processDefinitionVersion;
}
public void setProcessDefinitionVersion(Integer processDefinitionVersion) {
public void setProcessDefinitionVersion(Long processDefinitionVersion) {
this.processDefinitionVersion = processDefinitionVersion;
}
public Task withProcessDefinitionVersion(Integer processDefinitionVersion) {
public Task withProcessDefinitionVersion(Long processDefinitionVersion) {
this.processDefinitionVersion = processDefinitionVersion;
return this;
}