Synapse Core/Server

Synapse is a lightweight execution engine for unifying federated data sources and processes.

Overview

Synapse Core holds the object definitions and workflow engine for processing Synapse Plans. Synapse Server provides a REST-enabled, distributed execution platform, wherein Synapse Controller brokers Plans to Synapse Nodes. Synapse Node is a wrapper on the Synapse Core workflow engine.

Elements

Synapse.Core

Synapse.Core hosts the workflow engine and objects. This project also includes Synapse.Cli, which is useful for testing Synapse Plans. If you want to create/test Plans locally or develop a custom Handler, this is the place to start. Read about the basics of Synapse Plans here.

Example of Complete Plan YAML

     Source Code     |     Current Release

Synapse.Server

Synapse.Server is the API/daemon for launching/controlling/executing Synapse Plans via Synapse.Controller and Synapse.Node.

Components

Name Description
Synapse.Enterprise (coming soon) An API for managing Plans in an enterprise setting: Synapse.Enterprise provides robust hierarchical, inheritance-based security patterns, support for multi-tenant hosting, application environments, execution delegation, and more.
Synapse.Controller An API for starting/cancelling Synapse Plan execution and recording status. Manages execution log-capture and keeps detailed audit logs.
Controller DataAccessLayer The Controller DAL is for persisting Plans and Plan execution history. Current implementations include FileSystem, MongoDB, and SQL Server.
Controller Custom Assemblies The Controller supports a URI extensibility pattern for custom data/integration patterns. Read more here.
Synapse.Node A server daemon designed to act as remote Synapse.Core agent. Synapse.Node can execute local or remote processes.
CommandLine Interfaces Synapse.Controller/.Node both have fully-featured CLIs for interacting with the REST APIs.
     Source Code     |     Current Release

Handlers

Synapse Handlers provide the technical implementation for Plan functional capability. Essentially, a handler can do "anything," thus providing a rich extensibility platform. You can build/test custom handlers with a dependency on Synapse.Core, and you host Handlers as part of Synapse.Node.

Read more here.