Click here to Skip to main content
14,539,164 members

Wexflow - Open Source Workflow Engine

Rate this:
4.93 (208 votes)
Please Sign up or sign in to vote.
4.93 (208 votes)
20 May 2020MIT
An easy and fast way to build automation and workflows on Windows, Linux, macOS or the cloud.
Wexflow is a free, open-source, high-performance, extensible, modular and cross-platform workflow engine and automation platform. The goal of Wexflow is to automate recurring tasks. With the help of Wexflow, building automation and workflow processes become easy. This article covers: How To Use Wexflow, How To Create A Custom Task, and How To Debug Wexflow?

Table of contents

  1. Introduction
  2. Why Wexflow?
  3. Examples
  4. Benefits
  5. How To Install Wexflow?
  6. How To Uninstall Wexflow?
  7. How To Use Wexflow?
    1. General
    2. Wexflow Manager
    3. Backend
    4. Android Manager
    5. iOS Manager
    6. Command Line Client
  8. How To Create A Custom Task?
  9. How To Debug Wexflow?
  10. Libraries Used By Wexflow
  11. History

What's New?

Check out the new version 5.7. This version includes all must approve feature, multiple approvers for the same record, a reminder feature in approval workfows for notifying the approver and the user assigned to the record N days before due date, records hot folder, an automated import flow for importing and approving records, files Drag & Drop to records tab, bug fixes, performance enhancements, and under the hood updates.

Introduction

Wexflow is a free, open-source, high-performance, extensible, modular and cross-platform workflow engine and automation platform. The goal of Wexflow is to automate recurring tasks. With the help of Wexflow, building automation and workflow processes become easy. Wexflow also helps in making the long-running processes straightforward. The communication between systems or applications becomes easy through this powerful workflow engine and automation platform.

Wexflow comes with a cross-platform workflow server and a powerful backend. The workflow server exposes a RESTful API that allows Wexflow to be embeddable anywhere.

Wexflow makes use of .NET Core, a cross-platform version of .NET for building websites, services, and console apps. Thus, Wexflow provides a cross-platform workflow server and a powerful backend for managing, designing and tracking workflows with ease and flexibility. Wexflow runs on Windows, Linux and macOS.

Wexflow also makes use of Quartz.NET open-source job scheduling system that is used in large scale enterprise systems. Thus, Wexflow offers flexibility in planning jobs such as cron jobs.

Since workflows are typically long running processes, they will need to be persisted to storage between tasks. There are several persistence providers available. Wexflow provides LiteDB, MongoDB, RavenDB, PostgreSQL, SQL Server, MySQL, SQLite, Firebird, Oracle and MariaDB persistence providers which enhance and improve the performance of this automation platform. The user can choose the persistence provider of his choice at the installation.

Wexflow comes with a powerful backend, so you can search and filter among all your workflows, have real-time stats on your workflows, manage your workflows with ease, design your workflows with ease, and track your workflows with ease:

Image 1

Just to give you an idea of what Wexflow does, this is a screenshot from the designer. Using the designer, we get a nice visual overview of the dependency graph of the workflow. Each node represents a task which has to be run:

  Image 2

The graph view gives you a nice overview of the dependency graph of the workflow too:

Image 3

The history allows you to track your workflow jobs in the system and have detailed information about each job:

Image 4

Image 5

You can deploy Wexflow using Docker containers on Windows, Linux and macOS distributions. Here is the documentation for creating and building Docker images.

Moreover, you can create custom integration with any other SaaS product in the cloud through Wexflow API.

Why Wexflow?

Discover more features.

Examples

  • Orchestration engine
  • Form submission approval process
  • Batch recording live video feeds
  • Batch transcoding audio and video files
  • Batch uploading videos and their metadata to YouTube SFTP dropbox
  • Automatically upload videos to YouTube
  • Automatically upload videos to Vimeo
  • Automatically upload images and videos to Instagram
  • Automatically send tweets
  • Automatically send posts and links to Reddit
  • Automatically send messages to Slack channels
  • Automatically send SMS messages
  • Batch encrypting and decrypting large files
  • Batch converting, resizing and cropping images
  • Creating and sending reports and invoices by email
  • Connecting systems and applications via watch folders
  • Batch downloading files over FTP/FTPS/SFTP/HTTP/HTTPS/Torrent
  • Batch uploading files over FTP/FTPS/SFTP
  • Database administration and maintenance
  • Synchronizing the content of local or remote directories
  • Optimizing PDF files

Check out the available built-in tasks for more examples.

Benefits

  • Gain time by automating repetitive tasks
  • Save money by avoiding re-work and corrections
  • Reduce human error
  • Become more efficient and effective in completing your tasks
  • Become more productive in what you do
  • Become consistent in what you do

How To Install Wexflow?

Wexflow is easy to install and needs effortless configuration. It can be installed and configured in few minutes.

This section shows how to install the .NET version of Wexflow on Windows, how to install the .NET Core version of Wexflow on Windows, Linux or macOS, how to install the Android app of Wexflow and how to install the iOS app of Wexflow.

Windows (.NET)

Wexflow can be installed on Windows 7, Windows Server 2008 or higher. Wexflow supports .NET Framework 4.6.1 or higher.

The video below shows how to install Wexflow on Windows and how to get started.

Image 6

First of all, right click on the installer, click on properties, check unblock then click OK.

To install Wexflow, proceed as follows:

1. Install Microsoft .NET Framework 4.6.1 or higher.

2. Install Wexflow:

Image 7

3. Select a destination location:

Image 8

4. Choose the components to install:

Image 9

It is highly recommended to install workflow samples. Especially if new built-in tasks are released.

5. You can choose to create a desktop shortcut:

Image 10

5. Click on "Install" to perform the installation:

Image 11

6. The installer will install Wexflow on the system:

Image 12

7. Finally, click on finish to finish the installation:

Image 13

The following menus are added in the start menu:

Image 14

  • The "Backend" menu opens the backend.
  • The "Configuration" menu opens the configuration folder of Wexflow.
  • The "Documentation" menu opens the documentation folder of Wexflow. 
  • The "Logs" menu opens the log file of the day.
  • The "Manager" menu opens Wexflow Manager GUI.
  • The "Install MongoDB samples" installs MongoDB samples.
  • The "Install RavenDB samples" installs RavenDB samples.
  • The "Install PostgreSQL samples" installs PostgreSQL samples.
  • The "Install SQL Server samples" installs SQL Server samples.
  • The "Install MySQL samples" installs MySQL samples.
  • The "Install SQLite samples" installs SQLite samples.
  • The "Install Firebird samples" installs Firebird samples.
  • The "Install Oracle samples" installs Oracle samples.
  • The "Install MariaDB samples" installs MariaDB samples.
  • The "Swagger" menu opens Swagger UI.
  • The "Uninstall" menu uninstalls Wexflow.

After Wexflow is installed a Windows Service named Wexflow is installed and starts automatically. To start Wexflow Manager, this Windows Service must be running. However, If you want to stop it you can do it from Windows Services console:

Image 15

When you open Wexflow Manager, you will get this window:

Image 16

Here are the credentials to sign in:

  • Username: admin
  • Password: wexflow2018

You can change the password from the backend.

After you sign in, you will get this window:

Image 17

With Wexflow Manager, you can manage your workflows with ease.

Wexflow makes use of most popular databases such as LiteDBMongoDBRavenDBPostgreSQLSQL ServerMySQLSQLiteFirebird, Oracle and MariaDB in its server and backend. The user can choose between the database of his choice at the installation. The default database used is LiteDB since it needs zero configuration. However, if you want another database system just read the documentation of the database of your choice in order to configure it and make Wexflow use it.

Windows (.NET Core)

Wexflow supports .NET Core 3.1 LTS or higher.

  1. Download and install .NET Core runtime.
  2. Download and extract the .NET Core package somewhere on your system.
  3. Double-click on "install.bat" to install the configuration files of Wexflow.
  4. That's it. Double-click on "run.bat" to start Wexflow workflow server:

Image 18

The port 8000 must be free. If you are already using the .NET version of Wexflow, you must stop Wexflow Windows service or change the port of the .NET Core version.

To change the port of the .NET Core version, edit the file Wexflow.Server\appsettings.json and change the value of the setting "WexflowServicePort". Then, change the port in the backend too by editing the configuration file Backend\js\settings.js.

Finally, you can open the backend by opening the web page Backend\index.html on a browser.

To open the backend, go to "Backend" folder from the zip you downloaded and double-click on the file "index.html". You can of course host the backend on a web server if you want to.

Image 19

You can sign in with these credentials if you installed Wexflow for the first time:

Username: admin

Password: wexflow2018

You can then change the password from the backend.

Wexflow makes use of most popular databases such as LiteDBMongoDBRavenDBPostgreSQLSQL ServerMySQLSQLiteFirebird, Oracle and MariaDB in its server and backend. The user can choose between the database of his choice at the installation. The default database used is LiteDB since it needs zero configuration. However, if you want another database system just read the documentation of the database of your choice in order to configure it and make Wexflow use it.

Linux

Wexflow supports .NET Core 3.1 LTS or higher.

  1. Download and install .NET Core runtime.
  2. Download and extract the .NET Core package in /opt/.
  3. Open a terminal and type the following commands:
sudo chown -R $USER:$USER /opt/wexflow
cd /opt/wexflow/Wexflow.Server
dotnet Wexflow.Server.dll

That's it, Wexflow is installed and ready for work:

Image 20

Finally, you can open the backend by opening the web page /opt/wexflow/Backend/index.html on a browser. You can of course host the backend on a web server if you want to.

Image 21

You can sign in with these credentials if you installed Wexflow for the first time:

Username: admin

Password: wexflow2018

You can then change the password from the backend.

If you want to use the image processing tasks, you must install these libraries:

sudo apt install libc6-dev libgdiplus

Wexflow makes use of most popular databases such as LiteDBMongoDBRavenDBPostgreSQLSQL ServerMySQLSQLiteFirebird, Oracle and MariaDB in its server and backend. The user can choose between the database of his choice at the installation. The default database used is LiteDB since it needs zero configuration. However, if you want another database system just read the documentation of the database of your choice in order to configure it and make Wexflow use it.

macOS

Wexflow supports .NET Core 3.1 LTS or higher.

Wexflow can be installed on macOS 10.13 (High Sierra) or above.

  1. Download and install .NET Core runtime.
  2. Download and extract the .NET Core package in /Applications/.
  3. Open a terminal and type the following commands:
cd /Applications/wexflow/Wexflow.Server
dotnet Wexflow.Server.dll

That's it, Wexflow is installed and ready for work:

Image 22

Finally, you can open the backend by opening the web page /Applications/wexflow/Backend/index.html on a browser. You can of course host the backend on a web server if you want to.

Image 23

You can sign in with these credentials if you installed Wexflow for the first time:

Username: admin

Password: wexflow2018

You can then change the password from the backend.

Wexflow makes use of most popular databases such as LiteDBMongoDBRavenDBPostgreSQLSQL ServerMySQLSQLiteFirebird, Oracle and MariaDB in its server and backend. The user can choose between the database of his choice at the installation. The default database used is LiteDB since it needs zero configuration. However, if you want another database system just read the documentation of the database of your choice in order to configure it and make Wexflow use it.

Docker

Image 24

You can deploy Wexflow using Docker containers on Windows, Linux and macOS distributions.

To deploy Wexflow using Docker containers on Linux, follow the following instructions on Docker Hub.

The video below shows how to deploy Wexflow using Docker containers on Linux and how to get started.

Image 25

If you want to build your own Docker images, below the two possible configurations for creating and building Docker images.

Dockerfile

