Synapse.Sdk 1.0.0-alpha5

Prefix Reserved
This is a prerelease version of Synapse.Sdk.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Synapse.Sdk --version 1.0.0-alpha5                
NuGet\Install-Package Synapse.Sdk -Version 1.0.0-alpha5                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Synapse.Sdk" Version="1.0.0-alpha5" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Synapse.Sdk --version 1.0.0-alpha5                
#r "nuget: Synapse.Sdk, 1.0.0-alpha5"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Synapse.Sdk as a Cake Addin
#addin nuget:?package=Synapse.Sdk&version=1.0.0-alpha5&prerelease

// Install Synapse.Sdk as a Cake Tool
#tool nuget:?package=Synapse.Sdk&version=1.0.0-alpha5&prerelease                

<p align="center"> <img src="./assets/images/transparent_logo.png" height="350px" alt="Synapse Logo"/> </p>


Publish Release Release Commits since latest Commits since latest License

About

Synapse is a vendor-neutral, open-source, and community-driven Workflow Management System (WFMS) designed to implement the Serverless Workflow specification.

It enables developers and organizations to define and execute workflows effortlessly using a high-level, intuitive Domain Specific Language (DSL).

With Synapse, you can create powerful workflows that are cloud vendor-agnostic, easily scalable, and highly customizable.

<p align="center"> <img src="./assets/images/preview.gif" alt="Synapse Preview"/> </p>

Features

  • Easy to Use: The Serverless Workflow DSL is designed for universal understanding, enabling users to quickly grasp workflow concepts and create complex workflows effortlessly.
  • Event Driven: Seamlessly integrate events into workflows with support for various formats, including CloudEvents, allowing for event-driven workflow architectures.
  • Service Oriented: Integrate seamlessly with service-oriented architectures, allowing workflows to interact with various services over standard application protocols like HTTP, gRPC, OpenAPI, AsyncAPI, and more.
  • FaaS Centric: Invoke functions hosted on various platforms within workflows, promoting a function-as-a-service (FaaS) paradigm and enabling microservices architectures.
  • Timely: Define timeouts for workflows and tasks to manage execution duration effectively.
  • Fault Tolerant: Easily define error handling strategies to manage and recover from errors that may occur during workflow execution, ensuring robustness and reliability.
  • Schedulable: Schedule workflows using CRON expressions or trigger them based on events, providing control over workflow execution timing.
  • Interoperable: Integrates seamlessly with different services and resources.
  • Robust: Offers features such as conditional branching, event handling, and looping constructs.
  • Scalable: Promotes code reusability, maintainability, and scalability across different environments.
  • Cross-Platform: Runs on various operating systems, providing flexibility and ease of integration.

Architecture

Synapse is composed of several specialized applications, allowing for atomic scalability, resilience, and ease of maintenance:

  • API Server: Serves an HTTP API to manage Synapse resources, and optionally serves the Dashboard, which is Synapse's Graphical User Interface.
  • Operator: Controls workflows and workflow instances, and starts workflow runners.
  • Runner: Executes a single instance of a workflow.
  • Correlator: Performs Complex Event Processing (CEP) and correlates ingested events.
  • CLI: Allows interaction with the Synapse API via the command line interface.

<p align="center"> <img src="./assets/images/architecture-c4-l2.png" alt="Synapse Architecture C4 Diagram - Container Layer"/> </p>

For more information about the Synapse architecture, please refer to the wiki. 📖

Getting Started

Prerequisites

Docker or Kubernetes, depending on the container platform you wish to use.

Installation

The simplest way to get started is by using the provided Docker Compose setup.

  1. Clone the Synapse repository:

    git clone https://github.com/serverlessworkflow/synapse.git
    
  2. Navigate to the Docker Compose directory:

    cd synapse/deployments/docker-compose
    
  3. Build the Docker images:

    docker-compose build
    
  4. Start the services using Docker Compose:

    docker-compose up
    

This will pull the necessary Docker images and start the Synapse services as defined in the docker-compose.yml file. You can then access the Synapse API and dashboard as configured.

For more information about installing Synapse, please refer to the wiki. 📖

Run using synctl Command-line Interface

First, set up the Synapse API server to use with synctl:

synctl config set-api default -server=http://localhost:8080

Then, create a new file with the definition of the workflow to create:

# greeter.yaml
document:
  dsl: '1.0.0'
  name: greeter
  namespace: default
  version: '0.1.0'
do:
  greet:
    set:
      greetings: '${ "Hello \(.user.firstName) \(.user.lastName)!" }'

Next, run the following command to create the workflow on the API:

synctl workflow create -f greeter.yaml 

Finally, run the following command to run the workflow with the specified JSON input:

synctl workflow run greeter --namespace default --version 0.1.0 --input '{\"user\":{\"firstName\":\"John\",\"lastName\":\"Doe\"}}'

The command above will provide the fully qualified name of the created workflow instance. You can utilize this name to inspect its output once the execution is finished, as demonstrated below:

synctl workflow-instance get-output greeter-uk58h3dssqp620a --namespace default --output yaml

For more information about synctl, please refer to the wiki. 📖

Community

The Synapse project has a vibrant and growing community dedicated to building a community-driven and vendor-neutral workflow runtime ecosystem. Contributions from the community are encouraged and essential to the continued growth and success of the project.

A list of community members who have contributed to Synapse can be found here. 👥

To learn how to contribute to Synapse, please refer to the contribution guidelines. 📝

For any copyright-related questions when contributing to a CNCF project like Synapse, please refer to the Ownership of Copyrights in CNCF Project Contributions document.

Code of Conduct

As contributors and maintainers of Synapse, and in the interest of fostering an open and welcoming community, we commit to respecting all individuals who contribute through activities such as reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other forms of participation.

The project is committed to making participation in Synapse a harassment-free experience for everyone, regardless of experience level, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.

For more detailed information, please see the full project Code of Conduct here. 🛡️

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Synapse.Sdk:

Package Downloads
Synapse.Core.Infrastructure

Contains essential infrastructure components for the Synapse applications, including utilities and services that support the implementation and management of core functionalities

Synapse.Api.Client.Core

Contains abstractions and interfaces used by clients of the Synapse API

Synapse.Api.Client.Http

Contains the HTTP client for the Synapse API

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0-alpha5.2 36 10/31/2024
1.0.0-alpha5.1 37 10/25/2024
1.0.0-alpha5 48 10/22/2024
1.0.0-alpha4.1 33 10/22/2024
1.0.0-alpha4 48 10/21/2024
1.0.0-alpha3.3 44 10/14/2024
1.0.0-alpha3.2 44 10/14/2024
1.0.0-alpha3.1 39 10/14/2024
1.0.0-alpha3 39 10/8/2024
1.0.0-alpha2 68 9/11/2024