MCPcopy
hub / github.com/conductor-oss/conductor

github.com/conductor-oss/conductor @java-client-v4.0.7 sqlite

repository ↗ · DeepWiki ↗ · release java-client-v4.0.7 ↗
11,521 symbols 50,866 edges 1,175 files 2,034 documented · 18%
README

Logo

Scalable Workflow Orchestration

Github release License Conductor Slack Community Forum Conductor OSS GitHub stars

Conductor is a platform originally created at Netflix to orchestrate microservices and events. Conductor OSS is maintained by the team of developers at Orkes.io along with members of the open source community.

conductor_oss_getting_started


Table of Contents

  1. What is Conductor?
  2. Getting Started
  3. Documentation
  4. Database Specifications
  5. Deployment Options
  6. Conductor Roadmap
  7. How to Contribute
  8. Additional Resources
  9. Community & Support

What is Conductor?

Conductor (or Netflix Conductor) is a microservices orchestration engine for distributed and asynchronous workflows. It empowers developers to create workflows that define interactions between services, databases, and other external systems.

Conductor is designed to enable flexible, resilient, and scalable workflows. It allows you to compose services into complex workflows without coupling them tightly, simplifying orchestration across cloud-native applications and enterprise systems alike.

Key benefits

  • Resilience and Error Handling: Conductor enables automatic retries and fallback mechanisms.
  • Scalability: Built to scale with complex workflows in high-traffic environments.
  • Observability: Provides monitoring and debugging capabilities for workflows.
  • Ease of Integration: Seamlessly integrates with microservices, external APIs, and legacy systems.

Features

  • Workflow as Code: Define workflows in JSON and manage them with versioning.
  • Rich Task Types: Includes task types like HTTP, JSON, Lambda, Sub Workflow, and Event tasks, allowing for flexible workflow definitions.
  • Dynamic Workflow Management: Workflows can evolve independently of the underlying services.
  • Built-in UI: A customizable UI is available to monitor and manage workflows.
  • Flexible Persistence and Queue Options: Use Redis, MySQL, Postgres, and more.

Getting Started

Requirements

  • Install Docker Desktop (Mac, Windows/PC, Linux)
  • Install Java (JDK) 17 or newer
  • Node 14 for the UI to build
  • Earlier versions may work, but are untested

Quick Start Guide

Clone the repo

git clone https://github.com/conductor-oss/conductor

Change to new Conductor directory

cd conductor

Start with Docker Compose (recommended for local deployment)

docker compose -f docker/docker-compose.yaml up

Create your first workflow

To create a workflow, navigate to the UI:
  • http://localhost:8127
Or use the REST API with your preferred HTTP client
  • http://localhost:8080

Documentation

Check-out the Conductor OSS docs for additional details


Database Specifications

  • The default persistence used is Redis
  • The indexing backend is Elasticsearch (7.x)

Configuration for various database backends

Backend Configuration
Redis + ES7 config-redis.properties
Postgres config-postgres.properties
Postgres + ES7 config-postgres-es7.properties
MySQL + ES7 config-mysql.properties

Deployment Options

In addition to the Docker Compose setup, Netflix Conductor supports several other deployment methods to suit various environments:

  • Docker: Outlined above
  • Custom Deployment: Build from source and deploy Conductor as a standalone Java application. Configure databases, queues, and environment settings as needed.

Available SDKs

Conductor provides several SDKs for interacting with the API and creating custom clients:

  • Java SDK: Fully featured for building and executing workflows in Java.
  • Python SDK: Python library for creating and managing workflows.
  • Go SDK: For integrating Conductor workflows with Go-based services.
  • C# (C sharp) SDK:The conductor-csharp repository provides the client SDKs to build task workers in C#

Each SDK is maintained as part of the Conductor project, providing examples and comprehensive API documentation.

Conductor OSS Roadmap

See the roadmap for the Conductor If you would like to participate in the roadmap and development, please reach out.

Documentation and Community

  • Official Documentation: Conductor documentation contains detailed explanations of workflow concepts, API reference, and guides.
  • Conductor Slack: Join the Conductor Slack channel for community discussions and support.
  • Orkes Community Discourse: Hosted by Orkes.io on Discourse, you can engage the Conductor & Orkes community, ask questions, and contribute ideas.

License

Conductor is licensed under the Apache 2.0 License © Conductor Open-source


Contributing

We welcome contributions from everyone!

  • Report Issues: Found a bug or have a feature request? Open an issue on GitHub.
  • Contribute Code: Check out our Contribution Guide for initial guidelines, and explore our good first issues for beginner-friendly tasks to tackle first.
  • Build a Conductor SDK: Need an SDK not included with Conductor? Build your own using the Swagger API included with your local deployment.
  • Contribute to our Docs: Contribute edits or updates to keep our documentation in great shape for the community.

