Web Hook

Type: webhook

This handler makes an HTTP(S) POST to a remote web service. It automatically passes along any relevant information about the workflow, task or transition so that your web service can get to work.

The config for this handler looks like this:

{
    "url": "http://myserver:port/controller"
}

In addition, you can supply username and password properties in support of Basic authentication to your listener endpoint:

{
    "url": "http://myserver:port/controller",
    "username": "username",
    "password": "password"
}

For workflow events, the payload looks like this:

{
    "workflow": {
        "_doc": "<workflowId>",
        "modelId": "<modelId>",
        "modelVersion": "<modelVersion>",
        "resources": {
            "resourceId": {
                "_doc": "<resourceId>"
            },
            ...
        },
        "data": {
            ...
        }
    },
    "event": "<eventId>"
}

For task events, the payload includes the workflow properties, plus:

{
    "task": {
        "_doc": "<taskId>",
        "type": "<taskType>",
        "workflowNodeId": "<workflowNodeId>",
        "data": {
            ...
        },
        "resources": {
            "resourceId": {
                "_doc": "<resourceId>"
            },
            ...
        },
        "assignee": {
            "domainId": "<domainId>",
            "_doc": "<principalId>",
            "name": "<name>",
            "email": "<email>"
        }
    }
}

For transition events, the payload includes the workflow properties, plus:

{
    "source": {
        "_doc": "<taskId>",
        "type": "<taskType>",
        "workflowNodeId": "<workflowNodeId>",
        "data": {
            ...
        },
        "resources": {
            "resourceId": {
                "_doc": "<resourceId>"
            },
            ...
        },
        "assignee": {
            "domainId": "<domainId>",
            "_doc": "<principalId>",
            "name": "<name>"
        }
    },
    "target": {
        "_doc": "<taskId>",
        "type": "<taskType>",
        "workflowNodeId": "<workflowNodeId>",
        "data": {
            ...
        },
        "resources": {
            "resourceId": {
                "_doc": "<resourceId>"
            },
            ...
        },
        "assignee": {
            "domainId": "<domainId>",
            "_doc": "<principalId>",
            "name": "<name>"
        }
    },
    "transition": "<transitionId>"
}

The web hook listener will be sent an HTTP POST request with content type "application/json". The listener should return a JSON response (empty) with a status of 200. The response should be of type "application/json". At present, the response is ignored by the Cloud CMS server.

The SDK includes a sample webhook server.

At a future point, conditional logic based on web hook response will be introduced.