text: 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.
  Wexflow is a free, open-source, high-performance, extensible, modular 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:
  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:
  width="630px" alt="Image 2" data-src="/KB/cs/1164009/wbo-designer-5.4.png" class="lazyload" data-sizes="auto" data->
  The graph view gives you a nice overview of the dependency graph of the workflow too:
  width="630px" alt="Image 3" data-src="/KB/cs/1164009/wbo-designer-5.4-graph.png" class="lazyload" data-sizes="auto" data->
  The history allows you to track your workflow jobs in the system and have detailed information about each job:
  width="630px" alt="Image 4" data-src="/KB/cs/1164009/wbo-history-5.3.png" class="lazyload" data-sizes="auto" data->
  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.
  Discover more features.
  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.
  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.
  width="630px" alt="Image 6" data-src="/KB/cs/1164009/youtube-install-2_resized.png" class="lazyload" data-sizes="auto" data->
  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:
  width="499px" alt="Image 7" data-src="/KB/cs/1164009/setup-4.4-1.png" class="lazyload" data-sizes="auto" data->
  3. Select a destination location:
  width="499px" alt="Image 8" data-src="/KB/cs/1164009/setup-4.4-2.png" class="lazyload" data-sizes="auto" data->
  4. Choose the components to install:
  width="499px" alt="Image 9" data-src="/KB/cs/1164009/setup-4.4-3.png" class="lazyload" data-sizes="auto" data->
  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:
  width="499px" alt="Image 10" data-src="/KB/cs/1164009/setup-4.4-4.png" class="lazyload" data-sizes="auto" data->
  5. Click on "Install" to perform the installation:
  width="499px" alt="Image 11" data-src="/KB/cs/1164009/setup-4.4-5.png" class="lazyload" data-sizes="auto" data->
  6. The installer will install Wexflow on the system:
  width="499px" alt="Image 12" data-src="/KB/cs/1164009/setup-4.4-6.png" class="lazyload" data-sizes="auto" data->
  7. Finally, click on finish to finish the installation:
  width="499px" alt="Image 13" data-src="/KB/cs/1164009/setup-4.4-7.png" class="lazyload" data-sizes="auto" data->
  The following menus are added in the start menu:
  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:
  width="600px" alt="Image 15" data-src="/KB/cs/1164009/ws-3.5.png" class="lazyload" data-sizes="auto" data->
  When you open Wexflow Manager, you will get this window:
  Here are the credentials to sign in:
  You can change the password from the backend.
  After you sign in, you will get this window:
  width="630px" alt="Image 17" data-src="/KB/cs/1164009/wm-4.4-2.png" class="lazyload" data-sizes="auto" data->
  With Wexflow Manager, you can manage your workflows with ease.
  Wexflow makes use of most popular databases such as LiteDB, MongoDB, RavenDB, PostgreSQL, SQL Server, MySQL, SQLite, Firebird, 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.
  Wexflow supports .NET Core 3.1 LTS or higher.
  width="600px" alt="Image 18" data-src="/KB/cs/1164009/ws-dotnet-core-windows.png" class="lazyload" data-sizes="auto" data->
  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.
  width="630px" alt="Image 19" data-src="/KB/cs/1164009/wbo-login-4.4.png" class="lazyload" data-sizes="auto" data->
  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.
  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:
  width="630px" alt="Image 20" data-src="/KB/cs/1164009/ws-dotnet-core-linux-4.4.png" class="lazyload" data-sizes="auto" data->
  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.
  width="630px" alt="Image 21" data-src="/KB/cs/1164009/wbo-login-4.4-linux.png" class="lazyload" data-sizes="auto" data->
  If you want to use the image processing tasks, you must install these libraries:
  sudo apt install libc6-dev libgdiplus
  Wexflow can be installed on macOS 10.13 (High Sierra) or above.
  cd /Applications/wexflow/Wexflow.Server
  dotnet Wexflow.Server.dll
  width="630px" alt="Image 22" data-src="/KB/cs/1164009/ws-dotnet-core-macos-4.5.png" class="lazyload" data-sizes="auto" data->
  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.
  width="630px" alt="Image 23" data-src="/KB/cs/1164009/wbo-login-4.4-macos.png" class="lazyload" data-sizes="auto" data->
  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.
  width="630px" alt="Image 25" data-src="/KB/cs/1164009/youtube-install-linux_resized.png" class="lazyload" data-sizes="auto" data->
  If you want to build your own Docker images, below a screenshot from Ubuntu 18.04 (docker build):
  width="630px" alt="Image 26" data-src="/KB/cs/1164009/docker-5.7-1.png" class="lazyload" data-sizes="auto" data->
  Below a screenshot from Ubuntu 18.04 (docker run):
  width="630px" alt="Image 27" data-src="/KB/cs/1164009/docker-5.7-2.png" class="lazyload" data-sizes="auto" data->
  You can start Wexflow Server and its backend through Docker Compose by following the instructions below.
  docker-compose up
  Below a screenshot from Ubuntu 18.04 (docker-compose up):
  width="630px" alt="Image 28" data-src="/KB/cs/1164009/docker-compose-5.7.png" class="lazyload" data-sizes="auto" data->
  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:
  5. Click on "Wexflow Web Service URI":
  6. Configure Wexflow Web Service Uri:
  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:
  After you sign in you will get the list of workflows that you can manage easily from your Android device:
  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:
  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:
  width="423px" alt="Image 35" data-src="/KB/cs/1164009/ios-4.5-1.png" class="lazyload" data-sizes="auto" data->
  13. Configure Wexflow server URL:
  width="423px" alt="Image 36" data-src="/KB/cs/1164009/ios-4.5-2.png" class="lazyload" data-sizes="auto" data->
  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 or use the IP address.
  width="423px" alt="Image 37" data-src="/KB/cs/1164009/ios-4.5-1.png" class="lazyload" data-sizes="auto" data->
  After you sign in you will get the list of workflows that you can manage easily from your iOS device:
  width="423px" alt="Image 38" data-src="/KB/cs/1164009/ios-4.5-3.png" class="lazyload" data-sizes="auto" data->
  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:
  width="600px" alt="Image 39" data-src="/KB/cs/1164009/wu-3.5-1.png" class="lazyload" data-sizes="auto" data->
  After Wexflow is uninstalled, a window will show up informing that the un-installation succeeded:
  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.
  C:\Wexflow\
  C:\WexflowTesting\
  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.
  C:\Program Files\Wexflow\Wexflow.log
  To uninstall Wexflow from a Linux system, proceed as follows:
  sudo rm -rf /opt/wexflow
  To uninstall Wexflow from a macOS system, simply delete wexflow from /Applications/ folder.
  To uninstall Wexflow from an Android device, simply open Settings>Applications>Wexflow then uninstall it.
  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.
  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:
  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:
  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.
  name
  Task
  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.
  enabled
  false>
  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.
  When you open Wexflow Manager for the first time, you will get this window:
  width="630px" alt="Image 42" data-src="/KB/cs/1164009/wm-4.4-2.png" class="lazyload" data-sizes="auto" data->
  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:
  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.
  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.
  When you open the backend for the first time, you will arrive on the login page:
  width="630px" alt="Image 43" data-src="/KB/cs/1164009/wbo-login-4.6.png" class="lazyload" data-sizes="auto" data->
  After you sign in, you can change the password from the "Users" page.
  If a user forgot his password, he can click on "Forgot password?" link to reset his password:
  width="630px" alt="Image 44" data-src="/KB/cs/1164009/wbo-forgot-password-4.6.png" class="lazyload" data-sizes="auto" data->
  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\ Linux system, the configuration file to edit is /opt/wexflow/Wexflow.Server/appsettings.json:
  {
  "WexflowSettingsFile": "/opt macOS system, the configuration file to edit is /Applications/wexflow/Wexflow.Server/appsettings.json:
  {
  "WexflowSettingsFile": "/Applications"
  }
  }
  }
  After you sign in, you will arrive on the dashboard page:
  width="630px" alt="Image 45" data-src="/KB/cs/1164009/wbo-dashboard-5.8.png" class="lazyload" data-sizes="auto" data->
  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.
  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.
  width="630px" alt="Image 46" data-src="/KB/cs/1164009/wbo-records-1-2.png" class="lazyload" data-sizes="auto" data->
  width="630px" alt="Image 47" data-src="/KB/cs/1164009/wbo-records-2-2.png" class="lazyload" data-sizes="auto" data->
  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:
  width="630px" alt="Image 48" data-src="/KB/cs/1164009/wbo-manager-5.4.png" class="lazyload" data-sizes="auto" data->
  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:
  width="630px" alt="Image 49" data-src="/KB/cs/1164009/wbo-approval-5.6-2.png" class="lazyload" data-sizes="auto" data->
  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.
  width="630px" alt="Image 50" data-src="/KB/cs/1164009/wbo-designer-5.4.png" class="lazyload" data-sizes="auto" data->
  width="630px" alt="Image 51" data-src="/KB/cs/1164009/wbo-designer-5.4-graph.png" class="lazyload" data-sizes="auto" data->
  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.
  width="630px" alt="Image 52" data-src="/KB/cs/1164009/wbo-history-4.4.png" class="lazyload" data-sizes="auto" data->
  The "Users" tab allows to create new users, change passwords and user's informations, and delete users who have restricted access.
  width="630px" alt="Image 53" data-src="/KB/cs/1164009/wbo-users-4.4.png" class="lazyload" data-sizes="auto" data->
  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:
  width="630px" alt="Image 54" data-src="/KB/cs/1164009/wbo-restricted-4.4.png" class="lazyload" data-sizes="auto" data->
  The "Profiles" tab allows to assign workflows to users. Once the workflow assigned, the user can run it, modify it and delete it.
  width="630px" alt="Image 55" data-src="/KB/cs/1164009/wbo-profiles-4.6.png" class="lazyload" data-sizes="auto" data->
  The "Notifications" tab allows to view your notifications, mark them as read or unread, and allows you to delete them:
  width="630px" alt="Image 56" data-src="/KB/cs/1164009/wbo-notifications-2.png" class="lazyload" data-sizes="auto" data->
  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.
  Wexflow provides an Android application for managing workflows.
  Wexflow Android Manager allows the user to do the following things:
  width="423px" alt="Image 59" data-src="/KB/cs/1164009/ios-4.5-1.png" class="lazyload" data-sizes="auto" data->
  width="423px" alt="Image 60" data-src="/KB/cs/1164009/ios-4.5-3.png" class="lazyload" data-sizes="auto" data->
  Wexflow provides an iOS application for managing workflows.
  Wexflow iOS Manager allows the user to do the following things:
  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.
  width="630px" alt="Image 61" data-src="/KB/cs/1164009/cmd-4.7.png" class="lazyload" data-sizes="auto" data->
  The following command starts the workflow 41 and waits until it finishes its jobs:
  Wexflow.Clients.CommandLine.exe -o start -i 41 -w
  The following command starts the workflow 41:
  Wexflow.Clients.CommandLine.exe -o start -i 41
  The following command stops the workflow 41:
  Wexflow.Clients.CommandLine.exe -o stop -i 41 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92
  The following command suspends the workflow 41:
  Wexflow.Clients.CommandLine.exe -o suspend -i 41 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92
  The following command resumes the workflow 41:
  Wexflow.Clients.CommandLine.exe -o resume -i 41 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92
  The following command approves the workflow 126:
  Wexflow.Clients.CommandLine.exe -o approve -i 126 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92
  The following command rejects the workflow 126:
  Wexflow.Clients.CommandLine.exe -o reject -i 126 -j 9144e328-dde3-468e-a8ba-913e3d5b7b92
  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.
  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.
  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.
  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.
  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:
  MyTask
  Wexflow.Tasks.MyTask
  Wexflow.Core.dll
  PM> Install-Package Wexflow
  3. Create a public class MyTask that implements the abstract class Wexflow.Core.Task.
  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:
  TaskStatus
  public Status Status { get; set; }
  public bool Condition { get; set; }
  public string SwitchValue { get; set; }
  The Status can be one of the followings:
  Status.
  Success
  Warning
  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.
  Condition
  true
  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.
  SwitchValue
  Switch
  Default:
  selectFiles
  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:
  selectEntities
  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.
  Entity 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.
  tasksFolder
  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.:
  Add
  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" /> or whatever.");
  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: dropdowns and when selected its settings will show up too.
  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:
  To debug Wexflow, proceed as follows:
  git clone
  nuget restore Wexflow.sln
  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.
  Here is the list of the libraries used by Wexflow:
  Tar
  Tgz
  Sql
  Wmi
  ImagesTransformer
  Http
  Sync
  FilesRenamer
  FilesExist
  Wait
  Ftp
  retryCount
  retryTimeout
  DoIf
  DoWhile
  OnSuccess
  OnWarning
  OnError
  FileExists
  Workflow
  MailsSender
  regexPattern
  FilesLoader
  recursive
  SqlToCsv
  StringBuilder
  Zip
  RenameToOrName
  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:
  This article, along with any associated source code and files, is licensed under The MIT License
  Hi Akram
  Yes followed the steps
  After I generated the app specific password at
  I pasted it into cydia and it started processing but generated an error after a few stages:
  file: provision.cpp;line: 81 what:
  ios/listDevices=3018
  Please update to Xcode 7.3 or later to continue developing with you Apple ID
  Precisely, several days ago I was wondering about something similar to this. I thank you
  <Task id="2" name="ProcessLauncher" description="Powershell script" enabled="true">
  <Setting name="processPath" value="c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" />
  <Setting name="processCmd" value="myscriptPath.ps1" />
  <Setting name="hideGui" value="true" />
  <Setting name="generatesFiles" value="false" />
  </Task>
  <Setting name="connectionString" value="Filename=/Applications/wexflow/Wexflow/Database/Wexflow.db; Mode=Exclusive"/>
  General News Suggestion Question Bug Answer Joke Praise Rant Admin
  Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.