The automation layer connecting what the equipment reports to what the MES needs to do and record. Flows are built by connecting nodes on a canvas, run per plant zone, and never reach production without a deliberate deployment.
Connect machine events to MES transactions by wiring nodes on a canvas. Nothing reaches production without a deliberate deployment.
Today Every machine integration is custom code.
With VECHR MES Flows are built visually from ready nodes.
Today A change goes live the moment it is saved.
With VECHR MES Draft, validate, simulate, then deploy on purpose.
Today One failure stops automation plant-wide.
With VECHR MES Flows run per zone, each with its own failover.
A flow does not start running just because it has been finished. Every flow passes through four stages, and deployment to production is always a deliberate act.
| Stage | What it means |
|---|---|
| Draft | The flow is still editable and is not running in any environment. This is the starting state for every new flow. |
| Validate | The flow's structure is checked for problems before it is run. |
| Simulate | The flow runs against sample input to check every step without touching production data. |
| Deploy | A deliberate deployment. Only at this stage does the flow start running against the production process. |
Plugin updates are distributed across every pod without stopping executions in progress. Runs already under way finish on the previous version.
A flow can start on a cron or interval schedule, when a data point changes, or when something happens in the MES.
| Source | Events |
|---|---|
| Production record | All 11 transaction types. |
| Resource state | Changed, recorded, closed, acknowledged. |
| Unit tracking | Unit created, unit status changed. |
| Production order | Status changed, created, updated, deleted. |
| Production stock | Received, updated, adjusted, state changed, deleted. |
| Labour session | Clocked on, clocked off, activity switched. |
| Pallet | Created, closed, voided. |
A BEFORE trigger can veto the operation, and it fails closed on timeout. A COMPLETED trigger is fire-and-forget. The payload carries a readable name next to every ID, and every quantity in each unit the material converts to.
| Category | Examples |
|---|---|
| Source | Timer, data point read, message subscribe, manual input, constant. |
| Transform | Filter, scale, deadband, script, switch, loop, parallel, error handler. |
| Action | MES transactions, notification, master data lookup, call flow, resource state, certification check, unit conversion, pallets, scheduling slots. |
| Integration | REST request, send email. |
| Database | SQL Server, PostgreSQL, MySQL. |
| Destination | Message publish, data point write, log, end. |
Failures are handled on purpose. Each node has an error port, an Error Handler node catches failures, and you decide whether a handled failure still counts the run as failed. Flows keep revisions, separate the deployed revision from the active one, and can have collaborators.
What automation teams usually ask before trusting a production process to a flow.
No. A flow only runs after a deliberate deployment, and it passes validation and simulation first. Setting a status to Active on its own does not make a flow run in production.
For normal needs, no. Flows can be built on a drag-and-drop canvas with 50+ node types and native MES actions. Where you need specific behaviour, the TypeScript Plugin SDK allows custom nodes without modifying the core system.
Executions already running finish on the previous plugin version. New executions use the latest one, so an update needs no downtime and no process switches version mid-execution.