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
-
Method Summary
Modifier and TypeMethodDescriptionjakarta.ws.rs.core.Response
Returns a collection of events of a workitem, visible to the current userjakarta.ws.rs.core.StreamingOutput
jakarta.ws.rs.core.Response
getTaskListByAuthor
(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.Response
getTaskListByCreator
(String creator, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.Response
getTaskListByGroup
(String processgroup, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.Response
getTaskListByOwner
(String owner, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.Response
getTaskListByProcessID
(int processid, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.Response
getTaskListByRef
(String uniqueid, String type, int pageIndex, int pageSize, String sortBy, Boolean sortReverse, String items, String format) jakarta.ws.rs.core.Response
getTaskListByWriteAccess
(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.Response
getWorkItem
(String uniqueid, String items, String format) returns a single workitem defined by $uniqueidjakarta.ws.rs.core.Response
getWorkItemFile
(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.Response
getWorkList
(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.Response
postFormWorkitem
(InputStream requestBodyStream, String items) This method expects a form post and processes the WorkItem by the WorkflowService EJB.jakarta.ws.rs.core.Response
postFormWorkitemByUnqiueID
(String uid, InputStream requestBodyStream, String items) This method expects a form post and processes the WorkItem by the WorkflowService EJB.jakarta.ws.rs.core.Response
postTypedWorkitemJSON
(InputStream requestBodyStream, String error, String items) This method expects JSON in BADGARFISH notation to processed by the WorkflowService EJB.jakarta.ws.rs.core.Response
postTypedWorkitemJSONByUniqueID
(String uniqueid, InputStream requestBodyStream, String error, String items) jakarta.ws.rs.core.Response
postWorkitem
(XMLDocument xmlworkitem, String items) This method post a ItemCollection object to be processed by the WorkflowManager.jakarta.ws.rs.core.Response
postWorkitemByUniqueID
(String uniqueid, XMLDocument xmlworkitem, String items) jakarta.ws.rs.core.Response
postWorkitems
(XMLDataCollection worklist) This method post a collection of ItemCollection objects to be processed by the WorkflowManager.jakarta.ws.rs.core.Response
putFormWorkitem
(InputStream requestBodyStream, String items) This method expects a form post.jakarta.ws.rs.core.Response
putTypedWorkitemJSON
(InputStream requestBodyStream, String error, String items) Delegater for PUT postJSONTypedWorkitemjakarta.ws.rs.core.Response
putTypedWorkitemJSONByUniqueID
(String uniqueid, InputStream requestBodyStream, String error, String items) Delegater for PUT postJSONWorkitemByUniqueIDjakarta.ws.rs.core.Response
putWorkitem
(XMLDocument workitem, String items) Delegaterjakarta.ws.rs.core.Response
putWorkitemByUniqueID
(String uniqueid, XMLDocument xmlworkitem, String items) Delegater for PUT postXMLWorkitemByUniqueIDjakarta.ws.rs.core.Response
putWorkitems
(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
-