Package org.imixs.workflow.jaxrs
Class WorkflowRestService
java.lang.Object
org.imixs.workflow.jaxrs.WorkflowRestService
@Path("/workflow")
@Produces({"text/html","application/xml","application/json","text/xml"})
public class WorkflowRestService
extends Object
The WorkflowService Handler supports methods to process different kind of
request URIs
- Author:
- rsoika
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionjakarta.ws.rs.core.ResponseReturns a collection of events of a workitem, visible to the current userjakarta.ws.rs.core.StreamingOutputjakarta.ws.rs.core.ResponsegetTaskListByAuthor(String user, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) Returns a collection of workitems for which the specified user has explicit write permission.jakarta.ws.rs.core.ResponsegetTaskListByCreator(String creator, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.ResponsegetTaskListByGroup(String processgroup, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.ResponsegetTaskListByOwner(String owner, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.ResponsegetTaskListByProcessID(int processid, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.ResponsegetTaskListByRef(String uniqueid, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.ResponsegetTaskListByWriteAccess(String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) Returns a collection of workitems where the current user has a write permission.jakarta.ws.rs.core.ResponsegetWorkItem(String uniqueid, String items, String format) returns a single workitem defined by $uniqueidjakarta.ws.rs.core.ResponsegetWorkItemFile(String uniqueid, String file, jakarta.ws.rs.core.UriInfo uriInfo) Returns a file attachment located in the property $file of the specified workitemjakarta.ws.rs.core.ResponsegetWorkList(String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) Returns a collection of workitems representing the worklist by the current userparseWorkitem(InputStream requestBodyStream) This method expects a form post.jakarta.ws.rs.core.ResponsepostFormWorkitem(InputStream requestBodyStream, String items) This method expects a form post and processes the WorkItem by the WorkflowService EJB.jakarta.ws.rs.core.ResponsepostFormWorkitemByUnqiueID(String uid, InputStream requestBodyStream, String items) This method expects a form post and processes the WorkItem by the WorkflowService EJB.jakarta.ws.rs.core.ResponsepostTypedWorkitemJSON(InputStream requestBodyStream, String error, String items) This method expects JSON in BADGARFISH notation to processed by the WorkflowService EJB.jakarta.ws.rs.core.ResponsepostTypedWorkitemJSONByUniqueID(String uniqueid, InputStream requestBodyStream, String error, String items) jakarta.ws.rs.core.ResponsepostWorkitem(XMLDocument xmlworkitem, String items) This method post a ItemCollection object to be processed by the WorkflowManager.jakarta.ws.rs.core.ResponsepostWorkitemByUniqueID(String uniqueid, XMLDocument xmlworkitem, String items) jakarta.ws.rs.core.ResponsepostWorkitems(XMLDataCollection worklist) This method post a collection of ItemCollection objects to be processed by the WorkflowManager.jakarta.ws.rs.core.ResponseputFormWorkitem(InputStream requestBodyStream, String items) This method expects a form post.jakarta.ws.rs.core.ResponseputTypedWorkitemJSON(InputStream requestBodyStream, String error, String items) Delegater for PUT postJSONTypedWorkitemjakarta.ws.rs.core.ResponseputTypedWorkitemJSONByUniqueID(String uniqueid, InputStream requestBodyStream, String error, String items) Delegater for PUT postJSONWorkitemByUniqueIDjakarta.ws.rs.core.ResponseputWorkitem(XMLDocument workitem, String items) Delegaterjakarta.ws.rs.core.ResponseputWorkitemByUniqueID(String uniqueid, XMLDocument xmlworkitem, String items) Delegater for PUT postXMLWorkitemByUniqueIDjakarta.ws.rs.core.ResponseputWorkitems(XMLDataCollection worklist)
-
Constructor Details
-
WorkflowRestService
public WorkflowRestService()
-
-
Method Details
-
getHelpHTML
@GET @Produces("text/html") public jakarta.ws.rs.core.StreamingOutput getHelpHTML() -
getWorkItem
@GET @Path("/workitem/{uniqueid : ([0-9a-f]{8}-.*|[0-9a-f]{11}-.*)}") public jakarta.ws.rs.core.Response getWorkItem(@PathParam("uniqueid") String uniqueid, @QueryParam("items") String items, @QueryParam("format") String format) returns a single workitem defined by $uniqueid- Parameters:
uniqueid-- Returns:
-
getWorkItemFile
@GET @Path("/workitem/{uniqueid : ([0-9a-f]{8}-.*|[0-9a-f]{11}-.*)}/file/{file}") public jakarta.ws.rs.core.Response getWorkItemFile(@PathParam("uniqueid") String uniqueid, @PathParam("file") @Encoded String file, @Context jakarta.ws.rs.core.UriInfo uriInfo) Returns a file attachment located in the property $file of the specified workitemThe file name will be encoded. With a URLDecode the filename is decoded in different formats and searched in the file list. This is not a nice solution.
- Parameters:
uniqueid-- Returns:
-
getEvents
@GET @Path("/workitem/events/{uniqueid : ([0-9a-f]{8}-.*|[0-9a-f]{11}-.*)}") public jakarta.ws.rs.core.Response getEvents(@PathParam("uniqueid") String uniqueid, @QueryParam("format") String format) Returns a collection of events of a workitem, visible to the current user- Parameters:
uniqueid- of workitem- Returns:
- list of event entities
-
getWorkList
@GET @Path("/worklist") public jakarta.ws.rs.core.Response getWorkList(@QueryParam("type") String type, @DefaultValue("0") @QueryParam("pageIndex") int pageIndex, @DefaultValue("10") @QueryParam("pageSize") int pageSize, @DefaultValue("") @QueryParam("sortBy") String sortBy, @DefaultValue("false") @QueryParam("sortReverse") Boolean sortReverse, @QueryParam("items") String items, @QueryParam("format") String format) Returns a collection of workitems representing the worklist by the current user- Parameters:
start-count-type-sortorder-
-
getTaskListByOwner
@GET @Path("/tasklist/owner/{owner}") public jakarta.ws.rs.core.Response getTaskListByOwner(@PathParam("owner") String owner, @QueryParam("type") String type, @DefaultValue("0") @QueryParam("pageIndex") int pageIndex, @DefaultValue("10") @QueryParam("pageSize") int pageSize, @DefaultValue("") @QueryParam("sortBy") String sortBy, @DefaultValue("false") @QueryParam("sortReverse") Boolean sortReverse, @QueryParam("items") String items, @QueryParam("format") String format) -
getTaskListByAuthor
@GET @Path("/tasklist/author/{user}") public jakarta.ws.rs.core.Response getTaskListByAuthor(@PathParam("user") String user, @QueryParam("type") String type, @DefaultValue("0") @QueryParam("pageIndex") int pageIndex, @DefaultValue("10") @QueryParam("pageSize") int pageSize, @DefaultValue("") @QueryParam("sortBy") String sortBy, @DefaultValue("false") @QueryParam("sortReverse") Boolean sortReverse, @QueryParam("items") String items, @QueryParam("format") String format) Returns a collection of workitems for which the specified user has explicit write permission.- Parameters:
start-count-type-sortorder-
-
getTaskListByWriteAccess
@GET @Path("/tasklist/writeaccess") public jakarta.ws.rs.core.Response getTaskListByWriteAccess(@QueryParam("type") String type, @DefaultValue("0") @QueryParam("pageIndex") int pageIndex, @DefaultValue("10") @QueryParam("pageSize") int pageSize, @DefaultValue("") @QueryParam("sortBy") String sortBy, @DefaultValue("false") @QueryParam("sortReverse") Boolean sortReverse, @QueryParam("items") String items, @QueryParam("format") String format) Returns a collection of workitems where the current user has a write permission. This means that the current userID or at least one of its roles is contained in the $writeaccess property.- Parameters:
start-count-type-sortorder-
-
getTaskListByCreator
@GET @Path("/tasklist/creator/{creator}") public jakarta.ws.rs.core.Response getTaskListByCreator(@PathParam("creator") String creator, @QueryParam("type") String type, @DefaultValue("0") @QueryParam("pageIndex") int pageIndex, @DefaultValue("10") @QueryParam("pageSize") int pageSize, @DefaultValue("") @QueryParam("sortBy") String sortBy, @DefaultValue("false") @QueryParam("sortReverse") Boolean sortReverse, @QueryParam("items") String items, @QueryParam("format") String format) -
getTaskListByProcessID
@GET @Path("/tasklist/processid/{processid}") public jakarta.ws.rs.core.Response getTaskListByProcessID(@PathParam("processid") int processid, @QueryParam("type") String type, @DefaultValue("0") @QueryParam("pageIndex") int pageIndex, @DefaultValue("10") @QueryParam("pageSize") int pageSize, @DefaultValue("") @QueryParam("sortBy") String sortBy, @DefaultValue("false") @QueryParam("sortReverse") Boolean sortReverse, @QueryParam("items") String items, @QueryParam("format") String format) -
getTaskListByGroup
@GET @Path("/tasklist/group/{processgroup}") public jakarta.ws.rs.core.Response getTaskListByGroup(@PathParam("processgroup") String processgroup, @QueryParam("type") String type, @DefaultValue("0") @QueryParam("pageIndex") int pageIndex, @DefaultValue("10") @QueryParam("pageSize") int pageSize, @DefaultValue("") @QueryParam("sortBy") String sortBy, @DefaultValue("false") @QueryParam("sortReverse") Boolean sortReverse, @QueryParam("items") String items, @QueryParam("format") String format) -
getTaskListByRef
@GET @Path("/tasklist/ref/{uniqueid : ([0-9a-f]{8}-.*|[0-9a-f]{11}-.*)}") public jakarta.ws.rs.core.Response getTaskListByRef(@PathParam("uniqueid") String uniqueid, @QueryParam("type") String type, @DefaultValue("0") @QueryParam("pageIndex") int pageIndex, @DefaultValue("10") @QueryParam("pageSize") int pageSize, @DefaultValue("") @QueryParam("sortBy") String sortBy, @DefaultValue("false") @QueryParam("sortReverse") Boolean sortReverse, @QueryParam("items") String items, @QueryParam("format") String format) -
postFormWorkitem
@POST @Path("/workitem") @Consumes("application/x-www-form-urlencoded") public jakarta.ws.rs.core.Response postFormWorkitem(InputStream requestBodyStream, @QueryParam("items") String items) This method expects a form post and processes the WorkItem by the WorkflowService EJB. After the workItem was processed the method redirect the request to the provided action URI. The action URI can also be computed by the Imixs Workflow ResutlPlugin- Parameters:
requestBodyStream- - form contentaction- - return URI- Returns:
-
postFormWorkitemByUnqiueID
@POST @Path("/workitem/{uniqueid : ([0-9a-f]{8}-.*|[0-9a-f]{11}-.*)}") @Consumes("application/x-www-form-urlencoded") public jakarta.ws.rs.core.Response postFormWorkitemByUnqiueID(@PathParam("uniqueid") String uid, InputStream requestBodyStream, @QueryParam("items") String items) This method expects a form post and processes the WorkItem by the WorkflowService EJB. After the workItem was processed the method redirect the request to the provided action URI. The action URI can also be computed by the Imixs Workflow ResutlPlugin- Parameters:
requestBodyStream- - form contentitems- - optional item list to be returned in the result- Returns:
-
putFormWorkitem
@PUT @Path("/workitem") @Consumes("application/x-www-form-urlencoded") public jakarta.ws.rs.core.Response putFormWorkitem(InputStream requestBodyStream, @QueryParam("items") String items) This method expects a form post.- Parameters:
requestBodyStream-items- - optional item list to be returned in the result- Returns:
- See Also:
-
putWorkitemDefault
-
postWorkitem
@POST @Path("/workitem") @Consumes({"application/xml","text/xml","application/json"}) public jakarta.ws.rs.core.Response postWorkitem(XMLDocument xmlworkitem, @QueryParam("items") String items) This method post a ItemCollection object to be processed by the WorkflowManager. The method test for the properties $taskidid and $eventid NOTE!! - this method did not update an existing instance of a workItem. The behavior is different to the method putWorkitem(). It need to be discussed if the behavior is wrong or not.- Parameters:
workitem- - new workItem dataitems- - optional item list to be returned in the result
-
putWorkitem
@PUT @Path("/workitem") @Consumes({"application/xml","text/xml","application/json"}) public jakarta.ws.rs.core.Response putWorkitem(XMLDocument workitem, @QueryParam("items") String items) Delegater- Parameters:
workitem-items- - optional item list to be returned in the result- Returns:
-
postWorkitemByUniqueID
@POST @Path("/workitem/{uniqueid : ([0-9a-f]{8}-.*|[0-9a-f]{11}-.*)}") @Consumes({"application/xml","text/xml","application/json"}) public jakarta.ws.rs.core.Response postWorkitemByUniqueID(@PathParam("uniqueid") String uniqueid, XMLDocument xmlworkitem, @QueryParam("items") String items) -
putWorkitemByUniqueID
@PUT @Path("/workitem/{uniqueid : ([0-9a-f]{8}-.*|[0-9a-f]{11}-.*)}") @Consumes({"application/xml","text/xml","application/json"}) public jakarta.ws.rs.core.Response putWorkitemByUniqueID(@PathParam("uniqueid") String uniqueid, XMLDocument xmlworkitem, @QueryParam("items") String items) Delegater for PUT postXMLWorkitemByUniqueID- Parameters:
workitem-items- - optional item list to be returned in the result- Returns:
-
postWorkitems
@POST @Path("/workitems") @Consumes({"application/xml","text/xml","application/json"}) public jakarta.ws.rs.core.Response postWorkitems(XMLDataCollection worklist) This method post a collection of ItemCollection objects to be processed by the WorkflowManager.- Parameters:
worklist- - workitem list dataitems- - optional item list to be returned in the result
-
putWorkitems
@PUT @Path("/workitems") @Consumes({"application/xml","text/xml","application/json"}) public jakarta.ws.rs.core.Response putWorkitems(XMLDataCollection worklist) -
postTypedWorkitemJSON
@POST @Path("/workitem/typed") @Produces({"application/json","application/xml","text/xml"}) @Consumes("application/json") public jakarta.ws.rs.core.Response postTypedWorkitemJSON(InputStream requestBodyStream, @QueryParam("error") String error, @QueryParam("items") String items) This method expects JSON in BADGARFISH notation to processed by the WorkflowService EJB.The Method returns a workitem with the new data. If a processException Occurs the method returns an object with the error code
The JSON is parsed manually by teh imixs json parser. The expreced notation is:
... value":{"@type":"xs:int","$":"10"}- Parameters:
requestBodyStream-items- - optional item list to be returned in the result- Returns:
- JSON object
- Throws:
Exception
-
putTypedWorkitemJSON
@PUT @Path("/workitem/typed") @Consumes("application/json") public jakarta.ws.rs.core.Response putTypedWorkitemJSON(InputStream requestBodyStream, @QueryParam("error") String error, @QueryParam("items") String items) Delegater for PUT postJSONTypedWorkitem- Parameters:
workitem-items- - optional item list to be returned in the result- Returns:
-
postTypedWorkitemJSONByUniqueID
@POST @Path("/workitem/{uniqueid : ([0-9a-f]{8}-.*|[0-9a-f]{11}-.*)}/typed") @Consumes("application/json") public jakarta.ws.rs.core.Response postTypedWorkitemJSONByUniqueID(@PathParam("uniqueid") String uniqueid, InputStream requestBodyStream, @QueryParam("error") String error, @QueryParam("items") String items) -
putTypedWorkitemJSONByUniqueID
@PUT @Path("/workitem/{uniqueid : ([0-9a-f]{8}-.*|[0-9a-f]{11}-.*)}/typed") @Consumes("application/json") public jakarta.ws.rs.core.Response putTypedWorkitemJSONByUniqueID(@PathParam("uniqueid") String uniqueid, InputStream requestBodyStream, @QueryParam("error") String error, @QueryParam("items") String items) Delegater for PUT postJSONWorkitemByUniqueID- Parameters:
workitem-items- - optional item list to be returned in the result- Returns:
-
parseWorkitem
This method expects a form post. The method parses the input stream to extract the provides field/value pairs. NOTE: The method did not(!) assume that the put/post request contains a complete workItem. For this reason the method loads the existing instance of the corresponding workItem (identified by the $uniqueid) and adds the values provided by the put/post request into the existing instance. The following kind of lines which can be included in the InputStream will be skipped------------------------------1a26f3661ff7 Content-Disposition: form-data; name="query" Connection: keep-alive Content-Type: multipart/form-data; boundary=---------------------------195571638125373 Content-Length: 5680 -----------------------------195571638125373- Parameters:
requestBodyStream-- Returns:
- a workitem
-