Skip to content
This repository was archived by the owner on Jul 2, 2023. It is now read-only.
/ Metamorphic Public archive

A pipeline application for streaming information through multiple stages

License

Notifications You must be signed in to change notification settings

metamorpher/Metamorphic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

09a4ceb · Nov 17, 2016
Jul 2, 2015
Nov 1, 2016
Jun 11, 2015
Jun 15, 2016
Sep 20, 2016
Jun 8, 2015
Aug 24, 2016
Jun 13, 2015
Aug 2, 2016
Aug 2, 2016
Jun 7, 2016
Jun 7, 2016
Jun 11, 2015
Jun 7, 2016
Aug 2, 2016
Aug 2, 2016

Repository files navigation

Metamorphic

Metamorphic is a .NET workflow system based on the StackStorm concept.

Metamorphic listens for incoming messages, evaluates the message against one or more rules and then executes an action if the message satisfies .

Parts

  • Actions
  • Rules
  • Signals

Actions

Rules

Rules define a relation between signals and actions. Each rule describes which signal types will be evaluated and what action will be executed when the rule is satisfied.

Rules are described in YAML rule files. The format is largely the same as the format used by StackStorm. An example is given below:

---
    name: "rule_name"
    description: "Rule description."
    enabled: true

    signal:
        id: "signal_type_ref"
        parameters:
            foo: "bar"
            baz: "otherBar"

    condition:
        - name: "signal_parameter_name1"
        type: "matchregex"
        pattern : "^value$"
        - name: "signal_parameter_name2"
        type: "iequals"
        pattern : "watchevent"

    action:
        id: "action_ref"
        parameters:
            foo: "bar"
            baz: "{{signal.signal_parameter_1}}"

Rules are scanned and processed either from

  • A NuGet package placed in a NuGet feed known by Metamorphic
  • An .mmrule file in a directory known by Metamorphic

This ensures that rules can be versioned in some form (rule files can be committed to a version control system and packages or file delivered according to standard software release and deploy methods)

Signals

Installing

  • Need a RabbitMQ instance somewhere. Add a user that is allowed to create a queue. Default queue name will be Metamorphic.Signals. An additional error queue may be created called Queue EasyNetQ_Default_Error_Queue.

Metamorphic.Signal.Http

Metamorphic.Storage

  • Windows service
  • Configuration:
    • NuGet feeds that contain the actions and rules packages
    • Directory that can contain the rule files (should be local machine for the moment)

Metamorphic.Server

  • Windows service
  • Configuration:
    • NuGet feeds that contain the action packages
    • Address of the RabbitMQ instance

How to build

To build the project invoke MsBuild on the entrypoint.msbuild script in the repository root directory. This will build the visual studio solution, run the unit tests and create the NuGet packages and ZIP archives. Final artifacts will be placed in the build\deploy directory.

The build script assumes that:

  • The connection to the repository is available so that the version number can be obtained via GitVersion tool.
  • The NuGet command line executable is available from the PATH so that the build can restore all the NuGet packages.
  • The GIT executable is availabe from the PATH so that the build can gather information about the current branch and commit ID.

How to contribute

There are many ways to contribute to the project:

  • By opening an issue and describing the issue that occurred or the feature that would make things better.
  • By providing a pull-request for a new feature or a bug.

Any suggestions or improvements you may have are more than welcome.

About

A pipeline application for streaming information through multiple stages

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages