Skip Navigation

Overview

Workflow extensions allow the possibility for Red App to extend existing logic in the SR360 workflow with new features.

This is done by exposing specially defined extension points which can be used by Red App to contribute its logic to it. Workflow extension is a point in flow which is executed like any ordinary task, however, unlike an ordinary task, it does not have its own logic inside. Instead, its logic is delivered by Red App by registering its handler to the chosen flow extension point. For example, the Red App can invoke a service and based on the response decide whether the flow should continue or not. Customization is optional, so if there is no contributor registered, this step in the workflow is skipped.

It is not possible to define own data structures. The only data that are available in the extension is the one passed via method parameter.

Data Flow

  1. Workflow is started by user by clicking on the GUI or sending a command.

  2. The execution of the workflow lasts until the extension point is reached.

  3. The workflow executor checks if any handler is registered to the workflow extension point.

  4. If there is no handler registered to the workflow extension point, the workflow execution goes on.

  5. If any handler is registered to the extension point, then the workflow is interrupted. Command flow and its payload are converted to available for Red App counterparts.

  6. The Red App handler registered to the workflow extension point invokes logic.

  7. Modifications done by the handler on flow data are merged back to the original command flow and its payload.

  8. Next workflow execution goes on.

image195
Important
If one of the handlers returns ABORT status then no other registered handlers will be executed.

Example Usage

You can find examples of all workflow extension points contributions in com.sabre.redapp.example3.web.wf.extension sample.

By default, this sample for each extension point does not change the data model and returns the CONTINUE status. However, if the appropriate remark is defined, a modal will be shown with a JSON representation of the data model and buttons allowing to define the return status (CONTINUE or ABORT). Remark EXTP-DISP enables this modal for all extension points but it is also possible to enable the modal only for one extension point, by adding a suffix to the EXTP-DISP remark with the name of the extension point, e.g.:

  • EXTP-DISP-BEFOREPRICING

  • EXTP-DISP-AFTERPRICEQUOTECREATION

  • EXTP-DISP-BEFOREAIRSHOPPINGINPUT

  • EXTP-DISP-BEFOREAIRBOOKANDPRICE

  • EXTP-DISP-BEFOREAIRAVAILABILITY

If the extension point allows data modification then it will be possible to edit the JSON representation of the data model on the pop-up. Invalid data modification may cause errors and cancels the processing of the flow.

extp disp