Sponsored
• Treblle Api Insights Treblle has come out with a revolutionary new tool - API Insights. If until now you couldn't tell on the scale how good your API is, now you will be able to. It's a free tool, you only need to upload your .json of the API you're building and you'll get insights on how good your API is in 3 categories: Design, Performance, Security. Check your API here.
Many thanks to the sponsors who make it possible for this newsletter to be free for readers. Become a sponsor.
A project workflow is like a roadmap that guides you from the very beginning of a project all the way to its successful completion. It's essentially a series of well-defined steps and processes that you and your team follow to make sure everything gets done correctly and on time. Think of it as a recipe for success, tailored to the unique needs of your project. Imagine you're building a house. The workflow for that project would include steps like designing the blueprints, getting the necessary permits, laying the foundation, framing the structure, and so on. Each of these steps has its own set of tasks and dependencies. But compare that to a software development project. Here, your workflow might start with requirements gathering, move on to coding, testing, and finally, deployment. These steps are very different from building a house but are equally important to ensure a successful outcome. I've seen people create workflows in various tools, and even in Paint. Today I will show you how I create a workflow in my .NET application.
I will show everything on a simple example of my newsletter, so that it is easier to understand. Let me first explain the workflow newsletter process. Here's an example of a newsletter workflow from the point a user subscribes to my newsletter to the point I send out a newsletter issue:

Have you heard of Workflow Engine? Workflow Engine is the perfect solution if you are dealing with business entities life cycle management in a project. Using embedded drag&drop designer you can create processes in your system and manage your workflows via a simple API. The basic set of elements allows business users to modify workflow schemes themselves. You can integrate Workflow Engine as an embedded component or via REST API. Check out demo. Let's see how to integrate it in your .NET application.
Before you continue reading: • you can watch here video of full integration with .Net. • you can check the project repository here.
WorkflowEngine offers multiple Database Providers, from MSSQL, MongoDb, PostgreSQL, to Redis. I will use MSSQL database. You can create your database using SQL commands offered by the engine itself. On the following GitHub link, you can find CreatePersistenceObjects.sql, which you can execute on your database and with that you will create all the necessary tables. It looks like this:

WorkflowRuntime is a project that actually represents the communication between our application and WorkflowEngine.

So that you don't waste time on these steps, and that the reading doesn't become boring, I have prepared it for you. It's on the GitHub repository I posted above. Of course, if you want to get into the depth of this implementation, you can look at the official documentation.
For the simplicity of the blog and explanation, I will create a simple workflow with a few activities and commands.
Let's create 2 commands : next and back . Commands serve to move from one activity (state) to another. Let's say when the user subscribes to the newsletter, the next activity would be to send a confirmation email.
Now create a couple of activities that happen in your process. I created a total of 5, where I have an initial (green color) and a final (red color), so I have 3 intermediate activities (blue color).
Perfect!
In order to enable the transition from one activity to another by executing additional commands, it is necessary to do this through transitions. I created a transition for each transition from one state to another state.
When creating transitions, you have the option to choose the type of transition ( direct and reverse ) that actually represents the direction in which the flow moves. What is important for us here is the Trigger , which will actually be the command I created - next. For reverses I have the back command. This is good if, for example, the user has not successfully verified the subscription, in that case we have to go back to the previous activity.
The complete workflow looks like this:
Now we are given the option to record the session - which will actually record it in the database. After restarting the application, the seed will still be there because the runtime will fetch it from the database. We can also download in several formats.

The goal of all this is to be able to create a custom application in which we will create through workflow activities and perform various actions on the occasion of them.
For this purpose, it is possible to create a console or web application. You can see an example of the application here.
Console application example from the url:

By using designer, I can make changes on the fly—like when I decide to change the look of the newsletter or how people receive it. It's like having a remote control for the newsletter process, so I can adjust things without getting my hands dirty with the complicated code. Plus, I won't have to spend time checking and rechecking the code for errors, because I won't be touching it. This makes updating things a whole lot simpler and less stressful. Optimajet Workflow Engine is one of the easiest workflow engines for document approval when integrating is required. We recommend it to companies that develop information systems with workflow functionality. In addition, you can download Optimajet samples here. If you have any question, please, do not hesitate to contact them. I can only agree with this and add that workflows also help us in our everyday life, without us even noticing it. How many times do we just make a plan and a path in our head, how we will do something today? That's all from me today.
Stop arguing about code style. In this course you get a production-proven setup with analyzers, CI quality gates, and architecture tests — the exact system I use in real projects. Join here.
Not sure yet? Grab the free Starter Kit — a drop-in setup with the essentials from Module 01.
Design Patterns that Deliver — Solve real problems with 5 battle-tested patterns (Builder, Decorator, Strategy, Adapter, Mediator) using practical, real-world examples. Trusted by 650+ developers.
Just getting started? Design Patterns Simplified covers 10 essential patterns in a beginner-friendly, 30-page guide for just $9.95.
Every Monday morning, I share 1 actionable tip on C#, .NET & Architecture that you can use right away. Join here.
Join 20,000+ subscribers who mass-improve their .NET skills with actionable tips on C#, Software Architecture & Best Practices.
Subscribe to the TheCodeMan.net and be among the 20,000+ subscribers gaining practical tips and resources to enhance your .NET expertise.