You can create a Docker image of Wexflow Server without the backend through the instructions below. In this case, the backend should be hosted on a web server.

  1. Create a folder named wexflow-5.7
  2. Put the following Dockerfile in the folder wexflow-5.7
  3. Download the Linux source zip file of the version 5.7
  4. Extract it to a folder named wexflow-5.7-linux-netcore
  5. Put the extracted folder wexflow-5.7-linux-netcore in the folder wexflow-5.7
  6. Move to the folder wexflow-5.7 (The content of this folder is Dockerfile and the folder wexflow-5.7-linux-netcore)
  7. Run:
    docker build -t wexflow .
    docker run -i -t -p 8000:8000 wexflow:latest
  8. Navigate in a web browser to http://localhost:8000 to access Swagger UI

The default credentials are:

Username: admin
Password: wexflow2018

Once logged in, you can change the password from the backend.

Below a screenshot from Ubuntu 18.04 (docker build):

Image 26

Below a screenshot from Ubuntu 18.04 (docker run):

Image 27

Docker Compose

You can start Wexflow Server and its backend through Docker Compose by following the instructions below.

  1. Create a folder named wexflow-5.7
  2. Put the following docker-compose.yml in the folder wexflow-5.7
  3. Download the Linux source zip file of the version 5.7
  4. Extract it to a folder named wexflow-5.7-linux-netcore
  5. Put the extracted folder wexflow-5.7-linux-netcore in the folder wexflow-5.7
  6. Move to the folder wexflow-5.7 (The content of this folder is docker-compose.yml and the folder wexflow-5.7-linux-netcore)
  7. Run:
    docker-compose up
  8. Navigate in a web browser to http://localhost:8011 to access the backend
  9. Navigate in a web browser to http://localhost:8000 to access the Swagger UI

The default credentials are:

Username: admin
Password: wexflow2018

Once logged in, you can change the password from the backend.

Below a screenshot from Ubuntu 18.04 (docker-compose up):

Image 28

Android

After Wexflow server is installed, proceed as follows to install Wexflow Manager on an Android device:

1. Download wexflow.apk

2. Install wexflow.apk

3. Launch Wexflow application and open the application settings through the settings menu:

Image 29

 

5. Click on "Wexflow Web Service URI":

Image 30

6. Configure Wexflow Web Service Uri:

Image 31

Ensure that Wexflow server is running and that the port 8000 is open in the firewall.

That's it, Wexflow application is ready for work. You can sign in with these credentials if you installed Wexflow for the first time:

Username: admin

Password: wexflow2018

You can change the password from the backend.

Image 32

After you sign in you will get the list of workflows that you can manage easily from your Android device:

Image 33

iOS

After Wexflow server is installed, proceed as follows to install Wexflow Manager on an iOS device:

1. Download wexflow.ipa from releases page.

2. Download Cydia Impactor for Windows, Linux or macOS.

3. Install Cydia Impactor on your Windows, Linux or macOS machine.

4. Plug your iOS device in your Windows, Linux or macOS machine.

5. Disable Apple two factor authentication if it is enabled from appleid.apple.com.

6. Create an app-specific access code from appleid.apple.com.

7. Open Cydia Impactor. You'll see your iOS device in the second drop down.

8. Drag and drop wexflow.ipa in Cydia Impactor.

9. Enter your apple ID and password.

10. Cydia Impactor will automatically install wexflow.ipa on your iOS device:

Image 34

11. Enable "Untrusted developer" for Wexflow app:
iOS 9+>Settings>General>Profiles
iOS 6-8>Settings>General>Device Management>Wexflow [Confirm]

12. Launch Wexflow application and open the application settings through the settings menu:

Image 35

13. Configure Wexflow server URL:

Image 36

Ensure that Wexflow server is running and that the port 8000 is open in the firewall. If it's not working try to add .local for example http://aelassas-pc.local:8000/wexflow or use the IP address.

That's it, Wexflow application is ready for work. You can sign in with these credentials if you installed Wexflow for the first time:

Username: admin

Password: wexflow2018

You can change the password from the backend.

Image 37

After you sign in you will get the list of workflows that you can manage easily from your iOS device:

Image 38

How To Uninstall Wexflow?

Windows

To uninstall Wexflow, simply click on "Uninstall" menu from "Windows Start menu > Wexflow".

Or go to "Configuration Panel > Add/remove programs" then select "Wexflow" and click on uninstall:

Image 39

After Wexflow is uninstalled, a window will show up informing that the un-installation succeeded:

Image 40

After Wexflow is uninstalled, the folders C:\Wexflow\ and C:\WexflowTesting\ are not deleted to prevent user defined workflows and testing scenarios from being deleted. However, If you do not need them you can delete them manually.

The log file C:\Program Files\Wexflow\Wexflow.log is also not deleted to keep track of the last operations done by Wexflow. However, If you do not need the logs you can delete the log files.

Linux

To uninstall Wexflow from a Linux system, proceed as follows:

sudo rm -rf /opt/wexflow

macOS

To uninstall Wexflow from a macOS system, simply delete wexflow from /Applications/ folder.

Android

To uninstall Wexflow from an Android device, simply open Settings>Applications>Wexflow then uninstall it.

iOS

Tap and hold the app icon until it starts to wiggle and an x appears at the upper left corner of the icon. Then, tap the x, then tap Delete.

How To Use Wexflow?

General

After installing Wexflow, the folders C:\Wexflow\ and C:\WexflowTesting\ are created.

The folder C:\Wexflow\  is the main configuration folder of Wexflow and contains the following elements:

  • Wexflow.xml which is the main configuration file of Wexflow server. Its path can be configured from C:\Program Files\Wexflow\Wexflow.Server.exe.config for the .NET version and from Wexflow.Server\appsettings.json for the .NET Core version.
  • Workflow.xsd which is the XML Schema Definition of a workflow.
  • Workflows/ which is a hot fodler for workflows.
  • Records/ which is the repository of records' files.
  • Records/_HotFolder which is records' hot folder for importing records from files.
  • Temp/ which is the temporary folder of Wexflow.
  • Database/ which contains the database of Wexflow workflow engine.
  • Tasks/ which is an optional folder that can contain the dlls of custom tasks.
  • GlobalVariables.xml which contains the global variables for workflows.
  • TasksNames.json which contains the names of the tasks. This configuration file is used by the designer.
  • TasksSettings.json which contains the settings of the tasks. This configuration file is used by the designer.

The folder C:\WexflowTesting\ contains data of testing scenarios.

The logs are written in C:\Program Files\Wexflow\Wexflow.log. There is one log file per day. The old log files are saved in this format Wexflow.logyyyyMMdd.

In the .NET Core version:

  • Windows: The folders C:\Wexflow-netcore\ and C:\WexflowTesting\ are created. The path of the main configuration file C:\Wexflow-netcore\Wexflow.xml can be configured from Wexflow.Server\appsettings.json. The logs are written in Wexflow.Server\Wexflow.log.
  • Linux: The folders /opt/wexflow/Wexflow/ and /opt/wexflow/WexflowTesting/ are created. The path of the main configuration file /opt/wexflow/Wexflow/Wexflow.xml can be configured from /opt/wexflow/Wexflow.Server/appsettings.json. The logs are written in /opt/wexflow/Wexflow.Server/Wexflow.log.
  • macOS: The folders /Applications/wexflow/Wexflow/ and /Applications/wexflow/WexflowTesting/ are created. The path of the main configuration file /Applications/wexflow/Wexflow/Wexflow.xml can be configured from /Applications/wexflow/Wexflow.Server/appsettings.json. The logs are written in /Applications/wexflow/Wexflow.Server/Wexflow.log.

Workflows can be designed through the designer or through XML editing or through JSON editing by editing the configuration of the workflow. However, it is highly recommended to understand Wexflow workflow syntax (XML/JSON) in order to become familiar with this workflow engine.

Below the configuration file of a workflow:

<!--
    This is the configuration file of a workflow. 
    A workflow is composed of:
      - An id which is an integer that must be unique.
      - A name which is a string that must be unique.
      - A description which is a string.
      - A Settings section which is composed of the following elements:
        - A launchType which is one of the following options:
          - startup: The workflow is launched when Wexflow Engine starts.
          - trigger: The workflow is launched manually from Wexflow Manager.
          - periodic: The workflow is launched periodically.
          - cron: The workflow is launched depending on a cron expression.
        - A period which is necessary for the periodic launchType. It is 
          a timeSpan in this format dd.hh:mm:ss. For example the period
          00.00:02:00 will launch the workflow every 2 minutes.
        - A cron expression which is necessary for the cron launchType.
          For example '0 0/2 * * * ?' will launch the workflow every 2 minutes.
        - The enabled option which allows to enable or disable a workflow.
          The possible values are true or false.
        - The approval option which marks the current workflow as an approval workflow.
          The possible values are true or false. An approval workflow must contain
          at least one Approval task or more.
        - The enableParallelJobs option Shows whether workflow jobs are executed in parallel. 
          Otherwise jobs are queued. Defaults to true. 
      - A LocalVariables section which contains local variables.
      - A Tasks section which contains the tasks that will be executed by
        the workflow one after the other.
        - A Task is composed of:
          - An id which is an integer that must be unique.
          - A name which is one of the options described in the tasks documentation.
          - A description which is a string.
          - The enabled option which allows to enable or disable a task. The possible 
            values are true or false.
          - A collection of settings.
      - An ExecutionGraph section which contains the execution graph of the workflow.
-->
<Workflow xmlns="urn:wexflow-schema" id="$int" name="$string" description="$string">
  <Settings>
    <Setting name="launchType" value="startup|trigger|periodic|cron" />
    <Setting name="period" value="dd.hh:mm:ss" />
    <Setting name="cronExpression" value="$string" />
    <Setting name="enabled" value="true|false" />
    <Setting name="approval" value="true|false" />
    <Setting name="enableParallelJobs" value="true|false" />
  </Settings>
  <LocalVariables>
    <Variable name="$string" value="$string" />
    <Variable name="$string" value="$string" />
    <!-- You can add as many variables as you want. -->
  </LocalVariables>
  <Tasks>
    <Task id="$int" name="$string" description="$string" enabled="true|false">
      <Setting name="$string" value="$string" />
      <Setting name="$string" value="$string" />
      <!-- You can add as many settings as you want. -->
    </Task>
    <Task id="$int" name="$string" description="$string" enabled="true|false">
      <Setting name="$string" value="$string" />
      <Setting name="$string" value="$string" />
    </Task>
    <!-- You can add as many tasks as you want. -->
  </Tasks>
  <!-- This section is optional and described in the samples section. -->
  <ExecutionGraph />
</Workflow>

For cron workflows, read the following documentation for more details.

Local variables are explained here.

Global variables are explained here.

The name option of a Task must be one of the followings.

The execution graph is explained in the samples section.

To learn how to make your own workflows, you can check out the workflow samples availabe in the designer page, in the samples section, and read the tasks documentation.

If a new workflow is created or if an existing workflow is deleted or modified, you don't have to restart Wexflow Windows Service so that these modifications take effect. Wexflow engine will automatically detect the changes and reload, add or delete the workflow.

To disable a workflow, you can set the enabled settings option of the workflow to false.

How tasks communicate between each other?

State is transferred between tasks through selectFiles and through selectEntities settings.

This works the following way:

  1. A task in a workflow does its job and produces files which it stores in a collection.
  2. Another task (must be in the same workflow) can afterwards reference those files with the selectFiles XML property, specifying the ID of the task that produced the required files. It then can use these files to do its own job.

More visually (from the examples):

<Workflow xmlns="urn:wexflow-schema" id="1" name="Workflow_Invoices" description="Workflow_Invoices">
    <Settings>
        <Setting name="launchType" value="trigger" />
        <Setting name="enabled" value="true" />
    </Settings>
    <Tasks>
        <Task id="1" name="FilesLoader" description="Loading invoices" enabled="true">
            <Setting name="folder" value="C:\WexflowTesting\Invoices\" />
        </Task>
        <!-- some more tasks here -->
        <Task id="6" name="FilesMover" description="Moving invoices" enabled="true">
            <Setting name="selectFiles" value="1" />
            <Setting name="destFolder" value="C:\WexflowTesting\Invoices_sent\" />
        </Task>
    </Tasks>
