The Imixs RestClient

The Imixs-RestClient is a helper class to establish connections to a Rest Service Endpoint. The client can be used for general HTTP communication and also for the Imxis-Rest API.

Core Methods

The RestClient provides the following GET and POST core methods:

Method Description
get(url) Gets the content of a GET request from a Rest Service URI Endpoint. I case of an error the method throws a RestAPIException.
get(url) Posts a String data object with a specific Content-Type to a Rest URI Endpoint. This method can be used to simulate different post scenarios.
registerRequestFilter(RequestFilter) adds a request filter

Imixs Rest-API Data Methods

The following methods can be used to get and process Imxis Workflow Data

Method Description
postDocument(String, ItemCollection) Posts an Imixs ItemCollection to a Rest Service URI endpoint.
postXMLDocument(String, XMLItemCollection) Posts an Imixs XMLDocument to a Rest Service URI endpoint.
postXMLDataCollection(String, XMLDataCollection) Posts an Imixs XMLDataCollection to a Rest Service URI endpoint.
postJSON(String, String) Posts a JSON String to a Rest Service URI endpoint.
postCollection(url, DocumentCollection) POST MEHTHOD for a document collection
getDocument(url) Returns a ItemCollection from a rest service endpoint.
getXMLDocument(url) Returns a XMLDocument from a rest service endpoint.

This is a simple example how to request the tasklist of a user:

// create RestClient ....
    RestClient restClient = new RestClient();
    try {
       List<ItemCollection> documents = restClient.
            getDocumentCollection("http://localhost:8080/workflow/rest-service/workflow/tasklist/owner/admin");
       logger.info("Read " + documents.size() + " documents");
    } catch (Exception e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
    }

RequestFilter & Authentication

The Imixs-RestClient supports also custom “RequestFilters”. A Requestfilter implements the interface org.imixs.workflow.services.rest.RequestFilter and can be used to handle a HTTP Request.

public class MyFilter implements RequestFilter {

    public void filter(HttpURLConnection connection) throws IOException {
       // your code goes here...
    }
}

There a several Request filters available to be used for authentication:

  • BasicAuthenticator - for a BASIC authentication
  • FormAuthenticator - for a form based authentication with a JSESSION cookie
  • JWTAuthenticator - for authentication based on JSON Web Tokens

The following example shows how to use a BASIC authentication filter:

RestClient restClient = new RestClient();
// create a default basic authenticator
BasicAuthenticator basicAuth = new BasicAuthenticator("myuser","mypassword");
// register the authenticator
restClient.registerRequestFilter(basicAuth);
...