package org.jboss.processFlow.rest; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import org.jboss.processFlow.tasks.ITaskService; import org.jboss.processFlow.tasks.identity.PFPUserGroupCallback; @Stateless @Path("/task") public class TaskManagementFacade { @EJB(lookup="java:global/processFlow-taskService/taskProxy!org.jboss.processFlow.tasks.ITaskService") ITaskService taskServiceProxy; @POST @Path("{userId}/{taskId}/assign/{idRef}") @Produces({ "application/json" }) public Response assignTask(@Context HttpServletRequest request, @PathParam("taskId") long taskId, @PathParam("idRef") String idRef, @PathParam("userId") String userId) { if (idRef == null) { taskServiceProxy.releaseTask(taskId, userId); } else if (idRef.equals(userId)) { List<String> callerRoles = getCallerRoles(idRef); taskServiceProxy.claimTask(taskId, idRef, idRef, callerRoles); } else { taskServiceProxy.delegateTask(taskId, userId, idRef); } return Response.ok().build(); } @POST @Path("{userId}/{taskId}/release") @Produces({ "application/json" }) public Response releaseTask(@Context HttpServletRequest request, @PathParam("userId") String userId, @PathParam("taskId") long taskId) { taskServiceProxy.releaseTask(taskId, userId); return Response.ok().build(); } @POST @Path("{userId}/{taskId}/close") @Produces({ "application/json" }) public Response closeTask(@Context HttpServletRequest request, @PathParam("userId") String userId, @PathParam("taskId") long taskId) { taskServiceProxy.completeTask(taskId, null, userId); return Response.ok().build(); } private List<String> getCallerRoles(String idRef) { PFPUserGroupCallback callback = new PFPUserGroupCallback(); return callback.getGroupsForUser(idRef, null, null); } }