Contributors

Extension points exported contracts — how you extend this code

WorkflowStatusListener (Interface)
Listener for the completed and terminated workflows [6 implementers]
core/src/main/java/com/netflix/conductor/core/listener/WorkflowStatusListener.java
FilterProvider (Interface)
@author Viren [12 implementers]
es7-persistence/src/main/java/com/netflix/conductor/es7/dao/query/parser/FilterProvider.java
FilterProvider (Interface)
@author Viren [12 implementers]
os-persistence/src/main/java/com/netflix/conductor/os/dao/query/parser/FilterProvider.java
ExternalPayloadStorage (Interface)
Interface used to externalize the storage of large JSON payloads in workflow and task input/output [8 implementers]
conductor-clients/java/conductor-java-sdk/conductor-client/src/main/java/com/netflix/conductor/common/utils/ExternalPayloadStorage.java
ExternalPayloadStorage (Interface)
Interface used to externalize the storage of large JSON payloads in workflow and task input/output [13 implementers]
common/src/main/java/com/netflix/conductor/common/utils/ExternalPayloadStorage.java
FilterProvider (Interface)
(no doc) [12 implementers]
es6-persistence/src/main/java/com/netflix/conductor/es6/dao/query/parser/FilterProvider.java
TransactionalFunction (Interface)
Functional interface for operations within a transactional context. @author mustafa [2 implementers]
mysql-persistence/src/main/java/com/netflix/conductor/mysql/util/TransactionalFunction.java
TransactionalFunction (Interface)
Functional interface for operations within a transactional context. @author mustafa [2 implementers]
sqlite-persistence/src/main/java/com/netflix/conductor/sqlite/util/TransactionalFunction.java

Core symbols most depended-on inside this repo

get
called by 1661
core/src/main/java/com/netflix/conductor/dao/IndexDAO.java
put
called by 1173
client/src/main/java/com/netflix/conductor/client/http/ClientBase.java
size
called by 765
core/src/main/java/com/netflix/conductor/core/events/queue/ObservableQueue.java
error
called by 525
core/src/main/java/com/netflix/conductor/metrics/Monitors.java
getName
called by 483
core/src/main/java/com/netflix/conductor/core/events/queue/ObservableQueue.java
getStatus
called by 339
core/src/main/java/com/netflix/conductor/model/TaskModel.java
setStatus
called by 307
core/src/main/java/com/netflix/conductor/model/TaskModel.java
getTaskId
called by 295
core/src/main/java/com/netflix/conductor/model/TaskModel.java

Shape

Method 10,008
Class 1,091
Function 283
Interface 70
Enum 69

Languages

Java97%
TypeScript3%
Python1%

Modules by API surface

redis-persistence/src/main/java/com/netflix/conductor/redis/jedis/JedisStandalone.java132 symbols
redis-persistence/src/main/java/com/netflix/conductor/redis/jedis/JedisSentinel.java131 symbols
redis-persistence/src/main/java/com/netflix/conductor/redis/jedis/JedisCluster.java131 symbols
core/src/main/java/com/netflix/conductor/model/TaskModel.java110 symbols
redis-persistence/src/test/java/com/netflix/conductor/redis/jedis/JedisSentinelTest.java104 symbols
redis-persistence/src/test/java/com/netflix/conductor/redis/jedis/JedisClusterTest.java103 symbols
common/src/main/java/com/netflix/conductor/common/metadata/tasks/Task.java100 symbols
conductor-clients/java/conductor-java-sdk/conductor-client/src/main/java/com/netflix/conductor/common/metadata/tasks/Task.java94 symbols
core/src/main/java/com/netflix/conductor/core/config/ConductorProperties.java88 symbols
redis-persistence/src/main/java/com/netflix/conductor/redis/jedis/JedisMock.java86 symbols
conductor-clients/java/conductor-java-sdk/conductor-client/src/main/java/com/netflix/conductor/common/metadata/workflow/WorkflowTask.java85 symbols
common/src/main/java/com/netflix/conductor/common/metadata/workflow/WorkflowTask.java85 symbols

Dependencies from manifests, versioned

@babel/core7.18.2 · 1×
@babel/preset-env7.18.2 · 1×
@babel/register7.17.7 · 1×
@cypress/react5.12.5 · 1×
@material-ui/core4.12.3 · 1×
@material-ui/icons4.11.2 · 1×
@material-ui/lab4.0.0-alpha.60 · 1×
@material-ui/styles4.11.4 · 1×
@monaco-editor/react4.4.0 · 1×
@use-gesture/react10.2.21 · 1×
clsx1.1.1 · 1×

Datastores touched

conductorDatabase · 1 repos
postgresDatabase · 1 repos
(mysql)Database · 1 repos
conductorDatabase · 1 repos

For agents

$ claude mcp add conductor \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact