Complex Flows will sometimes require customized functionality that cannot be implemented using the Web Designer alone. Interact allow you to easily create and maintain your own custom code as a service, and expose that service to Designers.

Custom Services are run on the Interact Server – no additional servers are needed for deployment. In this way, your code is completely isolated and maintained in a secure environment.

Some use cases for Custom Services include:

  • Customized format validation
  • XML parsing
  • Calculations based on multiple web services
  • Complex string and date manipulation

Note: The Custom Services feature is available only to accounts using the Web Designer.

Custom Services use the Node.js runtime environment, which is built on Chrome's JavaScript runtime to easily build fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.

Each Custom Service is wrapped by an Integration Point. This wrapping enables the Flow to send variables to the request, and receive one or more variables in the response. The variables can be simple types (e.g., text or number), or complex types, such as custom variables or a collection.  

The following diagram shows how a Custom Service is invoked from a Flow:

  1. Request variables are sent to the Interact Server
  2. The service is executed within the Interact Server
  3. Response variables are sent back and, in this case, displayed to the Flow user in a Collection Display.

You add Custom Services by creating a Custom Integration Point. A wizard provides a code editor and prompts you to define the request and response variables. The wizard also lets you test your code from within the editor and allows you to view the response, the console, and any errors that your code has generated.

Once your code is ready, the service automatically becomes available in the Designer (like any other Integration Point).

The following sections present detailed information for creating a Custom Integration Point: