Running EasyMorph workflow as standalone application

Sometime we at EasyMorph get questions if it’s possible to compile an EasyMorph project into a standalone .exe application and run it on someone else’s computer.

The answer is that while it’s not possible to “compile” a project into an executable application, it’s still possible to have a free standalone application that would execute EasyMorph transformations and actions – in a “cloud computing” way. There are 3 options for this:

Option 1: Free edition + EasyMorph Server Command action

The “EasyMorph Server Command” action is available in the free edition of EasyMorph. It interacts with an EasyMorph Server using 5 commands:

  • Trigger a Server task (with specific project parameter values if needed)
  • Get a list of files in a Server space
  • Download a file
  • Upload a file
  • Delete a file

Using this action, you can create a project that uploads files with source data to EasyMorph Server from a remote computer, triggers a task that would process the files and generate some output files, then downloads the output files back to the remote computer.

To make things simple for a non-technical user the project can be set up as a Launcher task. In this case it can be triggered in 1 click and it can prompt parameters on each start.

Pros:

  • Simple and visual design
  • Parameters can be prompted
  • The Status action can be used to signal progress in long workflows
  • Connection credentials are encrypted
  • The “client” project is easy to modify, if necessary

Cons:

  • The 24 action limit in the free edition

Option 2: EMS-CMD utility

Another option is to use ems-cmd – a free command-line utility that does everything that the “EasyMorph Server Command” action does (and a little bit more), but from the command line. The utility is open source and is available for downloading from its GitHub home page: https://github.com/easymorph/server-cmd. The documentation is on the same page.

You can create a batch file (.bat) that would call this utility with different options in order to upload a file, trigger a task, and download the result back. For instance:

ems-cmd upload http://ems.myserver.com:6330 -source D:\myfile.csv -target "source data" -space "Partners" -password some_password
ems-cmd run http://ems.myserver.com:6330 -taskID 59b824f0-4b81-453f-b9e0-1c58b97c9fb9 -space "Partners" -password some_password

Of course, the .bat script can be of any length and can include other commands too.

Pros:

  • No limitation on complexity
  • EasyMorph workflows can be seamlessly integrated into other applications

Cons:

  • Server access credentials are exposed in plain text
  • Some users may be not comfortable with the command-line interface

Option 3: Custom application that uses EasyMorph Server .NET SDK

Develop your own Windows application using the EasyMorph Server .NET SDK which source code is also available on GitHub. Alternatively, the SDK can be installed as a Nuget package.

The ems-cmd utility described above is built using the SDK. Therefore with the SDK you can do everything that ems-cmd does. The SDK home page has documentation on SDK classes and methods. You can use the source code of ems-cmd as an example of how the SDK can be used.

Pros:

  • No limitation on complexity
  • EasyMorph workflows can be seamlessly integrated into other applications
  • Security

Cons

  • Cost, time, and effort of software development

Final notes

The “cloud computing” model, where a workflow is hosted on an EasyMorph Server and used from another computer(s) has a few advantages:

  • It costs nothing to use any of the 3 options above to run a long, complex workflow hosted on an EasyMorph Server.
  • Use separate Server spaces to isolate tasks from each other.
  • Since the workflow is centralized, it can be modified in one place (i.e. on the Server) without the need to update user installations.
  • Heavy calculations do not use CPU and memory resources of user computers.
  • Access to sensitive data can be confined to the Server workflow. Credentials and connections strings are not shared with users.
  • There is no need to install and configure 3rd party software (e.g. an FTP server) in order to transfer files to/from an EasyMorph Server.

If you’re going to transfer data over the public internet, make sure your EasyMorph Server is configured to use an SSL certificate for secure HTTP connections. Read more: Security considerations for hosting EasyMorph Server in the cloud. If you don’t know how to obtain and install a SSL certificate – reach out to us, we can help.

:bulb: Tip: Use EasyMorph Server to start your own small business, because why not!
For instance, you can build a data catalog and provide some valuable information by subscription. Or use your secret know-how algorithm to process customer data without the risk of leaking the algorithm.

@dgudkov, thanks for the explanation. I believe this is what you had mentioned on your email to me. I still wanted to understand a bit further about this though.

Our setup is as follows:

  1. We have multiple remote sites that have an app that uses SQL Server Express as a backend.
  2. All the databases are identical.
  3. I want to selectively bring back data to a central database for reporting purposes and for use in other applications.

What is not clear from your explanation above is whether we can:

a. schedule querying of these databases via the server command on an hourly basis
b. maintain one project definition and push it out to a Dropbox folder or something similar that can be used for updating it.

@Shaheed_Fazal,

scheduling is not available in the free edition, which makes option #1 not suitable for your case. Option #2 should work if you create a .bat file and schedule it using the Windows Task Scheduler.

The .bat file would do the following:

The .bat file itself can be hosted in a Dropbox folder for remote update.

Hi @dgudkov

Congratulations on the launch of 5.0! :grinning:

I’m revisiting this project and was wondering whether any of your recommendations on the above would change in light of the new release?

Thanks for your advice as ever.

Regards

Shaheed

Thank you :slight_smile:

The recommendations are the same. In version 5 several instances of a Server task can now be executed simultaneously, which removes the inconvenience that was present in earlier versions that couldn't run another instance of a task if it was already running. Therefore in version 5 the proposed solution works even better.