All long-running process in one place.

Some operations take some time to be done (i.e. Send Newsletters, Renew contracts, Send weather forecasts).

Process module gives you a unified model for writing long-running process, giving you the following advantages:

Development model

From the developer point of view, process are long-running algoritms that can be supended and restored safely because they store their execution state in the database.

There are three main entities involved:

  • Algorithm:A Symbol entity that represents the object with the process algorithm implementation. There are base classes and extension methods to simplify implementing this logic.
  • Data: The entity or entities that that the algoritm requires to do its work. They have to implement IProcessData marker interface.
  • Process: Represents a particular execution of a process, refers to ProcessAlgorithm, a IProcessData, execution state, user that triggered the proces, extra arguments, etc...

Operations, Scheduled tasks or any other piece of business logic can trigger the execution of a new process.

Process user interface

For the end user, a process is just another entity that has some familiar icons: Play, Stop, Pause, Cancel, etc...

While a process is running (on windows or web interface) a progress bar shows the current execution progress, as well as the global or per-line exceptions that could be happening.

Additionaly, the server has a Process Control Panel showing a resume of the last process executions, as well as all the in-memory state of the ProcessRunner. Using this interface you can also Start/Stop the ProcessRunner and control their initial configuration (degree of parallelism, initial delay...)

Multi-server processes

In server farm scenarios, process execution can be distributed to other servers that are not busy attending requests.

Each server can be configured to work isolated, running only the processes that he has generated, or be able to generate processes and/or execute process in a common pool of many servers.

Batch Operations

Just by starting the Process module, the search controls get the hability to run operations over multiple entities using a context menu.

Out of the box, any non-lite Execute or Delete operation can be executed for multiple entities, and you can enable the feature for any ConstructFrom operation that saves the generated entiy.

If an operations has been overriden in the client side, it won't get multi-entity execution until ContextualFromMany is also overriden, ensuring a good behaviour in all cases.

Turn back to Signum Extensions