Compare commits

...

36 Commits

Author SHA1 Message Date
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
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
14a2f74a60 added ProcessInstanceApi and ExecutionApi 2023-11-13 17:08:16 -05:00
50 changed files with 2777 additions and 393 deletions

22
pom.xml
View File

@@ -5,7 +5,7 @@
<groupId>com.inteligr8.alfresco</groupId>
<artifactId>aps-public-rest-api</artifactId>
<version>2.0.11</version>
<version>3.0.3</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,182 @@
/*
* 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 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.ProcessInstanceAction;
import com.inteligr8.activiti.model.ProcessInstanceAction.ActionValue;
import com.inteligr8.activiti.model.Job;
import com.inteligr8.activiti.model.ResultList;
import com.inteligr8.activiti.model.SortOrder;
public interface BaseJobsApi {
@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);
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 })
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

@@ -0,0 +1,225 @@
/*
* 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.util.List;
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;
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 {
public enum Sort {
@JsonProperty("id")
ProcessInstanceId,
@JsonProperty("processDefinitionId")
ProcessDefinitionId,
@JsonProperty("tenantId")
TenantId,
@JsonProperty("processDefinitionKey")
ProcessDefinitionKey;
}
public enum VariableScope {
@JsonProperty("local")
Local,
@JsonProperty("global")
Global,
}
@GET
@Path("{executionId}")
@Produces({ MediaType.APPLICATION_JSON })
Execution get(
@PathParam("executionId") String executionId);
@GET
@Path("{executionId}/activities")
@Produces({ MediaType.APPLICATION_JSON })
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 })
@Produces({ MediaType.APPLICATION_JSON })
Execution execute(
@PathParam("executionId") String executionId,
ProcessInstanceAction 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);
}
@GET
@Produces({ MediaType.APPLICATION_JSON })
ResultList<Execution> getByAny(
@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("tenantIdLike") String tenantIdLike,
@QueryParam("withoutTenantId") Boolean withoutTenantId,
@QueryParam("sort") Sort sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@GET
@Path("{executionId}/variables")
@Produces({ MediaType.APPLICATION_JSON })
List<Variable> getVariables(
@PathParam("executionId") String executionId,
@QueryParam("scope") VariableScope scope);
@GET
@Path("{executionId}/variables/{variableName}")
@Produces({ MediaType.APPLICATION_JSON })
Variable getVariable(
@PathParam("executionId") String executionId,
@PathParam("variableName") String variableName);
@POST
@Path("{executionId}/variables")
@Consumes({ MediaType.APPLICATION_JSON })
void createVariables(
@PathParam("executionId") String executionId,
List<Variable> variables);
@PUT
@Path("{executionId}/variables")
@Consumes({ MediaType.APPLICATION_JSON })
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}")
@Consumes({ MediaType.APPLICATION_JSON })
void updateVariable(
@PathParam("executionId") String executionId,
@PathParam("variableName") String variableName,
Variable 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/jobs")
public interface JobsApi extends BaseJobsApi {
}

View File

@@ -14,160 +14,25 @@
*/
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 com.fasterxml.jackson.annotation.JsonProperty;
import com.inteligr8.activiti.model.Engine;
import com.inteligr8.activiti.model.EngineProperties;
import com.inteligr8.activiti.model.ExecuteAction;
import com.inteligr8.activiti.model.ExecuteAction.Action;
import com.inteligr8.activiti.model.Job;
import com.inteligr8.activiti.model.ResultList;
@Path("/api/management")
public interface ManagementApi {
public enum JobType {
@JsonProperty("jobs")
Job,
@JsonProperty("deadletter-jobs")
DeadletterJob
}
@GET
@Path("engine")
@Produces({ "application/json" })
@Produces({ MediaType.APPLICATION_JSON })
public Engine getEngine();
@GET
@Path("properties")
@Produces({ "application/json" })
@Produces({ MediaType.APPLICATION_JSON })
public EngineProperties getEngineProperties();
@GET
@Path("{jobType}/{jobId}")
@Produces({ "application/json" })
public Job getJob(
@PathParam("jobType") JobType jobType,
@PathParam("jobId") String jobId);
@DELETE
@Path("{jobType}/{jobId}")
public void deleteJob(
@PathParam("jobType") JobType jobType,
@PathParam("jobId") String jobId);
@POST
@Path("{jobType}/{jobId}")
@Consumes({ "application/json" })
public void executeJob(
@PathParam("jobType") JobType jobType,
@PathParam("jobId") String jobId,
ExecuteAction execute);
default void executeJob(
JobType jobType,
String jobId,
Action action) {
this.executeJob(jobType, jobId, new ExecuteAction(action));
}
default void executeJob(
JobType jobType,
String jobId) {
this.executeJob(jobType, jobId, new ExecuteAction(Action.Execute));
}
@GET
@Path("{jobType}/{jobId}/execution-stacktrace")
@Produces({ "application/octet-stream" })
public File getJobStacktrace(
@PathParam("jobType") JobType jobType,
@PathParam("jobId") String jobId);
@GET
@Path("{jobType}")
@Produces({ "application/json" })
public ResultList<Job> queryJobs(
@PathParam("jobType") JobType jobType,
@QueryParam("id") String jobId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("timersOnly") Boolean timersOnly,
@QueryParam("messagesOnly") Boolean messagesOnly,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("withoutTenantId") Boolean withoutTenatId,
@QueryParam("sort") String sort);
@GET
@Path("{jobType}")
@Produces({ "application/json" })
public ResultList<Job> queryJobs(
@PathParam("jobType") JobType jobType,
@QueryParam("id") String jobId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("timersOnly") Boolean timersOnly,
@QueryParam("messagesOnly") Boolean messagesOnly,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("tenantId") String tenantId,
@QueryParam("tenantIdLike") String tenantIdLike,
@QueryParam("sort") String sort);
default ResultList<Job> queryTimerJobs(
JobType jobType,
@QueryParam("id") String jobId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("withoutTenantId") Boolean withoutTenantId,
@QueryParam("sort") String sort) {
return this.queryJobs(jobType, jobId, processInstanceId, executionId, processDefinitionId, withRetriesLeft, executable, true, false, withException, dueBefore, dueAfter, exceptionMessage, withoutTenantId, sort);
}
default ResultList<Job> queryMessagesJobs(
JobType jobType,
@QueryParam("id") String jobId,
@QueryParam("processInstanceId") String processInstanceId,
@QueryParam("executionId") String executionId,
@QueryParam("processDefinitionId") String processDefinitionId,
@QueryParam("withRetriesLeft") Boolean withRetriesLeft,
@QueryParam("executable") Boolean executable,
@QueryParam("withException") Boolean withException,
@QueryParam("dueBefore") LocalDate dueBefore,
@QueryParam("dueAfter") LocalDate dueAfter,
@QueryParam("exceptionMessage") String exceptionMessage,
@QueryParam("withoutTenantId") Boolean withoutTenantId,
@QueryParam("sort") String sort) {
return this.queryJobs(jobType, jobId, processInstanceId, executionId, processDefinitionId, withRetriesLeft, executable, false, true, withException, dueBefore, dueAfter, exceptionMessage, withoutTenantId, sort);
}
}