</Workflow>

selectEntities setting works the same way as selectFiles. The only difference is that selectEntities is designed to be used for tasks that manipulate custom objects from a database or from web services for example. To go further, read this documentation regarding entities.

Wexflow Manager

When you open Wexflow Manager for the first time, you will get this window:

Image 41

Here are the credentials to sign in:

  • Username: admin
  • Password: wexflow2018

After you sign in, you will get this window:

Image 42

You can then change the password from the backend.

With Wexflow Manager, you can manage your workflows with ease. Wexflow Manager is a simple application that allows the user to do the following things:

  • See all the workflows loaded by Wexflow Engine.
  • See the status of the selected workflow (running, suspended, waiting for approval or disabled).
  • Start a workflow.
  • Stop a workflow.
  • Suspend a workflow.
  • Resume a workflow.
  • Approve an approval workflow.
  • Disapprove an approval workflow.
  • The "Backend" button opens the backend from which you can manage workflows, design workflows, track workfows and have real-time statistics on workflows.
  • The "Logs" button allows to view the logs of the day.
  • The "Refresh" button allows to reload the list of workflows.
  • The "Restart server" button allows to restart Wexflow Server.
  • The "Search" button allows to search for workflows.
  • The "Help" menu opens the help page.
  • The "About" menu shows the version of Wexflow and checks if a new version is available.

To see what's going on in Wexflow, open the log file C:\Program Files\Wexflow\Wexflow.log in a text editor like Notepad++. Notepad++ will update the log file as it fills up.

Backend

The backend is a website that can be hosted on IIS, Apache, Nginx or any other web server. The backend can also run locally.

The backend gives real-time statistics on workflows. It will let you manage, design and track your workflows with ease and flexibility. You can use the backend to access, configure, manage, administer, and develop your workflows with ease.

Login

When you open the backend for the first time, you will arrive on the login page:

Image 43

Here are the credentials to sign in:

  • Username: admin
  • Password: wexflow2018

After you sign in, you can change the password from the "Users" page.

Password reset

If a user forgot his password, he can click on "Forgot password?" link to reset his password:

Image 44

When the user clicks on "Submit" button, an email is sent to him with a temporary password that he can change after he signs in.

To allow the backend sending emails, the SMPT configuration must be set in the configuration file: C:\Program Files\Wexflow\Wexflow.Server.exe.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <appSettings>
    <add key="WexflowSettingsFile" value="C:\Wexflow\Wexflow.xml"/>
    <add key="DateTimeFormat" value="dd-MM-yyyy HH:mm:ss"/>
    <add key="SuperAdminUsername" value="admin"/>
    <add key="EnableWorkflowsHotFolder" value="true"/>
    <add key="EnableRecordsHotFolder" value="true"/>
    <add key="EnableEmailNotifications" value="false"/>
    <add key="Smtp.Host" value="smtp.gmail.com"/>
    <add key="Smtp.Port" value="587"/>
    <add key="Smtp.EnableSsl" value="true"/>
    <add key="Smtp.User" value="user"/>
    <add key="Smtp.Password" value="password"/>
    <add key="Smtp.From" value="user"/>
  </appSettings>
  ...
 </configuration>

The DateTimeFormat setting option is explained here.

In the .NET Core version, the configuration file to edit in a Windows system is Wexflow.Server\appsettings.json:

