a9cd7750f4
CI / unit-test (push) Has been cancelled
CI / detect-changes (push) Has been cancelled
CI / build (push) Has been cancelled
Publish docs via GitHub Pages / Deploy docs (push) Has been cancelled
CI / test-harness (push) Has been cancelled
CI / generate-e2e-matrix (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / build-ui (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
UI v2 Integration CI / E2E (Integration) (push) Has been cancelled
UI v2 CI / Lint, Format & Test (push) Has been cancelled
UI v2 CI / E2E (Mocked) (push) Has been cancelled
54 lines
2.0 KiB
Markdown
54 lines
2.0 KiB
Markdown
---
|
|
description: "Extend Conductor with custom persistence backends, queue implementations, and workflow status listeners for this open source workflow orchestration engine."
|
|
---
|
|
|
|
# Extending Conductor
|
|
|
|
## Backend
|
|
Conductor provides a pluggable backend. Supported implementations include Redis, PostgreSQL, MySQL, Cassandra, and SQLite.
|
|
|
|
There are 4 interfaces that need to be implemented for each backend:
|
|
|
|
```java
|
|
//Store for workflow and task definitions
|
|
com.netflix.conductor.dao.MetadataDAO
|
|
```
|
|
|
|
```java
|
|
//Store for workflow executions
|
|
com.netflix.conductor.dao.ExecutionDAO
|
|
```
|
|
|
|
```java
|
|
//Index for workflow executions
|
|
com.netflix.conductor.dao.IndexDAO
|
|
```
|
|
|
|
```java
|
|
//Queue provider for tasks
|
|
com.netflix.conductor.dao.QueueDAO
|
|
```
|
|
|
|
It is possible to mix and match different implementations for each of these.
|
|
For example, SQS for queueing and a relational store for others.
|
|
|
|
|
|
## System Tasks
|
|
To create system tasks follow the steps below:
|
|
|
|
* Extend ```com.netflix.conductor.core.execution.tasks.WorkflowSystemTask```
|
|
* Instantiate the new class as part of the startup (eager singleton)
|
|
* Implement the ```TaskMapper``` [interface](https://github.com/conductor-oss/conductor/blob/main/core/src/main/java/com/netflix/conductor/core/execution/mapper/TaskMapper.java)
|
|
|
|
## Workflow Status Listener
|
|
To provide a notification mechanism upon completion/termination of workflows:
|
|
|
|
* Implement the ```WorkflowStatusListener``` [interface](https://github.com/conductor-oss/conductor/blob/main/core/src/main/java/com/netflix/conductor/core/listener/WorkflowStatusListener.java)
|
|
* This can be configured to plugin custom notification/eventing upon workflows reaching a terminal state.
|
|
|
|
## Event Handling
|
|
Provide the implementation of [EventQueueProvider](https://github.com/conductor-oss/conductor/blob/main/core/src/main/java/com/netflix/conductor/core/events/EventQueueProvider.java).
|
|
|
|
E.g. SQS Queue Provider:
|
|
[SQSEventQueueProvider.java ](https://github.com/conductor-oss/conductor/blob/main/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueProvider.java)
|