GoonIT

Developing a generic RESTful Service Workflow Extension for ISIM

The purpose of this article is to show how to develop an IBM Security Identity Manager Workflow Extension using Eclipse IDE.


We will develop an Extension that can POST data to a RESTful service and receive a response. This generic extension has been on my mind for a long time as it can be used for almost any purpose either to send data from ISIM, to receive external data, to integrate with external workflow or even Service Desk software.

The Service being called can be any valid REST or Web Service and could even be implemented in IBM Tivoli Directory Integrator. The same extension can be used for a variety of purposes by changing the workflow script node and Service Url.


Requirements



Limitations


The intention was to return JSON data from the Web Service which would make passing objects much easier but unfortunately the ISIM Javascript engine does not seem to have a JSON parser. So the data is currently a string and you will have to parse in a script node as appropriate.


Overview

Figure: ISIM REST Extension



Configure Eclipse

  1. Install eclipse IDE.
  2. Create a new workspace which is an empty directory to hold your projects.
  3. Create a new Java project.
  4. Import the WorkflowExtension examples from
    $ISIM_HOME/extensions/6.0/examples/workflow/src/examples/workflow.
  5. Configure the build path by adding itim_api.jar, itim_server.jar and itim_server_api.jar.
  6. A sample TDI AssemblyLine to act as the REST service will be implemented.

The video below shows the setup of the eclipse IDE and should be viewed in full screen: -


The REST Extension

The code demonstrates: -

  1. Receiving Parameters from ISIM.
  2. Using the ISIM API within the extension.
  3. Making HTTP requests to a Web Service.
  4. Returning data to ISIM in the returned ActivityResult object.


TDI AssemblyLine

A TDI AssemblyLine is included in the package to download. The AssemblyLine consists of a HTTPServer Connector implementing an example REST service. Depending on the URL received the AssemblyLine returns a HTTP 200 or 202 response code and dummy data. It is for you to amend and configure the AssemblyLine to perform any other operations and return more useful data.


Installation

The tasks to install the extension are : -

  1. Copy the jar file to $ISIM_HOME/lib directory.
  2. Add the following lines to workflowextensions.xml in $ISIM_HOME/data before the last line: -

  3. Add the jar file to the ISIM Application's Classpath using the WebSphere Administration Console.
    Figure: ISIM Shared Library


  4. Restart the IBM WebSphere Server.
  5. Add the extension to your ISIM workflow and use appropriate Script Nodes to call the extension and validate responses.
    The video below shows the steps to configure the extension:-


ISIM Workflow


Figure: Workflow (scrollable)

The REST Extension can be added anywhere in your workflow. You determine the information you want to send and process the response in script nodes before and after the extension.

  1. Script node (setRestParameters) sets the urlSting and urlParameters:-


  2. Rest Extension is configured with Relevant Data Items: -
    Figure: Rest Extension RDIs


  3. Script node (getResults) retrieves the data response from the REST Service being called:-


Demo / Testing

The video below shows the example workflow extension being tested:-