Event publishers
Event publishers allows to capture internal events generated during workflow execution to be pushed out to external systems. There are different types of events being published
-
workflow instance
-
user task
Workflow instance provides information about given context of the instance that includes its:
-
instance data (data objects)
-
metadata information such as instance id, parent and root instance ids, state, business key and so on
-
node instances (activities) executed in the given request
User task provides information about tasks assigned to human actors. This is mainly to allow advanced searches across assigned tasks to be able to efficiently find and work on assigned tasks. User tasks consists of
-
input data
-
optional output data
-
potential owners
-
task metadata such as id, name, description, status etc
Event publishers can do any transformation or filtering of the received events. |
There are several event publishers available out of the box.
ElasticSearch event publisher
Elastic search event publisher allows to push events to ElasticSearch cluster. It publishes three types of events
-
workflow instances events
-
user task events
-
audit events
Workflow instance events
Workflow instance events are being pushed to dedicated index in elastic cluster that is named based on workflow definition id. Every instance that belongs to that definition will be placed into the same index. That means there will be one index for each workflow definition in the service.
The workflow definition id used for index name will also include version if it was defined in the workflow. |
The primary context of the workflow instance event is the data. So the top level of the document in elastic
will have all data object of given instance. In addition to that there will be _metadata
attribute that
contains workflow instance specific information such as id of root or parent instance, business key, state, etc.
User task events
User task events are build from every user task executed in the workflow instance. User tasks are meant to
delegate work to human actors for gathering information. In many cases it will be required to build up
an efficient list of tasks for individuals or groups. By that elastic event publisher will index all user
tasks regardless of the workflow definition or instance they belong to in single index named tasks
.
This will allow to build the index across all tasks that human actors can interact with like searching by inputs, metadata and potential owners.
Audit events
Audit events are build from the workflow instance events content by extracting node instances executed. This will provide a complete audit trial of what has been executed in given workflow instance.
All audit log information are stored in the same index in elastic cluster named atk_audit
.
Name od audit index name is configurable so can be changed to provide more domain specific name |
Configuration
To use elastic event publisher your service must have following dependency
<dependency>
<groupId>io.automatiko.addons</groupId>
<artifactId>automatiko-events-elastic-addon</artifactId>
</dependency>
Additional configuration should be placed in application.properties
Property name | Environment variable | Description | Required | Default value | BuildTime only |
---|---|---|---|---|---|
quarkus.automatiko.events.elastic.instance |
QUARKUS_AUTOMATIKO_EVENTS_ELASTIC_INSTANCE |
Specifies if workflow instances events should be published to elastic cluster |
No |
true |
No |
quarkus.automatiko.events.elastic.tasks |
QUARKUS_AUTOMATIKO_EVENTS_ELASTIC_TASKS |
Specifies if user task events should be published to elastic cluster |
No |
true |
No |
quarkus.automatiko.events.elastic.audit |
QUARKUS_AUTOMATIKO_EVENTS_ELASTIC_AUDIT |
Specifies if audit (node instances) events should be published to elastic cluster |
No |
false |
No |
quarkus.automatiko.events.elastic.audit-index |
QUARKUS_AUTOMATIKO_EVENTS_ELASTIC_AUDIT_INDEX |
Specifies name of the index in elastic cluster for audit events |
No |
atk_audit |
No |
Websocket event publisher
Websocket event publisher allows to have websocket sessions connected to the service to receive events real time. It publishes three types of events
-
workflow instances events
-
user task events
Websocket event publisher will enforce security restriction on events to make sure it will push the events to authorized sessions. |
This event publisher does not make any transformation to the event thus they will be pushed to websocket session clients in cloud event format.
Configuration
To use elastic event publisher your service must have following dependency
<dependency>
<groupId>io.automatiko.addons</groupId>
<artifactId>automatiko-events-websocket-addon</artifactId>
</dependency>
Additional configuration should be placed in application.properties
Property name | Environment variable | Description | Required | Default value | BuildTime only |
---|---|---|---|---|---|
quarkus.automatiko.events.websocket.instance |
QUARKUS_AUTOMATIKO_EVENTS_WEBSOCKET_INSTANCE |
Specifies if workflow instances events should be published to websocket session |
No |
true |
No |
quarkus.automatiko.events.websocket.tasks |
QUARKUS_AUTOMATIKO_EVENTS_WEBSOCKET_TASKS |
Specifies if user task events should be published to websocket session |
No |
true |
No |