Welcome to Synapse

Synapse is a lightweight execution engine designed to take data from disparate, federated sources and connect it to a process. Synapse is built to run as a local or remote process.

Synapse Concept

Search this Site

Search!

Elements

A Synapse workflow, called a Plan, is comprised of a hierarchy of Actions. An Action is essentially the definition of a local or remote process and the parameters required to initiate it. Plans are declared in YAML, as follows:

Plan definition:

Name: {string, friendly name}
UniqueName: {string, globally unique name}
Description: {string, friendly description}
DefaultHandlerType: {string, used when omitting Handler.Type declaration}
IsActive: {bool, for 'disabling' Plans}
Actions:
  {Actions}
RunAs:
  {SecurityContext}
Crypto:
  KeyFile: {RSA key}
  Elements:
  - {list of Plan elements to encrypt}
StartInfo:
  RequestNumber: {string, contextual execution data}
  RequestUser: {string, contextual execution data}

Action definition:

Action:
- Name: {string, friendly name}
  Proxy: {uri, remote Synapse node}
  ExecuteCase: {enum, status value}
  Handler:
    Type: {library}:{module}
    Config: {ParameterInfo}
  Parameters: {ParameterInfo}
  RunAs: {SecurityContext}
  ActionGroup: {Single-node subtree of child Actions}
  Actions:  {Multi-node subtree of child Actions}
  Result: {ExecuteResult}

Where, ParameterInfo is:

Name: {string, friendly name}
Type: {enum: xml | yaml | json}
Uri: {http:// | file://}
Values:
  {Block of directly declared xml|yaml|json as specified by Type}
Dynamic:
- Name: {friendly name}
  Path: {XPath or root:path0:path1}
  Options:
  - Key: {key}
    Value: {display value}
ForEach:
- Path: {XPath or root:path0:path1}
  Values:
  - {string list}

And SecurityContext is:

Domain: {AD Domain}
Name: {string, friendly name}
Password: {ecrypted string}
Provider: {Active Directory | AWS | Azure}
Config: {ParameterInfo}

Essentially, Synapse takes data from various federated sources, provides the data to an action, and executes the action under a given security context.

A overview description of Synapse Plan YAML is here.

Components

Component Description
Synapse.Core Contains the workflow execution engine and is responsible for initiating calls to sub-processes.
Synapse.cli A command-line wrapper on Synapse.Core for local process execution. Use this to test Synapse Plans locally.
Synapse.Node A server daemon designed to act as remote Synapse.Core agent. Synapse.Node can execute local or remote processes.
Synapse.Node.cli Provides a command-line interface to the Synapse.Node REST interface. Use this to install/uninstall/start/drainstop/stop the server daemon, or to run Synapse.Node as a command-line-hosted process with console logging.
Synapse.Controller An API for starting/cancelling Synapse Plan execution and recording status. Manages execution log-capture and keeps detailed audit logs.
Synapse.Controller.cli Provides a command-line interface to the Synapse.Controller REST interface. Use this to install/uninstall/start/stop the server daemon, or to run Synapse.Controller as a command-line-hosted process with console logging.
Synapse.Enterprise An API for managing Synapse Plans under an RBAC.

Detailed architectural descriptions and implementations patterns can be found here.