{
  "WexflowSettingsFile": "C:\\Wexflow-netcore\\Wexflow.xml",
  "WexflowServicePort":  8000,
  "DateTimeFormat": "dd-MM-yyyy HH:mm:ss",
  "SuperAdminUsername": "admin",
  "EnableWorkflowsHotFolder": true,
  "EnableRecordsHotFolder": true,
  "EnableEmailNotifications": false, 
  "Smtp.Host": "smtp.gmail.com",
  "Smtp.Port": 587,
  "Smtp.EnableSsl": true,
  "Smtp.User": "user",
  "Smtp.Password": "password",
  "Smtp.From": "user",
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Verbose",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

In a Linux system, the configuration file to edit is /opt/wexflow/Wexflow.Server/appsettings.json:

{
  "WexflowSettingsFile": "/opt/wexflow/Wexflow/Wexflow.xml",
  "WexflowServicePort":  8000,
  "DateTimeFormat": "dd-MM-yyyy HH:mm:ss",
  "SuperAdminUsername": "admin",
  "EnableWorkflowsHotFolder": true,
  "EnableRecordsHotFolder": true,
  "EnableEmailNotifications": false,   
  "Smtp.Host": "smtp.gmail.com",
  "Smtp.Port": 587,
  "Smtp.EnableSsl": true,
  "Smtp.User": "user",
  "Smtp.Password": "password",
  "Smtp.From": "user",
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Verbose",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

In a macOS system, the configuration file to edit is /Applications/wexflow/Wexflow.Server/appsettings.json:

{
  "WexflowSettingsFile": "/Applications/wexflow/Wexflow/Wexflow.xml",
  "WexflowServicePort":  8000,
  "DateTimeFormat": "dd-MM-yyyy HH:mm:ss",
  "SuperAdminUsername": "admin",
  "EnableWorkflowsHotFolder": true,
  "EnableRecordsHotFolder": true,
  "EnableEmailNotifications": false,    
  "Smtp.Host": "smtp.gmail.com",
  "Smtp.Port": 587,
  "Smtp.EnableSsl": true,
  "Smtp.User": "user",
  "Smtp.Password": "password",
  "Smtp.From": "user",
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Verbose",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

Dashboard

After you sign in, you will arrive on the dashboard page:

Image 45

Wexflow gives you a beautiful dashboard to view real-time statistics on your workflows. Indeed, the "Dashboard" page gives you real-time statistics on workflows and will let you track your workflow server with ease and detail. From the dashboard, you can also filter the workflow entries by a keyword or by date. You can also order the workflow entries by date, by name, etc.

Records

Wexflow allows to create approval workflows on generic business objects such as documents, invoices, purchase orders, vacation requests, time sheets, etc. These generic business objects are called records.

Image 46

Image 47

Manager

The "Manager" tab will let you manage your workflows with ease. Indeed, from this page you can start a workflow, suspend a running workflow, resume a suspended workflow, stop a running workflow, approve a workflow, reject a workflow and search for workflows by a keyword:

Image 48

Approvals

The "Approvals" tab will let you manage your approval workflows with ease. Indeed, from this page you can start an approval workflow, suspend a running instance of an approval workflow, resume a suspended instance of an approval workflow, stop a running instance of an approval workflow, approve a workflow, reject a workflow and search for approval workflows by a keyword:

Image 49

Designer

The designer allows you to create and edit your workflows through drag and drop features, snapping and much more. To create a new task, simply open the left panel and drag and drop the task into the diagram view. To create a relation between two tasks, simply drag and drop the task on the parent task. To edit task settings, simply click on the task from the diagram.

Image 50

The graph view gives you a nice overview of the dependency graph of the workflow too:

Image 51

History

The "History" tab will let you track all your workflows and everything that happens on the workflow server. Indeed, from this page you will have an overview of all the workflow instances executed on the workflow server. Furthermore, you can filter the entries by keywords or date. You can also order the entries by date, by name, etc.

Image 52

Users

The "Users" tab allows to create new users, change passwords and user's informations, and delete users who have restricted access.

Image 53

A user who has restricted rights has only access to the "Dashboard" page and the "History" page. When he signs in, he'll have the following view of the backend:

Image 54

Profiles

The "Profiles" tab allows to assign workflows to users. Once the workflow assigned, the user can run it, modify it and delete it.

Image 55

Notifications

The "Notifications" tab allows to view your notifications, mark them as read or unread, and allows you to delete them:

Image 56

Installation

The backend is a website that can be hosted on IIS, Apache, Nginx or any other web server. The backend can also run locally.

To install the backend on a web server, simply copy the content of the folder "C:\Program Files\Wexflow\Backend" in the web server. Then, configure the workflow server URI if you want to install the backend on another machine. Simply edit the configuration file "js/settings.js":

let Settings = (function () {
    let hostname = (window.location.hostname === "" ? "localhost" : window.location.hostname);
    let port = 8000;

    return {
        Hostname: hostname,
        Port: port,
        Uri: "http://" + hostname + ":" + port + "/wexflow/"
    };
})();

Instead of localhost, put the IP or the DNS of the machine where Wexflow server is installed.

Android Manager

Image 57

Image 58

Wexflow provides an Android application for managing workflows.

Wexflow Android Manager allows the user to do the following things:

  • See all the workflows loaded by Wexflow Engine.
  • See the status of the selected workflow (running, suspended, waiting for approval or disabled).
  • Start a workflow.
  • Stop a workflow.
  • Suspend a workflow.
  • Resume a workflow.
  • Approve an approval workflow.
  • Disapprove an approval workflow.
  • The "Refresh" button allows to reload the list of workflows.

iOS Manager

Image 59

Image 60

Wexflow provides an iOS application for managing workflows.

Wexflow iOS Manager allows the user to do the following things:

  • See all the workflows loaded by Wexflow Engine.
  • See the status of the selected workflow (running, suspended, waiting for approval or disabled).
  • Start a workflow.
  • Stop a workflow.
  • Suspend a workflow.
  • Resume a workflow.
  • Approve an approval workflow.
  • Disapprove an approval workflow.
  • The "Refresh" button allows to reload the list of workflows.

Command Line Client

Wexflow provides a command line client for querying Wexflow server. The command line tool is available for both .NET and .NET Core and works on Windows, Linux and macOS.

Options

Image 61

Examples

Fire and wait

The following command starts the workflow 41 and waits until it finishes its jobs:

Wexflow.Clients.CommandLine.exe -o start -i 41 -w
Fire and forget

The following command starts the workflow 41:

Wexflow.Clients.CommandLine.exe -o start -i 41
Stop

The following command stops the workflow 41:

Wexflow.Clients.CommandLine.exe -o stop -i 41 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92
Suspend

The following command suspends the workflow 41:

Wexflow.Clients.CommandLine.exe -o suspend -i 41 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92
Resume

The following command resumes the workflow 41:

Wexflow.Clients.CommandLine.exe -o resume -i 41 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92
Approve

The following command approves the workflow 126:

Wexflow.Clients.CommandLine.exe -o approve -i 126 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92
Reject

The following command rejects the workflow 126:

Wexflow.Clients.CommandLine.exe -o reject -i 126 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92

Windows (.NET)

The command line tool is located in C:\Program Files\Wexflow\Wexflow.Clients.CommandLine. To run the command line tool, just run the executable C:\Program Files\Wexflow\Wexflow.Clients.CommandLine\Wexflow.Clients.CommandLine.exe

The configuration file C:\Program Files\Wexflow\Wexflow.Clients.CommandLine\Wexflow.Clients.CommandLine.exe.config contains WexflowWebServiceUri, Username and Password settings. The password must be in MD5 checksum format.

Windows (.NET Core)

The command line tool is located in .\Wexflow.Clients.CommandLine. To run the command line tool, just run the following command

cd .\Wexflow.Clients.CommandLine
dotnet Wexflow.Clients.CommandLine.dll

The configuration file .\Wexflow.Clients.CommandLine\appsettings.json contains WexflowWebServiceUri, Username and Password settings. The password must be in MD5 checksum format.

Linux

After installing Wexflow on Linux, the command line tool is located in /opt/wexflow/Wexflow.Clients.CommandLine. To run the command line tool, just run the following command

cd /opt/wexflow/Wexflow.Clients.CommandLine
dotnet Wexflow.Clients.CommandLine.dll

The configuration file /opt/wexflow/Wexflow.Clients.CommandLine/appsettings.json contains WexflowWebServiceUri, Username and Password settings. The password must be in MD5 checksum format.

macOS

After installing Wexflow on macOS, the command line tool is located in /Applications/wexflow/Wexflow.Clients.CommandLine. To run the command line tool, just run the following command

cd /Applications/wexflow/Wexflow.Clients.CommandLine
dotnet Wexflow.Clients.CommandLine.dll

The configuration file /Applications/wexflow/Wexflow.Clients.CommandLine/appsettings.json contains WexflowWebServiceUri, Username and Password settings. The password must be in MD5 checksum format.

How To Create A Custom Task?

General

Custom tasks are a must in a workflow engine and allow systems and applications to interact.

To create a custom task MyTask for example you will need to proceed as follows:

  1. Create a class library project in Visual Studio and name it Wexflow.Tasks.MyTask.
  2. Reference Wexflow.Core.dll and its dependencies through nuget package manager:
PM> Install-Package Wexflow

     3. Create a public class MyTask that implements the abstract class Wexflow.Core.Task.

Wexflow.Tasks.MyTask code should look like as follows:

using System.Threading;
using System.Xml.Linq;
using Wexflow.Core;

namespace Wexflow.Tasks.MyTask
{
    public class MyTask : Task
    {
        public MyTask(XElement xe, Workflow wf) : base(xe, wf)
        {
            // Task settings goes here
        }

        public override TaskStatus Run()
        {
            try
            {
                // Task logic goes here

                return new TaskStatus(Status.Success);
            }
            catch (ThreadAbortException)
            {
                throw;
            }
        }
    }
}

Each task returns a TaskStatus object when it finishes performing its job. TaskStatus is composed of the following elements:

public Status Status { get; set; }
public bool Condition { get; set; }
public string SwitchValue { get; set; }

The Status can be one of the followings:

public enum Status
{
  Success,
  Warning,
  Error
}

For example, if a task performs an opetation on a collection of files and if this operation succeeds for all the files then its Status should be Success. Otherwise if this operation succeeds for some files and fails for others then its Status should be Warning. Otherwise if this operation fails for all the files then its Status should be Error.

The Condition property is designed for flowchart tasks. In addition to the Status of the task, a flowchart task returns either true or false after performing its operation.

The Condition property should always be set to false for sequential tasks.

The SwitchValue is designed to be used by Switch flowchart nodes. If you set a value in the SwitchValue property and use this task in a Switch flowchart node, the case corresponding to the value will be executed. Otherwise, if the Default case is set, it will be executed.

You can use the TaskStatus constructor that suits your needs.

To retrieve settings, you can use the following methods:

string settingValue = this.GetSetting("settingName");
string settingValue = this.GetSetting("settingName", defaultValue);
string[] settingValues = this.GetSettings("settingName");

To select the files loaded by the running instance of a workflow through the selectFiles settings option, you can do it as follows:

FileInf[] files = this.SelectFiles();

To select entities loaded by the running instance of a workflow through the selectEntities settings option, you can do it as follows:

Entity[] entities = this.SelectEntities();

The Entity class could be very useful when working with custom tasks that manipulate objects from a database or Web Services for example.

To load a file within a task, you can do it as follows:

this.Files.Add(new FileInf(path, this.Id));

To load an entity within a task, you can do it as follows:

this.Entities.Add(myEntity);

Finally if you finished coding your custom task, compile the class library project and copy the assembly Wexflow.Tasks.MyTask.dll in C:\Program Files\Wexflow\ or in C:\Wexflow\Tasks\. The path of the folder C:\Wexflow\Tasks\ can be configured through tasksFolder setting in the configuration file C:\Wexflow\Wexflow.xml.

Your custom task is then ready to be used as follows:

<Task id="$int" name="MyTask" description="My task description" enabled="true">
    <Setting name="settingName" value="settingValue" />
</Task>

That's it. That's all the things you need to know to start coding your own custom tasks.

To test the custom task, create a new workflow (new XML file) and put the configuration of the custom task in it as follows:

<Workflow xmlns="urn:wexflow-schema" id="99" name="Workflow_MyWorkflow" description="Workflow_MyWorkflow">
	<Settings>
		<Setting name="launchType" value="trigger" /> <!-- startup|trigger|periodic|cron -->
		<Setting name="enabled" value="true" /> <!-- true|false -->
	</Settings>
	<Tasks>
        <Task id="1" name="MyTask" description="My task description" enabled="true">
            <Setting name="settingName" value="settingValue" />
        </Task>
	</Tasks>
</Workflow>

Then, place that XML file in C:\Wexflow\Workflows\.

The workflow will then appear in the list of workflows in Wexflow Manager. You can then launch it from there.

Logging

The following methods are available from the Task class for logging:

public void Info(string msg);
public void InfoFormat(string msg, params object[] args);
public void Debug(string msg);
public void DebugFormat(string msg, params object[] args);
public void Error(string msg);
public void ErrorFormat(string msg, params object[] args);
public void Error(string msg, Exception e);
public void ErrorFormat(string msg, Exception e, params object[] args);

Files

Files can be loaded in a task by calling the methods Add or AddRange:

this.Files.Add(myFile);
this.Files.AddRange(myFiles);

Then the files loaded can be selected in other tasks by their task Id as follows:

<Setting name="selectFiles" value="$taskId" />

To select the files loaded by the running instance of a workflow through the selectFiles settings option, you can do it as follows:

FileInf[] files = this.SelectFiles();

Entities

Entity is an abstract class having the Id of the task as property:

namespace Wexflow.Core
{
    public abstract class Entity
    {
        public int TaskId { get; set; }
    }
}

The entity class is designed to be inherited by other classes such as objects retrieved from a database or a web service or an API or whatever. Then, these objects can be loaded in a task by calling the methods Add or AddRange:

this.Entities.Add(myEntity);
this.Entities.AddRange(myEntities);

Then, the entities loaded can be selected in other tasks by their task Id as follows:

<Setting name="selectEntities" value="$taskId" />

Entities are designed to be used in custom tasks.

To select entities loaded by the running instance of a workflow through the selectEntities settings option, you can do it as follows:

Entity[] entities = this.SelectEntities();

The Entity class could be very useful when working with custom tasks that manipulate objects from a database or Web Services for example.

Shared Memory

Tasks contains a shared memory between them.

To add an object to the shared memory, simply proceed as follows:

this.SharedMemory.Add("myKey", myObject);

To retrieve an object from the shared memory, simply proceed as follows:

var myObject = this.SharedMemory["myKey"];

To remove an object from the shared memory, simply proceed as follows:

this.SharedMemory.Remove("myKey");

Designer

To make your custom task MyTask appear in the dropdown of the designer, simply open the file C:\Wexflow\TasksNames.json and add "MyTask" in it as follows:

[
  ...
  { "Name": "MyTask", "Description": "MyTask description."}
]

You must also add the settings by opening the file C:\Wexflow\TasksSettings.json and adding your custom settings as follows:

{
...
"MyTask": [{"Name": "settingName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}]
}

The setting type can be int, string, bool, list, password, user or record. If the setting is not required, you must specify a default value. If the setting type is list, you must specify the list items in "List" property (ex: ["ftp", "ftps"]).

That's it. MyTask will show up in the designer dropdowns and when selected its settings will show up too.

Debugging

To debug custom tasks, you can use logging.

You can also clone this Wexflow's repository and open Wexflow.sln in Visual Studio 2019 and follow these guidelines to debug Wexflow server. Then, you can create your custom task in the solution and debug it. Of course, to debug it you have to proceed as follows:

  1. Create your custom task.
  2. Reference your custom task in Wexflow.Server.
  3. Create a workflow using your custom task (see the documentation).
  4. Place your workflow in C:\Wexflow\Workflows.
  5. Open Wexflow Manager or the backend and trigger your workflow from there.

How To Debug Wexflow?

To debug Wexflow, proceed as follows:

  • Clone the source down to your machine:
    git clone https://github.com/aelassas/Wexflow.git
  • Install Microsoft .NET Framework 4.6.1 SDK or higher.
  • Install Microsoft Sync Framework 2.1 SDK if you want to debug Sync task.
  • Install Visual Studio 2019.
  • .NET version: Copy the folders "Wexflow" and "WexflowTesting" in C:\. You can download them from here.
  • .NET Core version: Copy the folders "Wexflow-netcore" and "WexflowTesting" in C:\. You can download them from here.
  • If you installed Wexflow, Make sure that Wexflow Windows Service is stopped.
  • Restore nuget packages through the following command:
    nuget restore Wexflow.sln
  • Open Wexflow.sln in Visual Studio.
  • Make sure that Wexflow.Server is set as a startup project.
  • Debug the project Wexflow.Server to start Wexflow Server in debug mode.
  • Debug the project Wexflow.Clients.Manager to start Wexflow Manager in debug mode or you can open the backend and trigger your workflows from there.
  • If you want to debug WebToHtml and WebToScreenshot tasks you will need chromedriver.exe.

That's it. I hope you enjoyed reading this article. If you have any thoughts to improve Wexflow or if you face any issues or if you want to contribute to this project please let me know in the comments or in GitHub.

Libraries Used By Wexflow

Here is the list of the libraries used by Wexflow:

  • FluentFTP: An FTP client supporting FTP and FTPS(exmplicit/implicit) written in C# and under MIT license.
  • SSH.NET: An SSH library for .NET written in C# and under MIT license.
  • SharpZipLib: A Zip, GZip, Tar and BZip2 library written in C# and under MIT license.
  • Saxon-HE: An XSLT and XQuery Processor that provides implementations of XSLT (2.0), XQuery (1.0, 3.0, and 3.1), and XPath (2.0, 3.0, and 3.1) at the basic level of conformance defined by W3C. It's an open source library available under the Mozilla Public License version 1.0.
  • log4net: A port of the famous Apache log4j framework to the Microsoft .NET runtime. It's under the Apache license version 2.0.
  • TweetSharp: A fast and clean wrapper around the Twitter AP written in C#.
  • Microsoft Sync Framework 2.1: A data synchronization platform that allows to synchronize data across multiple data stores.
  • Json.NET: A high-performance JSON framework for .NET written in C# and under MIT license.
  • Hammock: an HTTP library that simplifies consuming and wrapping RESTful services.
  • Mono.Security: A library that provides the missing pieces to .NET security.
  • Oracle Data Access Components (ODAC): Oracle database client for .NET.
  • MySQL Connector/Net: A fully-managed ADO.NET driver for MySQL.
  • System.Data.SQLite: An ADO.NET provider for SQLite.
  • Npgsql: An open source ADO.NET Data Provider for PostgreSQL written in C# and under the PostgreSQL License, a liberal OSI-approved open source license.
  • .NET Data Provider for Teradata: An ADO.NET provider for Teradata.
  • Eto.Forms: A cross platform GUI framework for desktop and mobile applications in .NET.
  • highlight.js: Javascript syntax highlighter.
  • Cytoscape.js: Graph theory / network library for analysis and visualization.
  • OpenPop.NET: An open source implementation of a POP3 client and a robust MIME parser written in C#. It allows developers easy access to email on a POP3 server in a matter of minutes.
  • iTextSharp: .NET port of the iText library.
  • DiffPlex: A Netstandard 1.0 C# library to generate textual diffs.
  • MonoTorrent: A cross-platform library implementing the BitTorrent protocol. It is based on the Mono implementation of the .NET Framework.
  • Quartz.NET: A port of Java Quartz which is an enterprise class job sheduling system.
  • SharpCompress: A fully managed C# library to deal with many compression types and formats.
  • DiscUtils: Utility libraries to interact with discs, filesystem formats and more.
  • SevenZipSharp: Managed 7-zip library written in C# that provides data (self-)extraction and compression (all 7-zip formats are supported). It wraps 7z.dll or any compatible one and makes use of LZMA SDK.
  • 7-Zip: 7-Zip is a file archiver with a high compression ratio.
  • Selenium WebDriver: A set of different software tools each with a different approach to supporting browser automation.
  • ChromeDriver: An open source tool for automated testing of webapps across many browsers.
  • NUglify: A HTML, JavaScript and CSS minification Library for .NET.
  • SharpScss: A portable cross-platform pinvoke .NET wrapper around libsass to convert SCSS to CSS.
  • libsass: A C/C++ implementation of a Sass compiler.
  • YamlDotNet: A .NET library for YAML.
  • LiteDB: A .NET NoSQL Document Store in a single data file.
  • Nancy: Lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono.
  • Kestrel: A cross platform web server for ASP.NET Core.
  • YouTube Dat API: Allows to add YouTube features to an application, including the ability to upload videos, create and manage playlists, and more.
  • Tweetinvi: an intuitive Twitter C# library for the REST and Stream API. It supports .NET, .NETCore, UAP and Portable Class Libraries (Xamarin).
  • InstagramApiSharp: A complete Private Instagram API for .NET (C#, VB.NET).
  • Ace: An embeddable code editor written in JavaScript.
  • Reddit.NET: A Reddit API library for .NET Standard with OAuth support. Written in C#.
  • Vimeo API: Vimeo's API supports flexible, high-quality video integration with custom apps.
  • SlackAPI: .NET Implementation of the Slack team communication platform API.
  • MongoDB.Driver: MongoDB driver.
  • RavenDB.Client: RavenDB driver.
  • commandline: The best C# command line parser that brings standardized *nix getopt style, for .NET.
  • MailKit: A cross-platform .NET library for IMAP, POP3, and SMTP.
  • Swagger UI: A collection of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.
  • Twilio: Twilio REST API helper library.
  • FirebirdSql.Data.FirebirdClient: Firebird ADO.NET data provider.

History

  • 05 Jan 2017:
  • 09 Jan 2017: 
    • Released version 1.0.1.
    • Created Wexflow Windows Service.
    • Created Tar, Tgz and Sql tasks.
    • Updated Wexflow Manager.
    • Fixed some bugs.
  • 16 Jan 2017:
  • 23 Jan 2017:
    • Released version 1.0.3.
    • Created HttpSyncFilesRenamerFilesExist and Wait tasks.
    • Created file tags functionality.
    • Added list, download and delete commands to Ftp task (FTP/FTPS(explicit/implicit)/SFTP).
    • Added retryCount and retryTimeout setting options to Ftp task.
    • Updated Wexflow manager.
    • Updated Wexflow engine.
    • Fixed some bugs.
    • Updated setup file.
    • Updated article content.
  • 26 Jan 2017:
    • Released version 1.0.4.
    • Created XSD validation of worklfow files before loading them.
    • Created tasks execution graph.
    • Created flowchart workflows (DoIf and DoWhile).
    • Created workflow events (OnSuccess, OnWarning and OnError).
    • Created FileExists flowchart task.
    • Updated setup.
    • Updated article content.
  • 30 Jan 2017:
    • Released version 1.0.5.
    • Created Wexflow Web Manager: a lightweight JavaScript API (~6Kb) for managing workflows.
    • Created Wexflow Manager GUI for Linux.
    • Updated Wexflow Manager for Windows.
    • Updated setup for Windows.
    • Created a setup for Linux.
  • 06 Feb 2017:
    • Released version 1.0.6.
    • Created Wexflow Android Manager: an Android application for managing workflows.
    • Updated Wexflow Web Manager.
    • Updated Wexflow Manager (Windows and Linux).
    • Updated Wexflow Engine.
  • 17 Feb 2017:
    • Released version 1.0.7.
    • Created Movedir task.
    • Updated Wexflow Web Manager.
    • Updated Wexflow Manager (Windows, Linux and Android).
    • Updated Wexflow Engine.
    • Fixed some bugs.
  • 06 Mar 2017:
    • Released version 1.0.8.
    • Created Swictch/Case flowchart node.
    • Created Now task.
    • Created Wexflow Manager for macOS.
    • Updated If and While flowchart nodes syntax.
    • Updated setup projects.
    • Now, an If flowchart node can be inside an If, a While and a Switch flowchart nodes.
    • Now, a While flowchart node can be inside an If, a While and a Switch flowchart nodes.
    • Now, a Switch flowchart node can be inside an If, a While and a Switch flowchart nodes.
    • Code refactoring.
    • Fixed some bugs.
  • 07 Apr 2017:
    • Released version 1.0.9.
    • Fixed Switch flowchart node children execution.
    • Fixed WCF service configuration issue.
  • 22 May 2017:
    • Released version 1.1.
    • Created Workflow task. This task allows to start, suspend, resume or stop a list of workflows.
    • Performance optimization.
    • Code refactoring.
  • 07 Oct 2017:
    • Released version 1.2.
    • Implemented mail attachments in MailsSender task.
    • Changed encoding to UTF-8 in logging and Wexflow Web Service client.
    • Hot reload of workflows:
      • If a workflow XML file is added to Workflows folder, It is automatically loaded without having to restart Wexflow Windows service.
      • If a workflow XML file is deleted from Workflows folder, It is automatically stopped and removed without having to restart Wexflow Windows service.
      • If a workflow XML file is changed. It is automatically reloaded without having to restart Wexflow Windows service.
    • Fixed empty Default node issue in Switch flowchart node.
    • Updated Windows, macOS and Linux manager apps.
  • 11 Oct 2017:
  • 13 Oct 2017:
    • Released version 1.4.
    • Implemented Wexflow Designer edit mode:
      • Now it is possible to edit the workflow configuration through Wexflow Designer.
      • Now it is possible to edit tasks configuration and settings through Wexflow Designer.
  • 15 Oct 2017:
    • Released version 1.5.
    • Added new features to Wexflow Designer:
      • Add a task setting.
      • Remove a task setting.
      • Add an attribute to selectFiles and selectAttachments task settings.
      • Remove an attribute from selectFiles and selectAttachments task settings.
      • Add a task to a linear workflow.
      • Remove a task from a linear workflow.
  • 16 Oct 2017:
  • 17 Oct 2017:
    • Released version 1.7.
    • Now we can delete workflows in Wexflow Designer.
    • Enhanced task settings edition.
    • Updated the documentation of MailsSender task.
    • Fixed some bugs in Wexflow Designer.
    • Updated Windows setup project.
  • 18 Oct 2017:
    • Released version 1.8.
    • Implemented the visualization of the execution graph of a linear workflow in Wexflow Designer.
    • Updated Windows setup project.
  • 19 Oct 2017:
    • Released version 1.9.
    • Added new features and fixed some issues in Wexflow Designer:
      • Implemented the visualization of the execution graph of a non lienar workflow.
      • Displayed the xml button after saving a new workflow.
      • Fixed an issue of editing the id of a new workflow after saving it.
      • Fixed an issue regarding the value of the workflow file path after saving a new workflow and editing its name.
      • Fixed an issue of changing the id of a selected workflow.
  • 20 Oct 2017:
    • Released version 2.0.
    • Added a new feature and fixed some issues in Wexflow Web Designer:
      • Changed the style of Wexflow Web Designer.
      • Fixed an issue when saving an existing workflow.
      • Fixed an issue when changing the id of an existing workflow multiple times.
    • Added new features to Wexflow Web Manager:
      • Changed the style of Wexflow Web Manager.
      • Added a confirm dialog when stopping a workflow.
    • Added regexPattern option in the task FilesLoader.
    • Added recursive load option in the task FilesLoader.
    • Updated the documentation of the task FilesLoader.
    • Updated Wexflow web service.
    • Updated the workflow Workflow_FilesLoader.
    • Updated the folder samples\WexflowTesing.
    • Updated Windows setup project.
    • Updated the documentation of the task FilesRenamer.
  • 27 Oct 2017:
    • Released version 2.1.
    • Added new tasks:
      • Sha1: This task generates SHA-1 hashes of a collection of files and writes the results in an XML file.
      • Sha256: This task generates SHA-256 hashes of a collection of files and writes the results in an XML file.
      • Sha512: This task generates SHA-512 hashes of a collection of files and writes the results in an XML file.
      • FilesConcat: This task concatenates a collection of files.
      • FilesSplitter: This task splits files into chunks.
      • FilesInfo: This task generates files information of a collection of files and writes the results in an XML file.
      • MediaInfo: This task generates the most relevant technical and tag data for video and audio files and outputs the results in an XML file.
      • MailsReceiver: This task fetches a collection of emails.
      • ProcessKiller: This task kills a process.
    • Implemented unit tests (vs2017).
    • Updated samples\WexflowTesting folder.
    • Updated samples\Workflows folder.
    • Updated the documenttaion of the tasks FilesExist and Xslt.
    • Updated Windows installer.
  • 05 Nov 2017:
    • Released version 2.2.
    • Added Designer and Logs buttons in Wexflow Manager.
    • Added Help and About menus in Wexflow Manager.
    • Added the task description in the execution graph in Wexflow Designer.
    • Fixed an issue in Wexflow Designer: We cannot save a workflow because of a typo in wexflow-designer.js
    • Created Wexflow.Core nuget package.
    • Added new tasks:
      • Unzip: This task extracts ZIP archives.
      • Untar: This task extracts TAR archives.
      • Untgz: This task extracts TAR.GZ archives.
      • ProcessInfo: This task shows information about a process.
      • TextToPdf: This task generates PDF files from TEXT files.
      • HtmlToPdf: This task generates PDF files from HTML files.
      • SqlToXml: This task executes a collection of SQL scripts (select queries) and outputs the results in XML files.
      • SqlToCsv: This task executes a collection of SQL scripts (select queries) and outputs the results in CSV files.
      • Guid: This task generates Guids and outputs the result in an XML file.
    • Added extension setting in the task Xslt.
    • Updated the task FilesCopier.
    • Fixed an issue in Task.GetSetting.
    • Added new unit tests.
    • Updated ImagesTransformer and ProcessKiller unit tests.
    • Updated samples\WexflowTesting folder.
    • Updated samples\Workflows folder.
    • Updated Windows installer.
    • Code refactoring.
  • 14 Nov 2017:
    • Released version 2.3.
    • Wexflow Designer:
      • Moved tasks names and tasks settings to external files (C:\Wexflow\TasksNames.json and C:\Wexflow\TasksSettings.json).
      • Added Xml and Documentation buttons for tasks.
    • Added Hashtable as shared memory for tasks.
    • Added deleteMessages setting to the task MailsReceiver.
    • Fixed some issues in Sql, SqlToCsv and SqlToXml tasks.
    • Documented Wexflow.Core.
    • Updated Wexflow.Core nuget package.
    • Updated the way we debug Wexflow Windows Service and Wexflow Manager.
    • Fixed the issue #36.
    • Fixed an issue in Wexflow engine.
  • 12 Oct 2018:
    • Released version 2.4.
    • Files renamed via FilesRenamer task were not accessed via successive tasks. Now, the files renamed via FilesRenamer can be accessed via successive tasks.
    • SqlToCsv task is now more configurable:
      • Added a setting to write the header or not, defaults to true.
      • Added setting for quote character such as " so columns can be quoted, eg "column1","column2", defaults to empty string.
      • Added the ability to have multiple result tables to be exported to a single file.
      • Refactored code to write each row to the output file because writing very large data sets to a single StringBuilder will use excessive memory and fail. Perhaps the best trade off is to use original StringBuilder approach and write every 50,000 or 100,000 records, but for code that functions for all use cases is preferred over code that does not.
    • Zip task: Now, if the zip file name is left blanked, the RenameToOrName of the first file in the collection will be taken as the zip file name. For example if the RenameToOrName of the first file is file1.txt, the zip file name will be file1.zip.
  • 18 Oct 2018:
    • Released version 2.5.
    • Created the new following tasks:
      • Torrent: this task downloads torrent files.
      • FilesDiff: this task calculates the diff of two files.
      • FilesEqual: this task allows to check whether two files are the same.
    • Added Refresh button and scrolling in Wexflow Manager.
    • Updated Android app:
      • Updated app style.
      • Added Refresh button.
      • Fixed an issue in the UI.
    • XmlToCsv task is now more configurable:
      • Added a setting to write the seperator character, defaults to ;
      • Added setting for quote character such as " so columns can be quoted, eg "column1","column2", defaults to empty string.
      • Refactored code to write each row to the output file because writing very large data sets to a single StringBuilder will use excessive memory and fail. Perhaps the best trade off is to use original StringBuilder approach and write every 50,000 or 100,000 records, but for code that functions for all use cases is preferred over code that does not.
    • MailsSender task is now more configurable:
      • Cc is now optional.
      • Added Bcc. It is also optional.
    • Fixed an issue of downloading files over HTTPS in Http task.
  • 20 Oct 2018:
    • Released version 2.6.
    • Created 64 bit version of Wexflow.
    • Added "Restart server" button in Wexflow Manager: This button allows to restart Wexflow Windows service from Wexflow Manager.
    • Created the new following tasks:
  • 23 Oct 2018:
    • Released version 2.7.
    • Added cron scheduling: Now a workflow can starts depending on a cron expression.
      • Updated Wexflow Engine.
      • Updated Wexflow Server.
      • Updated Wexflow Manager.
      • Updated Wexflow Web Manager.
      • Updated Wexflow Designer.
    • Added period field validation in Wexflow Designer for periodic workflows.
    • Added cron expressions validation in Wexflow Designer for cron workflows.
    • Upgraded SqlSqlToXml and SqlToCsv tasks to Oracle.ManagedDataAccess (#59).
    • Fixed a graphical issue in Wexflow Manager.
    • Fixed some issues in Wexflow Designer.
    • Fixed an issue when stopping Wexflow Server.
    • Fixed an issue when a periodic or a cron workflow is deleted or modified in Wexflow Engine.
    • Fixed System.Data.SQLite.dll issue (#61).
    • Updated nuget package to version 2.7.2.
  • 29 Oct 2018:
    • Released version 2.8.
    • Now periodic workflows are launched using Quartz.NET scheduler.
    • Now Wexflow Server restarts in an asynchronous way from Wexflow Manager.
    • Fixed a typo in Wexflow Manager.
    • Fixed an issue in MediaInfo task.
    • Fixed an issue about logging in Workflow task.
    • Fixed an issue in FilesMover unit test.
    • Updated the task FileExists.
    • Updated nuget package to version 2.8.1.
    • Created the new following tasks:
      • FilesEncryptor: This task encrypts files.
      • FilesDecryptor: This task decrypts the encrypted files by the task FilesEncryptor.
      • TextsEncryptor: This task encrypts text based files.
      • TextsDecryptor: This task decrypts the files crypted by the task TextsEncryptor.
      • Unrar: This task extracts RAR archives.
      • UnSevenZip: This task extracts 7Z archives.
      • ImagesConcat: This task concatenates images.
      • ImagesOverlay: This task overlays images.
      • CsvToSql: This task converts CSV files to SQL scripts.
      • DatabaseBackup: This task backups databases.
      • DatabaseRestore: This task restores databases.
      • IsoCreator: This task creates a .iso from a source folder.
      • IsoExtractor: This task extracts .iso files.
      • SevenZip: This task creates a .7z from a collection of files.
      • TextToSpeech: This task converts text files to speech files.
      • SpeechToText: This task converts audio files to text files.
      • FileMatch: This is a flowchart task that checks whether a file exists or not in a directory by using a regex pattern.
  • 04 Nov 2018:
    • Released version 2.9.
    • Added search function in the RESTful API.
    • Added search functionality in Wexflow Manager, Wexflow Web Manager and Wexflow Web Designer.
    • Fixed an issue about scrolling in Wexflow Manager.
    • Updated the style of Wexflow Web Designer.
    • Created the new following tasks:
      • WebToScreenshot: This task takes screenshots from urls.
      • WebToHtml: This task retrieves HTML sources from urls.
      • UglifyJs: This task uglifies JavaScript files.
      • UglifyCss: This task compresses and minifies CSS files.
      • UglifyHtml: This task compresses and minifies HTML files.
      • HtmlToText: This task extracts text from HTML files.
      • ScssToCss: This task converts SCSS files to CSS files.
      • YamlToJson: This task converts YAML files to JSON files.
      • JsonToYaml: This task converts JSON files to YAML files.
      • CsvToJson: This task converts CSV files to JSON files.
      • CsvToYaml: This task converts CSV files to YAML files.
      • HttpGet: This task executes GET requests.
      • HttpPost: This task executes POST requests.
      • HttpPut: This task executes PUT requests.
      • HttpPatch: This task executes PATCH requests.
      • HttpDelete: This task executes DELETE requests.
      • Ping: This is a flowchart task that checks whether a server responds to a ping request or not.
      • ExecCs: This task executes C# scripts.
      • ExecVb: This task executes Visual Basic scripts.
  • 07 Nov 2018:
  • 09 Nov 2018:
  • 12 Nov 2018:
    • Released version 3.2.
    • Added authentication to the Android application.
    • Added the page "forgot-password.html" in the back office.
    • Added "Forget password?" link in Wexflow Manager.
    • Fixed an issue in Wexflow Manager about authentication.
    • Fixed an issue in Wexflow Manager about security (Restrict Wexflow Manager to administrators only).
    • Fixed an issue in SpeechToText and TextToSpeech tasks.
    • Fixed an issue in DatabaseBackup and DatabaseRestore tasks.
  • 16 Nov 2018:
    • Released version 3.3.
    • Ported Wexflow workflow engine to .NET Core 2.1.
      • Here are the instructions to install the .NET Core version on Windows.
      • Here are the instructions to install the .NET Core version on Linux.
    • Fixed an issue regarding entries and history entries in the back office.
    • Fixed an issue in the tasks ImagesConcat and ImagesOverlay.
    • Fixed an issue in the tasks Sha256 and Sha512.
    • Fixed a validation issue in the designer.
    • Updated the Template task.
    • Updated Wexflow Web Manager.
  • 19 Nov 2018:
    • Released version 3.4.
    • Created local variables for workflows.
    • Created .NET Core macOS installer.
    • Created the following .NET Core tasks:
      • Zip: This task creates a .zip from a collection of files.
      • Unzip: This task extracts .zip archives.
      • Ftp: This task allows to list, upload, download or delete files over FTP, FTPS or SFTP.
    • Fixed some issues in the back office.
  • 23 Nov 2018:
    • Released version 3.5.
    • Added local variables in the designer.
    • Created the task EnvironmentVariable (.NET and .NET Core): This is a flowchart task that retrieves the value of an environment variable.
    • Updated Wexflow Manager.
    • Updated Workflow.xsd and Workflow.xml.
    • Updated nuget package to version 3.5.0.
  • 28 Nov 2018:
    • Released version 3.6.
    • Added local variables edition in the designer.
    • Added global variables in the designer.
    • Fixed an issue when changing an existing task in the designer.
    • Fixed an issue regarding selectAttachments setting in the designer.
    • Fixed an issue in Wexflow Manager.
    • Fixed an issue in Workflow.xsd.
    • Fixed a typo in logging.
    • Code refactoring.
    • Updated nuget package to version 3.6.0.
  • 03 Dec 2018:
    • Released version 3.7.
    • Allowed for custom dlls to be in a different folder from installation folder.
    • Upgraded Ftp task to FluentFTP 19.2.2.
    • Upgraded to Newtonsoft.Json 12.0.1.
    • Updated nuget package to version 3.7.0.
  • 10 Dec 2018:
    • Released version 3.8.
    • Enhanced database performance.
    • Fixed macOS issues.
    • Updated nuget package to version 3.8.0.
  • 14 Jul 2019:
    • Released version 3.9.
    • Fixed the issues #82 and #84.
    • EndOfLine is now configurable in SqlToCsv task.
    • Updated the documentation.
  • 29 Jul 2019:
    • Released version 4.0.
    • Upgraded to .NET Core 2.2.
    • Created the flowchart task MessageCorrect.
    • Updated ProcessLauncher task to load multiple files.
    • Added HLS workflow.
    • Added a favicon to backend pages.
    • Updated FluentFTP and nuget packages.
    • Updated the documentation.
  • 01 Aug 2019:
    • Released version 4.1.
    • Upgraded the .NET version to Microsoft .NET Framework 4.5.2.
    • Upgraded to MySQL 8.0.17.
    • Updated System.Data.SQLite.
  • 05 Aug 2019:
    • Released version 4.2.
    • Performance enhancements and under the hood updates.
    • Upgraded the .NET version of Wexflow to .NET 4.6.1.
    • YouTube integration through the new following tasks:
      • YouTube: This task uploads videos to YouTube.
      • YouTubeSearch: This task searches for content on YouTube.
      • YouTubeListUploads: This task retrieves a list of videos uploaded to a YouTube channel.
    • Instagram integration through the new following tasks:
    • Twitter integration through the new following task:
    • Allowed HTML in email body in MailsSender task (#101).
    • Fixed the issues #99 and #100.
    • Fixed some issues in .NET Core packages.
    • Fixed a CSS issue in the backend.
    • Updated the database.
    • Upgraded to Newtonsoft.Json 12.0.2.
    • Upgraded to FluentFTP 27.0.1.
    • Updated nuget package to version 4.2.1.
    • Updated the documentation.
  • 13 Aug 2019:
    • Released version 4.3.
    • Major performance enhancements and under the hood updates.
    • Allowed XML editing of workflows from the designer.
    • Added XML validation of workflows in the designer.
    • Added XML themes in the designer.
    • Updated the behavior of the designer.
    • Added the ability to format date and time in the backend through DateTimeFormat setting option.
    • Enhanced the style of the backend.
    • Added toggle password visibility in the login page of the backend.
    • Created the new following flowchart tasks:
      • FolderExists: This task checks whether a folder exists or not.
      • FileContentMatch: This task checks whether the content of a file matches a regex pattern.
    • Added a setting option in SqlToCsv task to not generate the file if the result set is empty.
    • Updated Android app.
    • Updated nuget package to version 4.3.0.
    • Fixed date and time issues in the backend.
    • Fixed file locks issues.
    • Fixed FileSystemWatcher issues.
    • Fixed an issue when deleting a workflow from the designer in the .NET Core version.
    • Upgraded to FluentFTP 27.0.2.
    • Upgraded to ServiceStack.Kestrel 5.6.0.
    • Upgraded to Newtonsoft.Json 12.0.2.
    • Upgraded to Google.APis.YouTube.v3 1.40.3.1663.
    • Updated the documentation.
  • 23 Aug 2019:

    This brand new version is a major and stable release that includes brand new features, bug fixes, major performance enhancements and under the hood updates.

    Below are the release notes:

    • Brand new features, bug fixes, major performance enhancements and under the hood updates.
    • Added approval workflows.
    • Added OnDisapproved workflow event.
    • Added form submission processes.
    • Added approval status and buttons to Android app.
    • Added search feature (CTRL+F) in XML Web editor.
    • Added replace feature (CTRL+H) in XML Web editor.
    • Added go to line feature (CTRL+L) in XML Web editor.
    • Added settings menu feature (CTRL+,) in XML Web editor.
    • Added keyboard shortcuts feature (CTRL+ALT+H) in XML Web editor.
    • Added 34+ themes in XML Web editor.
    • Added an option in the installers to whether install workflow samples or not.
    • Added maxRetries and retryTimeout setting options.
    • Added the new following tasks:
      • Approval: This task marks the current workflow as needing approval.
      • Reddit: This task sends posts and links to Reddit.
      • RedditLisPosts: This task retrieves Reddit post history.
      • RedditListComments: This task retrieves Reddit comment history.
    • Added .NET Core unit tests.
    • Enhanced error handling in Twitter task.
    • Updated the style of XML Web editor.
    • Updated the style of login page in the backend.
    • Updated the style of password reset page in the backend.
    • Updated Android app.
    • Updated nuget package to version 4.4.0.
    • Updated the documentation.
    • Upgraded to Autofac 4.9.4.
    • Upgraded to MSTest 1.4.0.
    • Upgraded to Microsoft.NET.Test.Sdk 16.2.0.
    • Fixed a bug related to variables parsing.
    • Fixed a bug related to workflow files loading.
    • Fixed a bug related to the result status of sequential workflows.
    • Fixed a bug in Twitter task on Linux.
    • Fixed a bug in encrypting tasks.
    • Fixed some bugs in the designer.
    • Fixed some bugs in Wexflow Manager.
    • Fixed a bug in password reset page.
    • Fixed a layout bug in Android app.
    • Fixed a bug in macOS package.
  • 07 Sep 2019:
    • Released version 4.5.
    • Bug fixes, performance enhancements and under the hood updates.
    • Created iOS appHere are the installation instructions.
    • Created the new following tasks available for both .NET and .NET Core versions:
      • Vimeo: This task uploads videos to Vimeo.
      • VimeoListUploads: This task retrieves a list of videos uploaded to a Vimeo channel.
    • Fixed a bug in TasksNames.json and TasksSettings.json in the .NET version.
    • Fixed a bug in TasksNames.json and TasksSettings.json in the .NET Core version.
    • Fixed a bug in Android app.
    • Updated Android app.
    • Updated the documentation.
  • 16 Sep 2019:
    • Released version 4.6.
    • Added new features, bug fixes, performance and security enhancements, and under the hood updates.
    • Stored workflows in the database for better performance.
    • Enhanced security of RESTful API.
    • Added user profiles.
    • Added queuing of workflow jobs.
    • Added select/delete in the designer page.
    • Added the task Slack for both .NET and .NET Core.
    • Added RESTful API documentation.
    • updated Workflow task.
    • Updated the style of login page in the backend.
    • Updated Wexflow Manager.
    • Updated Android app.
    • Updated iOS app.
    • Updated nuget package to version 4.6.0.
    • Updated the documentation.
    • Upgraded to FluentFTP 27.1.1.
    • Upgraded to Google.Apis.YouTube.v3 1.41.1.1699.
    • Upgraded to TweetinviAPI 4.0.2.
    • Upgraded to Newtonsoft.json 12.0.2.
    • Fixed issues in the designer.
    • Fixed issues regarding macOS compatibility. Now, Wexflow runs 100% on macOS.
  • 21 Sep 2019:
  • 25 Sep 2019:
    • Released version 4.8.
    • Bug fixes, performance enhancements and under the hood updates.
    • Upgraded to .NET Core 3.0.
    • Added expand/collapse of tasks in the designer.
    • Added expand/collapse of execution graph in the designer.
    • Updated MongoDB database.
    • Updated RavenDB database.
    • Updated CosmosDB database.
    • Updated Android app.
    • Updated iOS app.
    • Updated nuget package to version 4.8.0.
    • Fixed an issue while validating a workflow.
    • Fixed an issue while saving a workflow.
    • Fixed the issue #120.
    • Fixed the issue #121.
    • Upgraded to FluentFTP 27.1.2.
    • Upgraded to Newtonsoft.Json 12.0.2.
    • Upgraded to SharpCompress 0.24.0.
  • 10 Oct 2019:
  • 22 Oct 2019:
    • Released version 5.0.
    • Bug fixes, performance enhancements and under the hood updates.
    • Added Swagger UI (http://localhost:8000).
    • Fixed some issues in RESTful API.
    • Updated Wexflow Server.
    • Updated Wexflow Designer.
    • Updated Wexflow Manager.
    • Updated Android app.
    • Updated iOS app.
    • Updated nuget package to version 5.0.0.
    • Upgraded to FluentFTP 28.0.0.
    • Upgraded to RavenDB.Client 4.2.4.
    • Upgraded to Microsoft.Azure.DocumentDB 2.8.1.
    • Upgraded to MailKit 2.3.2.
  • 09 Nov 2019:
    • Released version 5.1.
    • Bug fixes, performance enhancements and under the hood updates.
    • Added Twilio task for sending SMS messages.
    • Fixed the issue #143.
    • Fixed the issue #146.
    • Updated FilesCopier task.
    • Updated FilesMover task.
    • Updated Unzip task.
    • Updated WexflowServiceClient library.
    • Updated Wexflow Manager.
    • Updated Wexflow Designer.
    • Updated Wexflow Command Line Client.
    • Updated RESTful API.
    • Updated Swagger UI.
    • Updated Android app.
    • Updated iOS app.
    • Updated nuget package to version 5.1.0.
    • Upgraded to Newtonsoft.Json 12.0.3.
    • Upgraded to Mailkit 2.4.0.1.
    • Upgraded to Microsoft.Azure.DocumentDB 2.9.0.
    • Upgraded to MongoDB.Driver 2.9.3.
    • Upgraded to Microsoft.NET.Test.Sdk 16.4.0.
    • Upgraded to Google.Apis.YouTube.v3 1.42.0.1758.
    • Upgraded to FluentFTP 28.0.1.
  • 05 Dec 2019:
    • Released version 5.2.
    • Bug fixes, performance enhancements and under the hood updates.
    • Upgrade to .NET Core 3.1 LTS.
    • Added the ability to run workflow jobs of the same workflow definition in parallel.
    • Added enableParallelJobs setting option in the workflow definifition. It defaults to true and if set to false, workflow jobs of the same workflow definition are queued.
    • Added instance id for workflow jobs.
    • Added server logs in the dashboard page in the backend (when clicking on a log entry).
    • Added server logs in the history page in the backend (when clicking on a log entry).
    • Added JSON editor to the designer.
    • Added support for PostgreSQL.
    • Added support for SQL Server.
    • Added support for MySQL.
    • Added support for SQLite.
    • Added date interpolation.
    • Added overwrite option in Unzip task.
    • Renamed 'Disapprove' to 'Reject'.
    • Fixed the issue #150.
    • Fixed the issue #153.
    • Updated LiteDB database.
    • Updated MongoDB database.
    • Updated RavenDB database.
    • Updated CosmosDB database.
    • Updated Sql task.
    • Updated SqlToCsv task.
    • Updated SqlToXml task.
    • Updated Workflow task.
    • Updated MailsReceiver task.
    • Updated MediaInfo task.
    • Updated Reddit, RedditListComments and RedditListPosts tasks.
    • Updated WexflowServiceClient library.
    • Updated Wexflow Manager.
    • Updated Wexflow Command Line Client.
    • Updated the backend.
    • Updated RESTful API.
    • Updated Swagger UI.
    • Updated Android app.
    • Updated iOS app.
    • Updated nuget package to version 5.2.0.
    • Upgraded to Mailkit 2.4.1.
    • Upgraded to Twilio 5.35.1.
    • Upgraded to TweetinviAPI 4.0.3.
    • Upgraded to Microsoft.Azure.DocumentDB 2.9.2.
    • Upgraded to SlackAPI 1.1.3.
    • Upgraded to Reddit 1.3.4.
    • Upgraded to FluentFTP 28.0.2.
    • Upgraded to RavenDB.Client 4.2.5.
    • Upgraded to Microsoft.Owin 4.1.0.
  • 05 Apr 2020:
    • Released version 5.3.
    • Bug fixes, performance enhancements and under the hood updates.
    • Added a brand new designer with drag and drop features, snapping and much more.
    • Added JSON import feature.
    • Added XML import feature.
    • Added JSON export feature.
    • Added XML export feature.
    • Added support for XSLT 3.0.
    • Added support for IMAP in MailsReceiver task.
    • Added enableParallelJobs setting to the editor.
    • Added enableParallelJobs setting to Swagger.
    • Added Docker configurations for creating and building Docker images.
    • Removed maxRetries and retryTimeout settings.
    • Removed Hammock.ClientProfile.dll.
    • Fixed an issue in History page in the backend.
    • Fixed an issue in Dashboard page in the backend.
    • Fixed some issues in SQLite database.
    • Fixed some issues in the editor.
    • Updated Wexflow Server.
    • Updated Wexflow Manager.
    • Updated backend's header style.
    • Updated all the databases.
    • Updated Android app.
    • Updated iOS app.
    • Updated MailsReceiver, CsvToJson, CsvToYaml, YamlToJson and JsonToYaml tasks.
    • Updated HtmlToText, UglifyCss, UglifyHtml, UglifyJs and Ftp tasks.
    • Updated Sql, SqlToCsv, SqlToXml, WebToHtml and WebToScreenshot tasks.
    • Updated Unrar, UnSevenZip, HtmlToPdf, TextToPdf and ScssToCss tasks.
    • Updated Xslt, Torrent, Tar, Tgz, Untar and Untgz tasks.
    • Updated Unzip, Zip, FilesDiff, IsoCreator and IsoExtractor tasks.
    • Upgrade to LiteDB 5.
    • Upgrade to MongoDB.Driver 2.10.2.
    • Upgrade to RavenDB.Client 4.2.101.
    • Upgrade to Microsoft.Azure.DocumentDB 2.1.10.
    • Upgrade to Npgsql 4.1.3.1.
    • Upgrade to MySql.Data 8.0.19.
    • Upgrade to Twilio 5.39.0.
    • Upgrade to MailKit 2.5.2.
    • Upgrade to SlackAPI 1.1.7.
    • Upgrade to Reddit 1.4.0.
    • Upgrade to InstagramApiSharp 1.5.0.1.
    • Upgrade to Google.Apis.YouTube.v3 1.45.0.1897.
    • Upgrade to FluentFTP 32.3.1.
    • Upgrade to Autofac 5.1.2.
    • Upgrade to Google.Protobuf 3.11.4.
    • Upgrade to DnsClient 1.3.1.
    • Upgrade to SharpCompress 0.25.0.
    • Upgrade to MonoTorrent 1.0.19.
    • Upgrade to DiffPlex 1.6.1.
  • 15 Apr 2020:
    • Released version 5.4.
    • Bug fixes, performance enhancements and under the hood updates.
    • Added jobs view to the manager (#212).
    • Added parallel jobs to the manager (#212).
    • Added parallel jobs to approval workflows (#212).
    • Added parallel jobs to the dashboard (#212).
    • Added approve and reject buttons to the manager (#212).
    • Added graph view to the designer using Blockly (#203).
    • Added local variables to the designer (#213).
    • Added multiple settings to the designer (#203).
    • Added auto-saving to the designer (#216).
    • Added multiple delete to the designer.
    • Added the execution graph to the JSON view (#203).
    • Added Ctrl+O shortcut to open workflows browser in the designer.
    • Added double-click to open a workflow from the workflow browser in the designer (#214).
    • Added auto-generation of workflow id in the designer (#211).
    • Added search workflows by id to the backend (#210).
    • Added support for custom tasks to the .NET Core server (#199).
    • Added support for multiple files and folders to FileContentMatch task (#204).
    • Added autofocus to the designer.
    • Added outputFormat setting option to Xslt task (#208).
    • Added /job (#212).
    • Added /jobs (#212).
    • Added /disable (#71).
    • Added /enable (#71).
    • Removed approval page (#212).
    • Removed editor page (#213).
    • Fixed an issue related to the collation of LiteDB database (#207).
    • Fixed an issue regarding else nodes (#204).
    • Fixed an issue in Wexflow engine.
    • Fixed mobile layout issues in the designer (#203).
    • Fixed some issues in the designer.
    • Updated settings.js (#215).
    • Updated the dashboard page.
    • Updated the history page.
    • Updated users page.
    • Updated profiles page.
    • Updated Swagger UI.
    • Updated all the databases.
    • Updated Android app.
    • Updated iOS app.
    • Upgrade to LiteDB v5.0.7.
    • Upgrade to MongoDB.Driver v2.10.3.
    • Upgrade to RavenDB.Client v4.2.102.
    • Upgrade to FluentFTP v32.3.3.
    • Upgrade to MonoTorrent v1.0.20.
    • Upgrade to Google.Apis.YouTube.v3 v1.45.0.1918.
    • Upgrade to System.Data.SQLite.Core v1.0.112.1.
    • Upgrade to Mailkit v2.6.0.
    • Upgrade to Portable.BouncyCastle v1.8.6.7.
  • 29 Apr 2020:

    Major release with new features, performance enhancements, security fixes and bug fixes.
    • Released version 5.5.
    • Added hot folder support for workflows (#221).
    • Added multi-language support.
    • Added support for French and Danish languages (#226).
    • Added support for Firebird.
    • Added support for Oracle.
    • Added support for MariaDB.
    • Added safe task creation in the designer (#227).
    • Added FileSystemWatcher task for files monitoring (#225).
    • Added SshCmd task for running SSH commands (#220).
    • Added SMB/CIFS support (#219).
    • Added the ability to stop workflows in .net core (#225).
    • Fixed an issue in Zip, Tar and Tgz tasks (#224).
    • Fixed FileSystemWatcher issues on Linux (#221).
    • Fixed a layout issue in users page.
    • Fixed a layout issue in manager page.
    • Fixed some issues in the designer (#224).
    • Fixed an issue in date time picker in the backend.
    • Fixed some typos in the backend.
    • Fixed an issue in PostgreSQL database.
    • Fixed an issue in MongoDB database.
    • Updated LiteDB database.
    • Updated Wexflow engine.
    • Updated Swagger UI.
    • Updated nuget package to v5.5.0.
    • Updated Android app.
    • Updated iOS app.
    • Upgrade to Swagger UI v3.25.1.
    • Upgrade to Twilio v5.39.1.
    • Upgrade to Microsoft.Azure.DocumentDB v2.10.3.
    • Upgrade to Google.Apis.YouTube.v3 v1.45.0.1929.
    • Upgrade to YamlDotNet v8.1.1.
    • Upgrade to Oracle.ManagedDataAccess v19.7.0.
    • Upgrade to System.Data.SQLite.Core v1.0.112.2.
    • Upgrade to FluentFTP v16.6.1.
    • Upgrade to MonoTorrent v1.0.21.
    • Upgrade to MySqlConnector v0.64.1.
    • Upgrade to MySql.Data v8.0.20.
  • 11 May 2020:

    Major and stable release with brand new features, performance enhancements, security fixes and bug fixes.
    • Released version 5.6.
    • Added approval workflows of generic business objects such as documents, invoices, purchase orders, vacation requests, time sheets, etc.
    • Added serial approval and parallel approval workflows.
    • Added Records tab to the backend.
    • Added Approval tab to the backend.
    • Added Notifications tab to the backend.
    • Added email notifications to approval workflows.
    • Added ApproveRecord task.
    • Added incremental task id to the designer (#227).
    • Added field type to the designer (#227).
    • Added field validation to the designer (#227).
    • Added default field value to the designer (#227).
    • Added onFileFound event to FileSystemWatcher task (#225).
    • Added SMB/CIFS support to Torrent task.
    • Added SubWorkflow task.
    • Added debugLogs setting to Ftp task.
    • Added the following .NET Core tasks:
      • CsvToJson: This task converts CSV files to JSON files.
      • CsvToYaml: This task converts CSV files to YAML files.
      • FilesDiff: This task calculates the diff of two files.
      • JsonToYaml: This task converts JSON files to YAML files.
      • ScssToCss: This task converts SCSS files to CSS files.
      • Sql: This task executes a collection of SQL script files.
      • SqlToCsv: This task executes a collection of SQL scripts and outputs the results in CSV files.
      • SqlToXml: This task executes a collection of SQL scripts and outputs the results in XML files.
      • Tar: This task creates a .tar from a collection of files.
      • Tgz: This task creates a tar.gz from a collection of files.
      • Torrent: This task downloads torrent files.
      • UglifyCss: This task compresses and minifies CSS files.
      • UglifyHtml: This task compresses and minifies HTML files.
      • UglifyJs: This task uglifies JavaScript files.
      • Untar: This task extracts tar archives.
      • Untgz: This task extracts tar.gz archives.
      • YamlToJson: This task converts YAML files to JSON files.
    • Added SMB/CIFS support to SqlSqlToCsv and SqlToXml tasks.
    • Removed CosmosDB database.
    • Removed DatabaseBackup, DatabaseRestore and Sync tasks.
    • Fixed an issue in Torrent task.
    • Fixed some issues in TasksSettings.json (#227).
    • Fixed some issues in the designer.
    • Fixed synchronization issues in LiteDB database (#229).
    • Fixed synchronization issues in MongoDB database (#229).
    • Fixed synchronization issues in RavenDB database (#229).
    • Fixed synchronization issues in PostgreSQL database (#229).
    • Fixed synchronization issues in SQL Server database (#229).
    • Fixed synchronization issues in MySQL database (#229).
    • Fixed synchronization issues in SQLite database (#229).
    • Fixed synchronization issues in Firebird database (#229).
    • Fixed synchronization issues in Oracle database (#229).
    • Fixed synchronization issues in MariaDB database (#229).
    • Updated HttpGetHttpPostHttpPut and HttpDelete tasks (#230)).
    • Updated Swagger UI.
    • Updated Android app.
    • Updated iOS app.
    • Updated nuget package to version 5.6.0.
    • Upgrade to Swagger UI v3.25.2.
    • Upgrade to MySqlConnector v0.66.0.
    • Upgrade to Twilio v5.40.0.
    • Upgrade to CommandLineParser v2.8.0.
    • Upgrade to Oracle.ManagedDataAccess.Core v2.19.70.
    • Upgrade to SharpScss v1.5.0.
    • Upgrade to MongoDB.Driver v2.10.4.
  • 20 May 2020:
    • Released version 5.7.
    • Bug fixes, performance enhancements and under the hood updates.
    • Added all must approve feature (#234).
    • Added multiple approvers for the same record (#234).
    • Added a label for approved records in records tab (#234).
    • Added approvers informations to records tab (#234).
    • Added a reminder feature in approval workfows for notifying the approver and the user assigned to the record N days before due date.
    • Added reminderDelay and onReminderDateReached settings to ApproveRecord task.
    • Added records hot folder (#234).
    • Added an automated import flow for importing and approving records (#234).
    • Added ApprovalRecordsCreator task for importing records from files (#234).
    • Added ApprovalWorkflowsCreator task for creating and starting approval workflows for records on the fly (#234).
    • Added files Drag & Drop to records tab.
    • Fixed some issues in ApproveRecord task.
    • Fixed some issues in Workflow task (#239).
    • Fixed some issues in FileSystemWatcher task.
    • Fixed some issues in HttpPostHttpPutHttpDelete and HttpGet tasks (#237).
    • Fixed some issues in the designer (#237).
    • Fixed an issue in Wait task.
    • Fixed the issue #250.
    • Fixed the issue #254.
    • Fixed an issue in Wexflow engine when deleting records.
    • Fixed an issue in Wexflow engine when stopping the server.
    • Fixed an issue in Oracle database.
    • Fixed an issue TasksSettings.json (#239).
    • Updated all the databases.
    • Updated Android app.
    • Updated iOS app.
    • Upgrade to LiteDB v5.0.8.
    • Upgrade to Swagger UI v3.25.3.
    • Upgrade to Autofac v5.2.0.
    • Upgrade to DnsClient v1.3.2.
    • Upgrade to Twilio v5.41.0.
    • Upgrade to FluentFTP v32.4.1.
    • Upgrade to VimeoDotNet v2.0.0.21.
    • Upgrade to MimeKit v2.7.0.

License

This article, along with any associated source code and files, is licensed under The MIT License

Share

About the Author

Akram El Assas
Architect
Morocco Morocco
Akram graduated from the french engineering school ENSEIRB located in Bordeaux, a city in the south of France, and got his diploma in software engineering in 2010. He worked in France for Mediatvcom, a company specialized in audiovisual, digital television and new technologies. Mediatvcom offers services such as consulting, project management, audit and turnkey solutions adapted to the needs of customers. Akram worked mainly with Microsoft technologies such as C#, ASP.NET and SQL Server but also with JavaScript, jQuery, HTML5 and CSS3. Akram worked on different projects around digital medias such as Media Asset Management systems, Digital Asset Management systems and sometimes on HbbTV apps.

Comments and Discussions

 
QuestionApple iOS 13.4.1 iPhone XR - Apple two factor authentication Pin
Member 1325257912-May-20 12:18
MemberMember 1325257912-May-20 12:18 
AnswerRe: Apple iOS 13.4.1 iPhone XR - Apple two factor authentication Pin
Akram El Assas12-May-20 16:17
mvaAkram El Assas12-May-20 16:17 
GeneralRe: Apple iOS 13.4.1 iPhone XR - Apple two factor authentication Pin
Member 1325257912-May-20 22:45
MemberMember 1325257912-May-20 22:45 
AnswerRe: Apple iOS 13.4.1 iPhone XR - Apple two factor authentication Pin
Akram El Assas12-May-20 23:21
mvaAkram El Assas12-May-20 23:21 
GeneralRe: Apple iOS 13.4.1 iPhone XR - Apple two factor authentication Pin
Member 1325257913-May-20 19:50
MemberMember 1325257913-May-20 19:50 
GeneralRe: Apple iOS 13.4.1 iPhone XR - Apple two factor authentication Pin
Akram El Assas14-May-20 3:27
mvaAkram El Assas14-May-20 3:27 
QuestionMessage Closed Pin
1-Apr-20 19:08
MemberMember 147899421-Apr-20 19:08 
GeneralMy vote of 1 Pin
Nazareth Berlanga12-Feb-20 3:36
MemberNazareth Berlanga12-Feb-20 3:36 
GeneralRe: My vote of 1 Pin
Akram El Assas24-Mar-20 3:20
mvaAkram El Assas24-Mar-20 3:20 
QuestionWexflow vs Apache Nifi Pin
Benjie Fallar III3-Feb-20 20:59
MemberBenjie Fallar III3-Feb-20 20:59 
SuggestionHistory size Pin
kiquenet.com18-Dec-19 21:00
professionalkiquenet.com18-Dec-19 21:00 
QuestionExcelent Pin
LautaroSoft15-Oct-19 5:45
MemberLautaroSoft15-Oct-19 5:45 
QuestionPowershell support for the Scripting task Pin
DavidRFigueroa26-Sep-19 18:07
professionalDavidRFigueroa26-Sep-19 18:07 
AnswerRe: Powershell support for the Scripting task Pin
Akram El Assas26-Sep-19 19:35
mvaAkram El Assas26-Sep-19 19:35 
GeneralRe: Powershell support for the Scripting task Pin
DavidRFigueroa29-Sep-19 17:47
professionalDavidRFigueroa29-Sep-19 17:47 
AnswerRe: Powershell support for the Scripting task Pin
Akram El Assas30-Sep-19 2:24
mvaAkram El Assas30-Sep-19 2:24 
GeneralIt really needs graphical editor Pin
Ephimme17-Sep-19 22:42
MemberEphimme17-Sep-19 22:42 
AnswerRe: It really needs graphical editor Pin
Akram El Assas18-Sep-19 0:21
mvaAkram El Assas18-Sep-19 0:21 
GeneralRe: It really needs graphical editor Pin
kagithanedijital10-Nov-19 5:41
professionalkagithanedijital10-Nov-19 5:41 
QuestionWorkflow Standards Pin
Dewey30-Jul-19 5:24
MemberDewey30-Jul-19 5:24 
AnswerRe: Workflow Standards Pin
Robert H Bourdeau30-Jul-19 7:21
MemberRobert H Bourdeau30-Jul-19 7:21 
Questionfull sample Reports Pin
kiquenet.com6-Jun-19 8:58
professionalkiquenet.com6-Jun-19 8:58 
QuestionWonderful workflow!! Pin
kiquenet.com5-Jun-19 19:25
professionalkiquenet.com5-Jun-19 19:25 
QuestionMacOS Issue Pin
Asif Bg5-Dec-18 8:50
MemberAsif Bg5-Dec-18 8:50 
AnswerRe: MacOS Issue Pin
Akram El Assas5-Dec-18 9:51
mvaAkram El Assas5-Dec-18 9:51 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Article
Posted 5 Jan 2017

Stats

481.4K views
568 bookmarked