Rocket boost your applications! Don’t fight the change, embrace it and rapidly move as business requirements change.
Enjector Workflow gives you the ability to deliver use cases that you know about and those you don’t know about. Use cases that may change tomorrow.
See how easy it is to use Enjector Workflow

Enjector Workflow Lite .NET Edition
Enjector Workflow is a light weight .NET component that is embedded inside your WinForm, ASP.NET or console applications. It has an embedded web based workflow modeler where you design, debug and then run your processes even when the product is shipped.

Enjector Workflow

This version of the Enjector Workflow Engine is designed specifically for Microsoft .NET Framework. Enjector Workflow lets you build domain/application specific processes using any CLR compliant language, such as C# or VB.NET.
  • 100% managed code. Runs natively on .NET (Windows) and Mono (Mac OSX and Linux).
  • Very small memory and disk footprint (a single 1 MB component). No other dependencies required.
  • No complicated setups during deployment since it is a single .NET assembly.
  • Built in web based AJAX GUI process modeler. Your code optionally turns this on to allow processes to be changed or debugged once your application has shipped. Once the process has been saved, the workflow engine will execut it in the background.
  • Processes and work items can be stored in memory, files or within your database. You have full control over the storage of the data used by the Enjector Workflow Engine.
Example Code (C# .NET - More language samples available in download)
using System;
using System.Collections.Generic;
using System.Xml;
using Enjector.Framework;

namespace com.yahoo_mod_weather
{
    public class Module : IModule
    {
        private IModuleContext context;

        public void Init(IModuleContext context)
        {
            this.context = context;
        }

        public void Start()
        {
        }

        public void Stop()
        {
        }

        public class WeatherReport
        {
            public string Day { get; set; }
            public string Text { get; set; }
            public string Low { get; set; }
            public string High { get; set; }
        }

        public class WeatherLocation
        {
            public string Code { get; set; }
            public string Name { get; set; }
        }

        // Example: UKXX0085
        [ModuleVerb("weather fetch")]
        public WeatherReport weather_fetch(string locationCode)
        {
            // Create a new XmlDocument  
            var doc = new XmlDocument();

            // Load data  
            doc.Load("http://xml.weather.yahoo.com/forecastrss?p=94704");

            // Set up namespace manager for XPath  
            var ns = new XmlNamespaceManager(doc.NameTable);
            ns.AddNamespace("yweather", "http://xml.weather.yahoo.com/ns/rss/1.0");

            // Get forecast with XPath  
            var nodes = doc.SelectNodes("/rss/channel/item/yweather:forecast", ns);
            if (nodes.Count == 0)
            {
                throw new Exception("No weather data available");
            }

            var node = nodes[0];
            var report = new WeatherReport()
            {
                Day = node.Attributes["day"].InnerText,
                Text = node.Attributes["text"].InnerText,
                Low = node.Attributes["low"].InnerText,
                High = node.Attributes["high"].InnerText
            };

            return report;
        }

        [ModuleVerb("weather location search")]
        public List weather_location_search(string locationName)
        {
            // Fetch all weather locations
            // http://xoap.weather.com/search/search?where=Bangalore

            // Create a new XmlDocument  
            var doc = new XmlDocument();

            // Load data  
            doc.Load("http://xoap.weather.com/search/search?where=" + locationName);

            // Set up namespace manager for XPath  
            var ns = new XmlNamespaceManager(doc.NameTable);
            ns.AddNamespace("yweather", "http://xml.weather.yahoo.com/ns/rss/1.0");

            // Get forecast with XPath  
            XmlNodeList nodes = doc.SelectNodes("/search/loc", ns);
            if (nodes.Count == 0)
            {
                throw new Exception("No weather data available");
            }

            var codes = new List();

            foreach (XmlNode node in nodes)
            {
                var code = new WeatherLocation
                {
                    Code = node.Attributes["id"].InnerText,
                    Name = node.InnerText
                };

                codes.Add(code);
            }

            return codes;
        }
    }
}