View File

@@ -0,0 +1,135 @@
/*
* 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 com.inteligr8.activiti.model.ProcessDefinitionAction.ActionValue;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
@Path("/api/repository/process-definitions")
public interface ProcessDefinitionApi {
@GET
@Path("{processDefinitionId}")
@Produces({ MediaType.APPLICATION_JSON })
ProcessDefinition get(
@PathParam("processDefinitionId") String processDefinitionId);
default void activate(
String processDefinitionId) {
this.act(processDefinitionId, new ProcessDefinitionAction(ActionValue.Activate));
}
default void suspend(
String processDefinitionId) {
this.act(processDefinitionId, new ProcessDefinitionAction(ActionValue.Suspend));
}
@PUT
@Path("{processDefinitionId}")
@Consumes({ MediaType.APPLICATION_JSON })
void act(
@PathParam("processDefinitionId") String processDefinitionId,
ProcessDefinitionAction action);
default ResultList<ProcessDefinition> 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<ProcessDefinition> 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(
@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

@@ -0,0 +1,214 @@
/*
* 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.util.List;
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 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 {
public enum Sort {
@JsonProperty("id")
ProcessInstanceId,
@JsonProperty("processDefinitionId")
ProcessDefinitionId,
@JsonProperty("tenantId")
TenantId,
@JsonProperty("processDefinitionKey")
ProcessDefinitionKey;
}
@GET
@Path("{processInstanceId}")
@Produces({ MediaType.APPLICATION_JSON })
ProcessInstance get(
@PathParam("processInstanceId") String processInstanceId);
@DELETE
@Path("{processInstanceId}")
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 })
void act(
@PathParam("processInstanceId") String processInstanceId,
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);
}
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> getByAny(
@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("tenantIdLike") String tenantIdLike,
@QueryParam("withoutTenantId") Boolean withoutTenantId,
@QueryParam("sort") Sort sort,
@QueryParam("order") SortOrder sortOrder,
@QueryParam("start") Integer pageStart,
@QueryParam("size") Integer pageSize);
@GET
@Path("{processInstanceId}/diagram")
@Produces({ "image/png" })
File getDiagram(
@PathParam("processInstanceId") String processInstanceId);
@GET
@Path("{processInstanceId}/variables")
@Produces({ MediaType.APPLICATION_JSON })
List<Variable> getVariables(
@PathParam("processInstanceId") String processInstanceId);
@GET
@Path("{processInstanceId}/variables/{variableName}")
@Produces({ MediaType.APPLICATION_JSON })
Variable getVariable(
@PathParam("processInstanceId") String processInstanceId,
@PathParam("variableName") String variableName);
@POST
@Path("{processInstanceId}/variables")
@Consumes({ MediaType.APPLICATION_JSON })
void createVariables(
@PathParam("processInstanceId") String processInstanceId,
List<Variable> variables);
@PUT
@Path("{processInstanceId}/variables")
@Consumes({ MediaType.APPLICATION_JSON })
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}")
@Consumes({ MediaType.APPLICATION_JSON })
void updateVariable(
@PathParam("processInstanceId") String processInstanceId,
@PathParam("variableName") String variableName,
Variable variable);
}

View File

@@ -0,0 +1,38 @@
/*
* 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.util.List;
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;
@Path("/api/runtime")
public interface RuntimeApi {
@POST
@Path("signals")
@Consumes({ MediaType.APPLICATION_JSON })
void signalReceived(
String signal,
String tenantId,
Boolean async,
List<Variable> variables);
}

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

@@ -1,40 +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 ExecuteAction {
public enum Action {
@JsonProperty("execute")
Execute
}
@JsonProperty("action")
private Action action;
/**
* No args constructor for use in serialization
*/
public ExecuteAction() {
}
public ExecuteAction(Action action) {
this.action = action;
}
public Action getAction() {
return action;
}
public void setAction(Action action) {
this.action = action;
}
public ExecuteAction withAction(Action action) {
this.action = action;
return this;
}
}

View File

@@ -0,0 +1,182 @@
package com.inteligr8.activiti.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Execution extends Datum {
@JsonProperty("activityId")
private String activityId;
@JsonProperty("id")
private String id;
@JsonProperty("parentId")
private String parentId;
@JsonProperty("parentUrl")
private String parentUrl;
@JsonProperty("processInstanceId")
private String processInstanceId;
@JsonProperty("processInstanceUrl")
private String processInstanceUrl;
@JsonProperty("superExecutionId")
private String superExecutionId;
@JsonProperty("superExecutionUrl")
private String superExecutionUrl;
@JsonProperty("suspended")
private Boolean suspended;
@JsonProperty("tenantId")
private String tenantId;
@JsonProperty("url")
private String url;
/**
* No args constructor for use in serialization
*/
public Execution() {
}
public String getActivityId() {
return activityId;
}
public void setActivityId(String activityId) {
this.activityId = activityId;
}
public Execution withActivityId(String activityId) {
this.activityId = activityId;
return this;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Execution withId(String id) {
this.id = id;
return this;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public Execution withParentId(String parentId) {
this.parentId = parentId;
return this;
}
public String getParentUrl() {
return parentUrl;
}
public void setParentUrl(String parentUrl) {
this.parentUrl = parentUrl;
}
public Execution withParentUrl(String parentUrl) {
this.parentUrl = parentUrl;
return this;
}
public String getProcessInstanceId() {
return processInstanceId;
}
public void setProcessInstanceId(String processInstanceId) {
this.processInstanceId = processInstanceId;
}
public Execution withProcessInstanceId(String processInstanceId) {
this.processInstanceId = processInstanceId;
return this;
}
public String getProcessInstanceUrl() {
return processInstanceUrl;
}
public void setProcessInstanceUrl(String processInstanceUrl) {
this.processInstanceUrl = processInstanceUrl;
}
public Execution withProcessInstanceUrl(String processInstanceUrl) {
this.processInstanceUrl = processInstanceUrl;
return this;
}
public String getSuperExecutionId() {
return superExecutionId;
}
public void setSuperExecutionId(String superExecutionId) {
this.superExecutionId = superExecutionId;
}
public Execution withSuperExecutionId(String superExecutionId) {
this.superExecutionId = superExecutionId;
return this;
}
public String getSuperExecutionUrl() {
return superExecutionUrl;
}
public void setSuperExecutionUrl(String superExecutionUrl) {
this.superExecutionUrl = superExecutionUrl;
}
public Execution withSuperExecutionUrl(String superExecutionUrl) {
this.superExecutionUrl = superExecutionUrl;
return this;
}
public Boolean getSuspended() {
return suspended;
}
public void setSuspended(Boolean suspended) {
this.suspended = suspended;
}
public Execution withSuspended(Boolean suspended) {
this.suspended = suspended;
return this;
}
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
public Execution withTenantId(String tenantId) {
this.tenantId = tenantId;
return this;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Execution withUrl(String url) {
this.url = url;
return this;
}
}

View File

@@ -0,0 +1,37 @@
package com.inteligr8.activiti.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MessageEventAction extends ProcessInstanceAction {
@JsonProperty("messageName")
private String message;
/**
* No args constructor for use in serialization
*/
public MessageEventAction() {
}
public MessageEventAction(ActionValue action, String message) {
super(action);
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public MessageEventAction withMessage(String message) {
this.message = message;
return this;
}
}

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

@@ -0,0 +1,202 @@
package com.inteligr8.activiti.model;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ProcessInstance extends Datum {
@JsonProperty("activityId")
private String activityId;
@JsonProperty("businessKey")
private String businessKey;
@JsonProperty("completed")
private Boolean completed;
@JsonProperty("ended")
private Boolean ended;
@JsonProperty("id")
private String id;
@JsonProperty("name")
private String name;
@JsonProperty("processDefinitionId")
private String processDefinitionId;
@JsonProperty("processDefinitionKey")
private String processDefinitionKey;
@JsonProperty("processDefinitionUrl")
private String processDefinitionUrl;
@JsonProperty("suspended")
private Boolean suspended;
@JsonProperty("tenantId")
private String tenantId;
@JsonProperty("url")
private String url;
@JsonProperty("variables")
private List<Variable> variables = new ArrayList<Variable>();
/**
* No args constructor for use in serialization
*/
public ProcessInstance() {
}
public String getActivityId() {
return activityId;
}
public void setActivityId(String activityId) {
this.activityId = activityId;
}
public ProcessInstance withActivityId(String activityId) {
this.activityId = activityId;
return this;
}
public String getBusinessKey() {
return businessKey;
}
public void setBusinessKey(String businessKey) {
this.businessKey = businessKey;
}
public ProcessInstance withBusinessKey(String businessKey) {
this.businessKey = businessKey;
return this;
}
public Boolean getCompleted() {
return completed;
}
public void setCompleted(Boolean completed) {
this.completed = completed;
}
public ProcessInstance withCompleted(Boolean completed) {
this.completed = completed;
return this;
}
public Boolean getEnded() {
return ended;
}
public void setEnded(Boolean ended) {
this.ended = ended;
}
public ProcessInstance withEnded(Boolean ended) {
this.ended = ended;
return this;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public ProcessInstance withId(String id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ProcessInstance withName(String name) {
this.name = name;
return this;
}
public String getProcessDefinitionId() {
return processDefinitionId;
}
public void setProcessDefinitionId(String processDefinitionId) {
this.processDefinitionId = processDefinitionId;
}
public ProcessInstance withProcessDefinitionId(String processDefinitionId) {
this.processDefinitionId = processDefinitionId;
return this;
}
public String getProcessDefinitionKey() {
return processDefinitionKey;
}
public void setProcessDefinitionKey(String processDefinitionKey) {
this.processDefinitionKey = processDefinitionKey;
}
public ProcessInstance withProcessDefinitionKey(String processDefinitionKey) {
this.processDefinitionKey = processDefinitionKey;
return this;
}
public Boolean getSuspended() {
return suspended;
}
public void setSuspended(Boolean suspended) {
this.suspended = suspended;
}
public ProcessInstance withSuspended(Boolean suspended) {
this.suspended = suspended;
return this;
}
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
public ProcessInstance withTenantId(String tenantId) {
this.tenantId = tenantId;
return this;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public ProcessInstance withUrl(String url) {
this.url = url;
return this;
}
public List<Variable> getVariables() {
return variables;
}
public void setVariables(List<Variable> variables) {
this.variables = variables;
}
public ProcessInstance withVariables(List<Variable> variables) {
this.variables = variables;
return this;
}
}

View File

@@ -0,0 +1,67 @@
package com.inteligr8.activiti.model;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ProcessInstanceAction {
public enum ActionValue {
@JsonProperty("execute")
Execute,
@JsonProperty("suspend")
Suspend,
@JsonProperty("activate")
Activate,
@JsonProperty("signal")
Signal,
@JsonProperty("signalEventReceived")
SignalReceived,
@JsonProperty("messageEventReceived")
MessageReceived
}
@JsonProperty("action")
private ActionValue action;
@JsonProperty("variables")
private List<Variable> variables;
/**
* No args constructor for use in serialization
*/
public ProcessInstanceAction() {
}
public ProcessInstanceAction(ActionValue action) {
this.action = action;
}
public ActionValue getAction() {
return action;
}
public void setAction(ActionValue action) {
this.action = action;
}
public ProcessInstanceAction withAction(ActionValue action) {
this.action = action;
return this;
}
public List<Variable> getVariables() {
return variables;
}
public void setVariables(List<Variable> variables) {
this.variables = variables;
}
public ProcessInstanceAction withVariables(List<Variable> variables) {
this.variables = variables;
return this;
}
}

View File

@@ -0,0 +1,84 @@
package com.inteligr8.activiti.model;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SignalEvent {
@JsonProperty("signalName")
private String signal;
@JsonProperty("tenantId")
private String tenantId;
@JsonProperty("async")
private Boolean async;
@JsonProperty("variables")
private List<Variable> variables;
/**
* No args constructor for use in serialization
*/
public SignalEvent() {
}
public SignalEvent(String signal, String tenantId, Boolean async) {
this.signal = signal;
this.tenantId = tenantId;
this.async = async;
}
public String getSignal() {
return signal;
}
public void setSignal(String signal) {
this.signal = signal;
}
public SignalEvent withSignal(String signal) {
this.signal = signal;
return this;
}
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
public SignalEvent withTenantId(String tenantId) {
this.tenantId = tenantId;
return this;
}
public Boolean getAsync() {
return async;
}
public void setAsync(Boolean async) {
this.async = async;
}
public SignalEvent withAsync(Boolean async) {
this.async = async;
return this;
}
public List<Variable> getVariables() {
return variables;
}
public void setVariables(List<Variable> variables) {
this.variables = variables;
}
public SignalEvent withVariables(List<Variable> variables) {
this.variables = variables;
return this;
}
}

View File

@@ -0,0 +1,36 @@
package com.inteligr8.activiti.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SignalEventAction extends ProcessInstanceAction {
@JsonProperty("signalName")
private String signal;
/**
* No args constructor for use in serialization
*/
public SignalEventAction() {
}
public SignalEventAction(ActionValue action, String signal) {
super(action);
this.signal = signal;
}
public String getSignal() {
return signal;
}
public void setSignal(String signal) {
this.signal = signal;
}
public SignalEventAction withSignal(String signal) {
this.signal = signal;
return this;
}
}

View File

@@ -0,0 +1,12 @@
package com.inteligr8.activiti.model;
import com.fasterxml.jackson.annotation.JsonProperty;
public enum SortOrder {
@JsonProperty("asc")
Ascending,
@JsonProperty("desc")
Descending
}

View File

@@ -0,0 +1,90 @@
package com.inteligr8.activiti.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"name",
"type",
"value",
"scope"
})
public class Variable {
@JsonProperty("name")
private String name;
@JsonProperty("scope")
private String scope;
@JsonProperty("type")
private String type;
@JsonProperty("value")
private Object value;
/**
* No args constructor for use in serialization
*/
public Variable() {
}
public Variable(String name, String scope, String type, Object value) {
this.name = name;
this.scope = scope;
this.type = type;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Variable withName(String name) {
this.name = name;
return this;
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
public Variable withScope(String scope) {
this.scope = scope;
return this;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Variable withType(String type) {
this.type = type;
return this;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public Variable withValue(Object value) {
this.value = value;
return this;
}
}

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

@@ -0,0 +1,61 @@
/*
* 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.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;
@Path("/api/enterprise")
public interface AppDeploymentsApi {
@GET
@Path("runtime-app-deployment")
@Produces({ MediaType.APPLICATION_JSON })
AppDeployment get(
@QueryParam("deploymentId") String deploymentId);
@GET
@Path("runtime-app-deployments/{deploymentId}")
@Produces({ MediaType.APPLICATION_JSON })
AppDeployment get(
@PathParam("deploymentId") long deploymentId);
@DELETE
@Path("runtime-app-deployments/{deploymentId}")
@Produces({ MediaType.APPLICATION_JSON })
void remove(
@PathParam("deploymentId") long deploymentId);
@GET
@Path("runtime-app-deployments")
@Produces({ MediaType.APPLICATION_JSON })
ResultListDataRepresentation<AppDeployment> query(
@QueryParam("nameLike") String nameLike,
@QueryParam("tenantId") Integer tenantId,
@QueryParam("latest") Boolean latest,
@QueryParam("start") Integer start,
@QueryParam("sort") String sort,
@QueryParam("order") String order,
@QueryParam("size") Integer size);
}

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;

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,167 @@
/*
* 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);
default Response getDocumentTemplate(
DocumentTemplateLight template) {
return this.getDocumentTemplate(template.getId(), System.currentTimeMillis());
}
@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

@@ -0,0 +1,123 @@
package com.inteligr8.alfresco.activiti.model;
import java.time.OffsetDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.inteligr8.activiti.model.Datum;
/**
* AppDeploymentRepresentation
* <p>
*
*
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"id",
"appDefinition",
"created",
"createdBy",
"deploymentId",
"dmnDeploymentId"
})
public class AppDeployment extends Datum {
@JsonProperty("id")
private long id;
@JsonProperty("appDefinition")
private AppDefinition appDefinition;
@JsonProperty("created")
@JsonFormat(shape = Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXX")
private OffsetDateTime created;
@JsonProperty("createdBy")
private UserLight createdBy;
@JsonProperty("deploymentId")
private String deploymentId;
@JsonProperty("dmnDeploymentId")
private Long dmnDeploymentId;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public AppDeployment withId(long id) {
this.id = id;
return this;
}
public AppDefinition getAppDefinition() {
return appDefinition;
}
public void setAppDefinition(AppDefinition appDefinition) {
this.appDefinition = appDefinition;
}
public AppDeployment withAppDefinition(AppDefinition appDefinition) {
this.appDefinition = appDefinition;
return this;
}
public OffsetDateTime getCreated() {
return created;
}
public void setCreated(OffsetDateTime created) {
this.created = created;
}
public AppDeployment withCreated(OffsetDateTime created) {
this.created = created;
return this;
}
public UserLight getCreatedBy() {
return createdBy;
}
public void setCreatedBy(UserLight createdBy) {
this.createdBy = createdBy;
}
public AppDeployment withCreatedBy(UserLight createdBy) {
this.createdBy = createdBy;
return this;
}
public String getDeploymentId() {
return deploymentId;
}
public void setDeploymentId(String deploymentId) {
this.deploymentId = deploymentId;
}
public AppDeployment withDeploymentId(String deploymentId) {
this.deploymentId = deploymentId;
return this;
}
public Long getDmnDeploymentId() {
return dmnDeploymentId;
}
public void setDmnDeploymentId(Long dmnDeploymentId) {
this.dmnDeploymentId = dmnDeploymentId;
}
public AppDeployment withDmnDeploymentId(Long dmnDeploymentId) {
this.dmnDeploymentId = dmnDeploymentId;
return this;
}
}

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

@@ -1,25 +1,9 @@
package com.inteligr8.alfresco.activiti.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"name",
"type",
"value"
})
public class Variable {
@JsonProperty("name")
private String name;
@JsonProperty("scope")
private String scope;
@JsonProperty("type")
private String type;
@JsonProperty("value")
private Object value;
public class Variable extends com.inteligr8.activiti.model.Variable {
/**
* No args constructor for use in serialization
@@ -28,62 +12,7 @@ public class Variable {
}
public Variable(String name, String scope, String type, Object value) {
this.name = name;
this.scope = scope;
this.type = type;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Variable withName(String name) {
this.name = name;
return this;
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
public Variable withScope(String scope) {
this.scope = scope;
return this;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Variable withType(String type) {
this.type = type;
return this;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public Variable withValue(Object value) {
this.value = value;
return this;
super(name, scope, type, value);
}
}