Compare commits

...

37 Commits

Author SHA1 Message Date
d457253471 v3.0.4 pom 2024-09-24 17:20:20 -04:00
a855c5b7a4 Merge branch 'develop' into stable 2024-09-24 17:18:30 -04:00
3e0a6d7767 remove default impls in jaxrs interfaces 2024-09-24 17:18:18 -04:00
1c88782ccb fix int/long data types 2024-09-24 16:35:34 -04:00
b75e655061 v3.0.3 pom 2024-09-24 09:39:24 -04:00
bf3bfa1091 Merge branch 'develop' into stable 2024-09-24 09:39:03 -04:00
8440b9ec44 fixed activiti ProcessDefinitionApi 2024-09-24 09:38:49 -04:00
77220a82ab v3.0.2 pom 2024-09-23 16:17:28 -04:00
548d9046fa Merge branch 'develop' into stable 2024-09-23 16:17:08 -04:00
16553363ab prefer constants 2024-09-23 16:16:55 -04:00
d64ad7feae split non-public API to protected API interface 2024-09-23 16:16:44 -04:00
44ec633670 added paging to job queries 2024-09-23 16:16:20 -04:00
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
9019889239 added ProcessDefinitionApi 2024-09-23 15:11:34 -04:00
8d993b68be rename Action to ProcessInstanceAction 2024-09-23 15:11:27 -04:00
a146654ea9 Merge branch 'develop' into stable 2024-08-15 12:26:21 -04:00
962ef8f98c v3.x; upgrade to jakarta 2024-08-15 12:25:28 -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
c0916958f0 added @Consumes multipart/form-data for TemplatesApi 2023-11-16 11:34:53 -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
09aabea4e3 int$64 is long 2023-11-16 09:20:22 -05:00
b359502c86 v2.0.15 pom 2023-11-15 20:27:38 -05:00
93c593bb41 added ModelsApi get 2023-11-15 20:16:10 -05:00
3e3cb195b3 Merge branch 'develop' into stable 2023-11-15 20:00:00 -05:00
715bf6fd1e template API func fixes 2023-11-15 19:58:30 -05:00
d1cf12e950 added template sort-by enum 2023-11-15 18:12:17 -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
c716057a24 several fixes after developing more 2023-11-15 16:25:34 -05:00
ce6e4752df added template API 2023-11-15 13:50:52 -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
17515d4be3 refactor JobsApi 2023-11-13 17:34:59 -05:00
b146e1d55a added api accessors 2023-11-13 17:15:08 -05:00
46 changed files with 1470 additions and 730 deletions

22
pom.xml
View File

@@ -5,7 +5,7 @@
<groupId>com.inteligr8.alfresco</groupId>
<artifactId>aps-public-rest-api</artifactId>
<version>2.0.12</version>
<version>3.0.4</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>
@@ -38,20 +38,26 @@
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.release>11</maven.compiler.release>
<maven.compiler.debuglevel>lines,vars,source</maven.compiler.debuglevel>
<jersey.version>2.39.1</jersey.version>
<cxf.version>3.5.6</cxf.version>
<jackson.version>2.15.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>
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
<version>2.1.6</version>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
@@ -121,7 +127,7 @@
<plugin>
<groupId>com.inteligr8</groupId>
<artifactId>regex-maven-plugin</artifactId>
<version>1.0.2</version>
<version>1.0.5</version>
<executions>
<execution>
<id>fix-displayName</id>

View File

@@ -14,7 +14,14 @@
*/
package com.inteligr8.activiti;
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;
/**
* This interface consolidates the JAX-RS APIs available in the open-source
@@ -30,4 +37,32 @@ public interface ActivitiPublicRestApi {
return this.getApi(ManagementApi.class);
}
default RuntimeApi getRuntimeApi() {
return this.getApi(RuntimeApi.class);
}
default JobsApi getJobsApi() {
return this.getApi(JobsApi.class);
}
default DeadletterJobsApi getDeadletterJobsApi() {
return this.getApi(DeadletterJobsApi.class);
}
default TimerJobsApi getTimerJobsApi() {
return this.getApi(TimerJobsApi.class);
}
default ProcessDefinitionApi getProcessDefinitionApi() {
return this.getApi(ProcessDefinitionApi.class);
}
default ProcessInstanceApi getProcessInstanceApi() {
return this.getApi(ProcessInstanceApi.class);
}
default ExecutionApi getExecutionApi() {
return this.getApi(ExecutionApi.class);
}
}

View File

@@ -0,0 +1,170 @@
/*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.inteligr8.activiti.api;
import java.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;
import jakarta.ws.rs.POST;
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;
public interface BaseJobsApi {
@GET
@Path("{jobId}")
@Produces({ MediaType.APPLICATION_JSON })
public Job getJob(
@PathParam("jobId") String jobId);
@DELETE
@Path("{jobId}")
public void deleteJob(
@PathParam("jobId") String jobId);
@POST
@Path("{jobId}")
@Consumes({ MediaType.APPLICATION_JSON })
public void executeJob(
@PathParam("jobId") String jobId,
ProcessInstanceAction execute);
@GET
@Path("{jobId}/execution-stacktrace")
@Produces({ MediaType.APPLICATION_OCTET_STREAM })
public File getJobStacktrace(
@PathParam("jobId") String jobId);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@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);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("dueBefore") LocalDate dueBefore,
@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);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("withoutTenantId") Boolean withoutTenatId,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("tenantId") String tenantId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("id") String jobId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("withoutTenantId") Boolean withoutTenatId,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("id") String jobId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("tenantId") String tenantId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") String sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
}

View File

@@ -0,0 +1,21 @@
/*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.inteligr8.activiti.api;
import jakarta.ws.rs.Path;
@Path("/api/management/deadletter-jobs")
public interface DeadletterJobsApi extends BaseJobsApi {
}

View File

@@ -16,25 +16,23 @@ package com.inteligr8.activiti.api;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.inteligr8.activiti.model.Action;
import com.inteligr8.activiti.model.Action.ActionValue;
import com.inteligr8.activiti.model.Execution;
import com.inteligr8.activiti.model.ProcessInstanceAction;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.SignalEventAction;
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;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
@Path("/api/runtime/executions")
public interface ExecutionApi {
@@ -68,102 +66,51 @@ public interface ExecutionApi {
List<String> getActiveActivities(
@PathParam("executionId") String executionId);
default Execution signal(
String processInstanceId,
List<Variable> variables) {
Action action = new Action(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) {
Action 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) {
Action 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 })
@Produces({ MediaType.APPLICATION_JSON })
Execution execute(
@PathParam("executionId") String executionId,
Action action);
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);
}
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);
}
ProcessInstanceAction action);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Execution> getByAny(
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);
@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);
@GET
@Produces({ MediaType.APPLICATION_JSON })
ResultList<Execution> getByAny(
@QueryParam("id") String executionId,
@QueryParam("activityId") String activityId,
@QueryParam("processDefinitionKey") String processDefinitionKey,
@@ -207,12 +154,6 @@ 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

@@ -0,0 +1,21 @@
/*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.inteligr8.activiti.api;
import jakarta.ws.rs.Path;
@Path("/api/management/jobs")
public interface JobsApi extends BaseJobsApi {
}

View File

@@ -14,25 +14,13 @@
*/
package com.inteligr8.activiti.api;
import java.io.File;
import java.time.LocalDate;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.inteligr8.activiti.model.Action;
import com.inteligr8.activiti.model.Action.ActionValue;
import com.inteligr8.activiti.model.Engine;
import com.inteligr8.activiti.model.EngineProperties;
import com.inteligr8.activiti.model.Job;
import com.inteligr8.activiti.model.ResultList;
@Path("/api/management")
public interface ManagementApi {
@@ -46,146 +34,5 @@ public interface ManagementApi {
@Path("properties")
@Produces({ MediaType.APPLICATION_JSON })
public EngineProperties getEngineProperties();
@Path("jobs")
public interface JobsApiImpl extends JobsApi {}
@Path("timer-jobs")
public interface TimerJobsApiImpl extends JobsApi {}
@Path("deadletter-jobs")
public interface DeadletterJobsApiImpl extends JobsApi {}
public interface JobsApi {
@GET
@Path("{jobId}")
@Produces({ MediaType.APPLICATION_JSON })
public Job getJob(
@PathParam("jobId") String jobId);
@DELETE
@Path("{jobId}")
public void deleteJob(
@PathParam("jobId") String jobId);
@POST
@Path("{jobId}")
@Consumes({ MediaType.APPLICATION_JSON })
public void executeJob(
@PathParam("jobId") String jobId,
Action execute);
default void executeJob(
String jobId,
ActionValue action) {
this.executeJob(jobId, new Action(action));
}
default void executeJob(
String jobId) {
this.executeJob(jobId, new Action(ActionValue.Execute));
}
@GET
@Path("{jobId}/execution-stacktrace")
@Produces({ MediaType.APPLICATION_OCTET_STREAM })
public File getJobStacktrace(
@PathParam("jobId") String jobId);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("withoutTenantId") Boolean withoutTenatId,
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("tenantId") String tenantId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("withoutTenantId") Boolean withoutTenatId,
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("tenantId") String tenantId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("id") String jobId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("withoutTenantId") Boolean withoutTenatId,
@QueryParam("sort") String sort);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<Job> queryJobs(
@QueryParam("id") String jobId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("tenantId") String tenantId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") String sort);
}
}

View File

@@ -0,0 +1,72 @@
/*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.inteligr8.activiti.api;
import 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 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);
@PUT
@Path("{processDefinitionId}")
@Consumes({ MediaType.APPLICATION_JSON })
void act(
@PathParam("processDefinitionId") String processDefinitionId,
ProcessDefinitionAction action);
@GET
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<ProcessDefinition> 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);
}

View File

@@ -17,25 +17,24 @@ package com.inteligr8.activiti.api;
import java.io.File;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.inteligr8.activiti.model.Action;
import com.inteligr8.activiti.model.Action.ActionValue;
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;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
@Path("/api/runtime/process-instances")
public interface ProcessInstanceApi {
@@ -61,87 +60,50 @@ public interface ProcessInstanceApi {
void delete(
@PathParam("processInstanceId") String processInstanceId);
default void activate(
String processInstanceId) {
this.act(processInstanceId, new Action(ActionValue.Activate));
}
default void suspend(
String processInstanceId) {
this.act(processInstanceId, new Action(ActionValue.Suspend));
}
@PUT
@Path("{processInstanceId}")
@Consumes({ MediaType.APPLICATION_JSON })
void act(
@PathParam("processInstanceId") String processInstanceId,
Action action);
ProcessInstanceAction action);
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> 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> 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 })
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);
@GET
@Produces({ MediaType.APPLICATION_JSON })
@@ -196,12 +158,6 @@ 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

@@ -16,10 +16,10 @@ package com.inteligr8.activiti.api;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.core.MediaType;
import com.inteligr8.activiti.model.Variable;

View File

@@ -0,0 +1,21 @@
/*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.inteligr8.activiti.api;
import jakarta.ws.rs.Path;
@Path("/api/management/timer-jobs")
public interface TimerJobsApi extends BaseJobsApi {
}

View File

@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MessageEventAction extends Action {
public class MessageEventAction extends ProcessInstanceAction {
@JsonProperty("messageName")
private String message;

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,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;
}
}

View File

@@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Action {
public class ProcessInstanceAction {
public enum ActionValue {
@JsonProperty("execute")
@@ -31,10 +31,10 @@ public class Action {
/**
* No args constructor for use in serialization
*/
public Action() {
public ProcessInstanceAction() {
}
public Action(ActionValue action) {
public ProcessInstanceAction(ActionValue action) {
this.action = action;
}
@@ -46,7 +46,7 @@ public class Action {
this.action = action;
}
public Action withAction(ActionValue action) {
public ProcessInstanceAction withAction(ActionValue action) {
this.action = action;
return this;
}
@@ -59,7 +59,7 @@ public class Action {
this.variables = variables;
}
public Action withVariables(List<Variable> variables) {
public ProcessInstanceAction withVariables(List<Variable> variables) {
this.variables = variables;
return this;
}

View File

@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SignalEventAction extends Action {
public class SignalEventAction extends ProcessInstanceAction {
@JsonProperty("signalName")
private String signal;

View File

@@ -0,0 +1,36 @@
/*
* 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

@@ -17,27 +17,30 @@ 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;
/**
* This interface consolidates the JAX-RS APIs available in the APS Public
* ReST API.
* This interface consolidates the JAX-RS APIs available in the Activiti & APS
* public ReST APIs.
*
* @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);
@@ -54,6 +57,10 @@ 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);
@@ -66,13 +73,5 @@ 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);
}
}

View File

@@ -1,6 +1,7 @@
package com.inteligr8.alfresco.activiti;
import com.inteligr8.alfresco.activiti.api.AppDefinitionsCxfApi;
import com.inteligr8.alfresco.activiti.api.TemplatesCxfApi;
/**
* This interface appends Apache CXF implementation specific methods to the
@@ -14,5 +15,9 @@ public interface ApsPublicRestCxfApi extends ApsPublicRestApi {
default AppDefinitionsCxfApi getAppDefinitionsCxfApi() {
return this.getApi(AppDefinitionsCxfApi.class);
}
default TemplatesCxfApi getTemplatesCxfApi() {
return this.getApi(TemplatesCxfApi.class);
}
}

View File

@@ -1,6 +1,7 @@
package com.inteligr8.alfresco.activiti;
import com.inteligr8.alfresco.activiti.api.AppDefinitionsJerseyApi;
import com.inteligr8.alfresco.activiti.api.TemplatesJerseyApi;
/**
* This interface appends Jersey implementation specific methods to the JAX-RS
@@ -14,5 +15,9 @@ public interface ApsPublicRestJerseyApi extends ApsPublicRestApi {
default AppDefinitionsJerseyApi getAppDefinitionsJerseyApi() {
return this.getApi(AppDefinitionsJerseyApi.class);
}
default TemplatesJerseyApi getTemplatesJerseyApi() {
return this.getApi(TemplatesJerseyApi.class);
}
}

View File

@@ -16,15 +16,15 @@ package com.inteligr8.alfresco.activiti.api;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
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;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.alfresco.activiti.model.Group;

View File

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

@@ -1,13 +1,13 @@
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.POST;
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;
import com.inteligr8.alfresco.activiti.model.AppDefinitionRepresentation;
import com.inteligr8.alfresco.activiti.model.AppDefinitionUpdateResultRepresentation;

View File

@@ -1,13 +1,13 @@
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.POST;
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;
import com.inteligr8.alfresco.activiti.model.AppDefinitionRepresentation;
import com.inteligr8.alfresco.activiti.model.AppDefinitionUpdateResultRepresentation;

View File

@@ -14,13 +14,13 @@
*/
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
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;
import com.inteligr8.alfresco.activiti.model.AppDeployment;
import com.inteligr8.alfresco.activiti.model.ResultListDataRepresentation;
@@ -30,7 +30,7 @@ public interface AppDeploymentsApi {
@GET
@Path("runtime-app-deployment")
@Produces({ "application/json" })
@Produces({ MediaType.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") Integer tenantId,
@QueryParam("tenantId") Long tenantId,
@QueryParam("latest") Boolean latest,
@QueryParam("start") Integer start,
@QueryParam("sort") String sort,

View File

@@ -14,9 +14,9 @@
*/
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import com.inteligr8.alfresco.activiti.model.AppVersion;

View File

@@ -14,11 +14,11 @@
*/
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.alfresco.activiti.model.GroupLight;

View File

@@ -14,10 +14,10 @@
*/
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import com.inteligr8.alfresco.activiti.model.HistoricProcessInstanceQueryRepresentation;
import com.inteligr8.alfresco.activiti.model.HistoricTaskQueryRepresentation;

View File

@@ -14,12 +14,14 @@
*/
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import com.inteligr8.alfresco.activiti.model.ResultListDataRepresentation;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.alfresco.activiti.model.ModelRepresentation;
@Path("/api/enterprise/models")
public interface ModelsApi {
@@ -40,8 +42,14 @@ public interface ModelsApi {
}
@GET
@Path("{id}")
@Produces({ "application/json" })
public ResultListDataRepresentation get(
public ModelRepresentation get(
@PathParam("id") String id);
@GET
@Produces({ "application/json" })
public ResultList<ModelRepresentation> get(
@QueryParam("filter") String filter,
@QueryParam("sort") String sort,
@QueryParam("modelType") Integer modelType,

View File

@@ -14,10 +14,10 @@
*/
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import com.inteligr8.alfresco.activiti.model.ProcessDefinition;
import com.inteligr8.alfresco.activiti.model.ResultListDataRepresentation;
@@ -29,7 +29,7 @@ public interface ProcessDefinitionsApi {
@Produces({ "application/json" })
ResultListDataRepresentation<ProcessDefinition> get(
@QueryParam("latest") Boolean latest,
@QueryParam("appDefinitionId") Integer appDefinitionId,
@QueryParam("appDefinitionId") Long appDefinitionId,
@QueryParam("deploymentId") String deploymentId);
}

View File

@@ -16,14 +16,14 @@ package com.inteligr8.alfresco.activiti.api;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import com.inteligr8.alfresco.activiti.model.CreateProcessInstance;
import com.inteligr8.alfresco.activiti.model.ProcessInstance;

View File

@@ -14,9 +14,9 @@
*/
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import com.inteligr8.alfresco.activiti.model.User;

View File

@@ -14,13 +14,13 @@
*/
package com.inteligr8.alfresco.activiti.api;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
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.core.MediaType;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.alfresco.activiti.model.ShareInfoRequest;

View File

@@ -16,15 +16,15 @@ package com.inteligr8.alfresco.activiti.api;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import com.inteligr8.alfresco.activiti.model.AssigneeIdentifier;
import com.inteligr8.alfresco.activiti.model.CompleteForm;

View File

@@ -0,0 +1,162 @@
/*
* 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.api;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.alfresco.activiti.model.DocumentTemplateLight;
import com.inteligr8.alfresco.activiti.model.EmailTemplate;
import com.inteligr8.alfresco.activiti.model.EmailTemplateLight;
/**
* This is an undocumented API.
*
* @author brian@inteligr8.com
*/
@Path("/app/rest")
public interface TemplatesApi {
public enum TemplateSort {
@JsonProperty("sort_by_name_asc")
NameAscending,
@JsonProperty("sort_by_name_desc")
NameDescending
}
@GET
@Path("email-templates/system")
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<EmailTemplateLight> getSystemEmailTemplates(
@QueryParam("tenantId") Long tenantId);
@GET
@Path("email-templates/custom")
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<EmailTemplateLight> getCustomEmailTemplates(
@QueryParam("nameFilter") String nameFilter,
@QueryParam("start") Integer start,
@QueryParam("size") Integer size,
@QueryParam("sort") String sort,
@QueryParam("tenantId") Long tenantId);
@GET
@Path("email-templates/custom")
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<EmailTemplateLight> getCustomEmailTemplates(
@QueryParam("nameFilter") String nameFilter,
@QueryParam("start") Integer start,
@QueryParam("size") Integer size,
@QueryParam("sort") TemplateSort sort,
@QueryParam("tenantId") Long tenantId);
@GET
@Path("email-templates/system/{templateName}")
@Produces({ MediaType.APPLICATION_JSON })
public EmailTemplate getSystemEmailTemplate(
@PathParam("templateName") String name,
@QueryParam("tenantId") Long tenantId);
@GET
@Path("email-templates/custom/{templateId}")
@Produces({ MediaType.APPLICATION_JSON })
public EmailTemplate getCustomEmailTemplate(
@PathParam("templateId") long id,
@QueryParam("tenantId") Long tenantId);
@POST
@Path("email-templates/custom")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public EmailTemplateLight createCustomEmailTemplate(
EmailTemplate template);
@PUT
@Path("email-templates/system/{templateName}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public EmailTemplate updateSystemEmailTemplate(
@PathParam("templateName") String name,
EmailTemplate template);
@PUT
@Path("email-templates/custom/{templateId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public EmailTemplate updateCustomEmailTemplate(
@PathParam("templateId") long id,
EmailTemplate template);
@DELETE
@Path("email-templates/custom/{templateId}")
public void deleteCustomEmailTemplate(
@PathParam("templateId") long id,
@QueryParam("tenantId") Long tenantId);
@GET
@Path("document-templates")
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<DocumentTemplateLight> getDocumentTemplates(
@QueryParam("nameFilter") String nameFilter,
@QueryParam("start") Integer start,
@QueryParam("size") Integer size,
@QueryParam("sort") String sort,
@QueryParam("tenantId") Long tenantId);
@GET
@Path("document-templates")
@Produces({ MediaType.APPLICATION_JSON })
public ResultList<DocumentTemplateLight> getDocumentTemplates(
@QueryParam("nameFilter") String nameFilter,
@QueryParam("start") Integer start,
@QueryParam("size") Integer size,
@QueryParam("sort") TemplateSort sort,
@QueryParam("tenantId") Long tenantId);
@GET
@Path("document-templates/{templateId}")
@Produces({ MediaType.APPLICATION_JSON })
public DocumentTemplateLight getDocumentTemplate(
@PathParam("templateId") long id);
@GET
@Path("document-templates/{templateId}/file")
@Produces({
"application/msword",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"application/vnd.openxmlformats-officedocument.wordprocessingml.template"
})
public Response getDocumentTemplate(
@PathParam("templateId") long id,
@QueryParam("version") Long version);
@DELETE
@Path("document-templates/{templateId}")
public void deleteDocumentTemplate();
}

View File

@@ -0,0 +1,53 @@
/*
* 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.api;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.POST;
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;
import com.inteligr8.alfresco.activiti.model.DocumentTemplateLight;
import com.inteligr8.alfresco.activiti.model.FileMultipartCxf;
/**
* This is an undocumented API.
*
* @author brian@inteligr8.com
*/
@Path("/app/rest")
public interface TemplatesCxfApi extends TemplatesApi {
@POST
@Path("admin/document-templates")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public DocumentTemplateLight createDocumentTemplate(
@QueryParam("tenantId") Long tenantId,
FileMultipartCxf file);
@POST
@Path("admin/document-templates/{templateId}")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public DocumentTemplateLight updateDocumentTemplate(
@PathParam("templateId") long id,
@QueryParam("tenantId") Long tenantId,
FileMultipartCxf file);
}

View File

@@ -0,0 +1,53 @@
/*
* 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.api;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.POST;
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;
import com.inteligr8.alfresco.activiti.model.DocumentTemplateLight;
import com.inteligr8.alfresco.activiti.model.FileMultipartJersey;
/**
* This is an undocumented API.
*
* @author brian@inteligr8.com
*/
@Path("/app/rest")
public interface TemplatesJerseyApi extends TemplatesApi {
@POST
@Path("admin/document-templates")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public DocumentTemplateLight createDocumentTemplate(
@QueryParam("tenantId") Long tenantId,
FileMultipartJersey file);
@POST
@Path("admin/document-templates/{templateId}")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public DocumentTemplateLight updateDocumentTemplate(
@PathParam("templateId") long id,
@QueryParam("tenantId") Long tenantId,
FileMultipartJersey file);
}

View File

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

View File

@@ -1,205 +1,12 @@
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>
*
*
*/
@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;
}
public class AppDefinitionRepresentation extends AppDefinition {
}

View File

@@ -0,0 +1,67 @@
package com.inteligr8.alfresco.activiti.model;
import java.time.OffsetDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BaseTemplateLight {
@JsonProperty
private Long id;
@JsonProperty(required = true)
private String name;
@JsonProperty
@JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
private OffsetDateTime created;
@JsonProperty
private UserLight createdBy;
@JsonProperty
private Integer tenantId;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public OffsetDateTime getCreated() {
return created;
}
public void setCreated(OffsetDateTime created) {
this.created = created;
}
public UserLight getCreatedBy() {
return createdBy;
}
public void setCreatedBy(UserLight createdBy) {
this.createdBy = createdBy;
}
public Integer getTenantId() {
return tenantId;
}
public void setTenantId(Integer tenantId) {
this.tenantId = tenantId;
}
}

View File

@@ -0,0 +1,42 @@
package com.inteligr8.alfresco.activiti.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class DocumentTemplateLight extends BaseTemplateLight {
@JsonProperty
private Integer modelId;
@JsonProperty
private String mimeType;
@JsonProperty
private String simpleType;
public Integer getModelId() {
return modelId;
}
public void setModelId(Integer modelId) {
this.modelId = modelId;
}
public String getMimeType() {
return mimeType;
}
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
public String getSimpleType() {
return simpleType;
}
public void setSimpleType(String simpleType) {
this.simpleType = simpleType;
}
}

View File

@@ -0,0 +1,22 @@
package com.inteligr8.alfresco.activiti.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class EmailTemplate extends EmailTemplateLight {
@JsonProperty
private String template;
public String getTemplate() {
return template;
}
public void setTemplate(String template) {
this.template = template;
}
}

View File

@@ -0,0 +1,32 @@
package com.inteligr8.alfresco.activiti.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class EmailTemplateLight extends BaseTemplateLight {
@JsonProperty
private String systemTemplateId;
@JsonProperty
private String subject;
public String getSystemTemplateId() {
return systemTemplateId;
}
public void setSystemTemplateId(String systemTemplateId) {
this.systemTemplateId = systemTemplateId;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
}

View File

@@ -1,10 +1,13 @@
package com.inteligr8.alfresco.activiti.model;
import java.time.OffsetDateTime;
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.JsonFormat;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -42,7 +45,7 @@ public class ModelRepresentation {
@JsonProperty("comment")
private String comment;
@JsonProperty("createdBy")
private Integer createdBy;
private Long createdBy;
@JsonProperty("createdByFullName")
private String createdByFullName;
@JsonProperty("description")
@@ -50,11 +53,12 @@ public class ModelRepresentation {
@JsonProperty("favorite")
private Boolean favorite;
@JsonProperty("id")
private Integer id;
private Long id;
@JsonProperty("lastUpdated")
private String lastUpdated;
@JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXX")
private OffsetDateTime lastUpdated;
@JsonProperty("lastUpdatedBy")
private Integer lastUpdatedBy;
private Long lastUpdatedBy;
@JsonProperty("lastUpdatedByFullName")
private String lastUpdatedByFullName;
@JsonProperty("latestVersion")
@@ -66,11 +70,11 @@ public class ModelRepresentation {
@JsonProperty("permission")
private String permission;
@JsonProperty("referenceId")
private Integer referenceId;
private Long referenceId;
@JsonProperty("stencilSet")
private Integer stencilSet;
private Long stencilSet;
@JsonProperty("tenantId")
private Integer tenantId;
private Long tenantId;
@JsonProperty("version")
private Integer version;
@JsonIgnore
@@ -92,16 +96,16 @@ public class ModelRepresentation {
}
@JsonProperty("createdBy")
public Integer getCreatedBy() {
public Long getCreatedBy() {
return createdBy;
}
@JsonProperty("createdBy")
public void setCreatedBy(Integer createdBy) {
public void setCreatedBy(Long createdBy) {
this.createdBy = createdBy;
}
public ModelRepresentation withCreatedBy(Integer createdBy) {
public ModelRepresentation withCreatedBy(Long createdBy) {
this.createdBy = createdBy;
return this;
}
@@ -152,46 +156,46 @@ public class ModelRepresentation {
}
@JsonProperty("id")
public Integer getId() {
public Long getId() {
return id;
}
@JsonProperty("id")
public void setId(Integer id) {
public void setId(Long id) {
this.id = id;
}
public ModelRepresentation withId(Integer id) {
public ModelRepresentation withId(Long id) {
this.id = id;
return this;
}
@JsonProperty("lastUpdated")
public String getLastUpdated() {
public OffsetDateTime getLastUpdated() {
return lastUpdated;
}
@JsonProperty("lastUpdated")
public void setLastUpdated(String lastUpdated) {
public void setLastUpdated(OffsetDateTime lastUpdated) {
this.lastUpdated = lastUpdated;
}
public ModelRepresentation withLastUpdated(String lastUpdated) {
public ModelRepresentation withLastUpdated(OffsetDateTime lastUpdated) {
this.lastUpdated = lastUpdated;
return this;
}
@JsonProperty("lastUpdatedBy")
public Integer getLastUpdatedBy() {
public Long getLastUpdatedBy() {
return lastUpdatedBy;
}
@JsonProperty("lastUpdatedBy")
public void setLastUpdatedBy(Integer lastUpdatedBy) {
public void setLastUpdatedBy(Long lastUpdatedBy) {
this.lastUpdatedBy = lastUpdatedBy;
}
public ModelRepresentation withLastUpdatedBy(Integer lastUpdatedBy) {
public ModelRepresentation withLastUpdatedBy(Long lastUpdatedBy) {
this.lastUpdatedBy = lastUpdatedBy;
return this;
}
@@ -272,46 +276,46 @@ public class ModelRepresentation {
}
@JsonProperty("referenceId")
public Integer getReferenceId() {
public Long getReferenceId() {
return referenceId;
}
@JsonProperty("referenceId")
public void setReferenceId(Integer referenceId) {
public void setReferenceId(Long referenceId) {
this.referenceId = referenceId;
}
public ModelRepresentation withReferenceId(Integer referenceId) {
public ModelRepresentation withReferenceId(Long referenceId) {
this.referenceId = referenceId;
return this;
}
@JsonProperty("stencilSet")
public Integer getStencilSet() {
public Long getStencilSet() {
return stencilSet;
}
@JsonProperty("stencilSet")
public void setStencilSet(Integer stencilSet) {
public void setStencilSet(Long stencilSet) {
this.stencilSet = stencilSet;
}
public ModelRepresentation withStencilSet(Integer stencilSet) {
public ModelRepresentation withStencilSet(Long stencilSet) {
this.stencilSet = stencilSet;
return this;
}
@JsonProperty("tenantId")
public Integer getTenantId() {
public Long getTenantId() {
return tenantId;
}
@JsonProperty("tenantId")
public void setTenantId(Integer tenantId) {
public void setTenantId(Long tenantId) {
this.tenantId = tenantId;
}
public ModelRepresentation withTenantId(Integer tenantId) {
public ModelRepresentation withTenantId(Long tenantId) {
this.tenantId = tenantId;
return this;
}

View File

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

View File

@@ -4,5 +4,15 @@ import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Variable extends com.inteligr8.activiti.model.Variable {
/**
* No args constructor for use in serialization
*/
public Variable() {
}
public Variable(String name, String scope, String type, Object value) {
super(name, scope, type, value);
}
}