Get a quote
Architecture

What is a workflow: the states a record passes through, and who moves it

Ask what a workflow is and you get a drawing back. What tells you where a job is waiting is the record: the state it sits in, and the party allowed to move it on.

Algoriel 15 min read
What is a workflow: the states a record passes through, and who moves it
In this article
  1. What a workflow is: the states a record moves through
  2. A diagram is a picture of the flow; the flow itself sits on the record
  3. Where a flow starts and where it ends
  4. A state nobody wrote down is rebuilt every morning
  5. Every move has an owner: a person, a role, an event or an outside party
  6. A move can change something beyond the record itself
  7. A finely drawn state list names the work that is waiting
  8. Where a flow does not need software, and where our evidence stops

A workflow is the ordered set of states the record of a job passes through, together with the moves between them. At Diotek a request raised on the website is held as a written record, including one that arrives while the phone line is busy. That is what a workflow gives a business: whoever reads the record sees where the job stands and who may push it forward.

What a workflow is: the states a record moves through

Take the plainest case, the one a business owner already describes without reaching for software vocabulary: a request comes in, it lands with somebody, it waits for an answer, it closes. Every stage in that line is a state, and every movement from one stage to the next is a move. Not one of those movements happens on its own, which is the part worth holding on to.

Name the parts and the word stops being vague. A flow is always the flow of some record: an order, a request, a booking, a work order. Attached to that record are the state it sits in right now, the move from one state to its neighbour, and the party entitled to make that move. Last comes the definition of the state in which the job counts as finished, and once all of it is assembled what you hold is readable on the record rather than framed on a wall.

A record does not walk from waiting to approved by itself; somebody or something performs every move, and the kinds of owner that exist get a section of their own further down. Whether anyone can see that move depends on where the state is kept. A state held in a field on the record travels with it, so whoever opens the job reads where it stands in the same glance. Keep it anywhere else and it stops travelling; the person who opens the record then sees the record but not where it stands.

The article on counting the programs a single job’s record has to cross stops at the edge of permission and approval and says so plainly. Behind that edge is the subject here: not how many programs a record touches, but which states it passes and whose hand moves it.

A diagram is a picture of the flow; the flow itself sits on the record

Some things never make it onto a drawing, and they happen to be the things a manager needs. A drawing does not say which state a particular record sits in, because the drawing looks identical for every record in the system. It does not say who is entitled to make a given move either; a role name written beside an arrow is a note, not a permission rule. Those facts have to be recorded somewhere in the software before anybody can act on them.

None of that makes the drawing worthless. A workflow diagram is a picture drawn to explain a flow, and explaining is real work: the first time a team talks a flow through, the chart gives everyone at the table the same vocabulary. What comes after what becomes visible there. The trouble starts when the explaining finishes and the record side has still not been built.

A drawing and a record live in separate places, and separate places drift apart. Update the chart on the wall and the state field on the screen does not notice. Add a new condition to the state list in the software and the chart on the wall goes quietly out of date. Where neither surface updates the other, the record is the one worth trusting, because the record is the one a customer is waiting behind.

Which is why asking to put a workflow into the system reduces, in practice, to questions of this shape: which states will exist, and who performs each move. The rest of this article is arranged around them.

Where a flow starts and where it ends

A flow opens when its record is created and closes in a state that record never leaves; both ends are conditions rather than dates, which is why the same flow runs at different speeds in different businesses and the calendar settles nothing. Deciding where that end falls is not a software job either: only the people doing the work know which condition a record will never move past, so software puts the question and waits for an answer. State lists built without asking carry a developer’s guess, and the guess has to be corrected in use.

None of that can be settled before the record itself is named, because a flow belongs to a record and not to the work. Air conditioning tracks a site survey or a service call; a pilates studio tracks a booking; lab-result interpretation tracks the wording that will reach the patient. Skip the unit and the state list has nothing to be a list of.

Leave the boundary undrawn and the list goes wrong in either direction. Reach too far and conditions appear for stages the record never passes through, so nobody keeps them current. Stop too early and the closing never gets written, leaving records parked in a final state forever. The overreaching list buries the useful states in noise; the short one builds a queue that never empties.

Flows also hand off to each other. A closed site survey leads to a quote, and an accepted quote opens a work order, so what you have is a set of linked lists and not a long one. Forcing them into a single list reproduces each failure above in the same place. Where the state field sits, and what a record attaches to and where the data boundary falls, is a data model decision taken elsewhere; this article only notes that they get decided together.

A state nobody wrote down is rebuilt every morning

Flows run perfectly well unwritten, and pretending otherwise would be dishonest; what keeps them running is a person rather than a piece of software. Whoever remembers the flow knows which request is sitting with whom, who signs off on what, and in what order things go. The information is complete, it is accurate, and it is held in exactly one place: that person’s memory. When they go on leave the flow goes with them, and what is left behind is a pile of records nobody can read.

So there is a test, and it can be run before any software is bought. Ask whether the answer to where this job stands can be read off the record, or whether somebody has to be asked for it. Read off the record, and the flow is written down. Asked of a colleague, and it lives in heads and gets rebuilt every morning from scratch. One record currently waiting in your own business settles it: if that record tells you where it stands your question lies elsewhere, and if it does not, a state field comes before another screen.

The air conditioning site where a request opens from the website and stays written down had this among its starting problems: a visitor who reached a busy phone line was simply lost. Now the same request opens from the site and is kept as a written record. The site itself is no longer a shop window standing outside the flow.

Written down carries a first condition of its own: the state belongs in a field on the record, because a state parked anywhere else does not travel with it. Whoever opens the job then has to go looking in a second place, which might be a spreadsheet, a message thread or a notebook. The state exists in every one of those and on the record in none of them.

Every move has an owner: a person, a role, an event or an outside party

Every move in a flow has an owner, which is simply the party entitled to make it. Leave the owner unwritten and the move starts to look automatic, when in truth somebody performs it on every pass. The kinds of owner differ, and the kind decides what the software is being asked for. Take the narrowest kind first, a named individual: at the platform where the reading that reaches the patient comes out of a doctor’s approval the wording is written and approved by the doctor in the panel. Where the approval step belongs in a flow was worked through on its own.

A role is the next kind up. At the platform where each party reaches the same timetable record only as far as its own permission goes a teacher, a parent and an institution manager each open that same timetable record, within what their permission allows. The advantage is durability: the individual holding the role can be replaced while the right stays where it was put. How looking at the same record according to your role is built was covered on its own, and the role matters here only as the owner of a move.

The remaining kinds sit further from the desk. An event owns a move when no decision by a person carries it, only a condition the rule already defines, such as a waiting period running out. Pilatesco posts a no-show to the package balance in the way the rule defines, and the rule is what decides whether the entitlement comes back. An outside party owns a move when the business is not involved in it at all: at Diotek a visitor raises the site survey or the service request unaided. Because an outside party can only make moves that need no permission, the condition a public move ends in has to be fixed in advance, and the record arrives ready for someone inside to pick up.

The rows below are sorted by the kind of owner rather than by project: each row carries what starts the move, what the move leaves on the record, and where it is built that way.

Owner of the moveWhat starts the moveWhat the record keepsWhere it is built that way
A person with a named permissionThe authorised party reads and approvesThe final wording and the doctor who approved itTahlil.com, the reading written in the doctor’s panel
A role: the person changes, the right staysAccess bound to the role’s permissionOne shared record, opened by each role within its permissionVipkurum, where each role opens that timetable record at its own level
An event: no decision by a person carries itA condition defined in the rule coming aboutA balance movement shaped by the rulePilatesco, a no-show posting to the package balance
A party outside the businessA visitor opening the request unaidedA written request, independent of a free phone lineDiotek, site survey and service request

What each row really shows is that the owner determines the work: a person owner means recording the approval, a role owner means attaching the right to the role, an event owner means writing the rule, an outside owner means fixing a stopping condition. And there is no move anywhere without an owner, only a great many moves whose owner nobody wrote down. Where that is the case, circumstance decides the entitled party on each pass: whoever is free, whoever remembers, whoever is at the screen when it comes up. An unwritten owner is not an absence. It is a rule that changes with whoever fills it.

A move can change something beyond the record itself

Some moves do more than advance a state: they also shift a second record. A state list cannot show that on its own, because the list holds where a record stands, while the second effect is about what some other record has become.

At the booking system where a reservation draws a class off the package balance that effect lives in the rule: as a reservation is written into the calendar, a class comes off the customer’s package, and that balance is kept on the customer’s own record. How a reservation moves that balance was opened in the article on request types built as separate flows. What matters here is only where the second effect is defined.

A move whose second effect was never written gets caught in the most expensive place a flow has. The state looks as though it advanced while the entitlement or the balance behind it did not. The catch also comes late: the discrepancy surfaces when somebody asks about the balance, not when somebody looks at the record. At that point which move should produce which movement gets discussed again, and the outcome of the discussion is written into that day’s decision rather than into the rule.

So writing a flow down means writing a second question beside every move: what does this move change apart from the state. Asking it per move produces a document that looks nothing like a diagram. What comes out is rules rather than arrows.

Not every move earns that question. Where a move does nothing but advance a state, putting a rule behind it buys nothing. What has to be attached to the flow is not the state itself but the second record that changes with it, and where no such record exists a state field is enough on its own.

A finely drawn state list names the work that is waiting

The number of steps on a state list is a visibility decision, and the decision cuts in either direction. With nothing between open and closed, an open record cannot tell you who is holding it, so that answer goes back to being passed around in conversation. Make the list finer, though, and you take on the updating: a state nobody maintains returns a wrong answer, which is worse than no answer, because somebody reads the screen, concludes the job has moved, and the record has not moved at all.

That gives the test for admitting a state: it has to name a condition that genuinely sits in somebody’s hands. In progress names nobody and therefore says nothing about where the work is waiting. Waiting for the doctor’s approval names somebody, and so does waiting for the customer’s reply. Run that question down every row of your list: in this condition, whose hands is the record in? At Tahlil.com a reading still in the pre-read state is waiting for the doctor.

Naming waiting states this way pays off in the work it implies. A record waiting on an outside party needs a reminder. A record waiting on a role needs permissions distributed, and when the holder of a role is away, somebody else carrying that role can take over. A record waiting on an event needs the length of the wait watched.

Fineness has a ceiling, though. Once keeping the list current costs more than the work it tracks, the list goes stale and people stop opening it, and the state on the screen stops describing reality. What it describes then is what the last person to touch it happened to remember.

Where a flow does not need software, and where our evidence stops

Not every business gains from putting a flow into software. Where the same person makes every move and the job closes in the same sitting, a state field costs more than it saves: nothing is handed over, nobody is left waiting, and whoever opens the record is whoever closes it. Volume is not what settles this. A workshop turning over plenty of jobs, each run by the same person throughout, leaves the state field empty, while a small outfit whose every job waits on an approval has the list earning its keep from the start. A flow begins where work passes from one person to the next.

Here is where our evidence stops. The flows we can show are the flows of operational records: a request, a booking, a work order, an entry log, an approval. We have nothing to show on corporate approval chains, and nothing on budget flows. That is not a negotiating position, it is the edge of what we can put in front of you.

Writing that down narrows nothing, it just tells you whether you are at the right address: if what you are shopping for is a layered approval chain in itself, what is described here will not cover it, and a first conversation is a cheaper place to find that out. Which leaves the one thing worth doing. If the record itself cannot tell you where a job is waiting, a drawing is the wrong place to begin; begin with the list of states and the owner of each move, which is where the work starts on the side that tracks a job’s state and who moves it.

Key takeaways

  • A workflow is not a drawing: it is the ordered states the record of a job passes through, and the moves between them.
  • A flow counts as written down only when the answer to where a job stands can be read off the record rather than asked of a colleague.
  • Every move in a flow has an owner, and that owner may be a person, a role, an event or a party outside the business.
  • Some moves also shift a second record; where that second effect is missing from the rule, the state advances while the entitlement behind it does not.
  • The flows Algoriel can show belong to operational records such as requests, bookings and work orders; layered corporate approval chains and budget flows fall outside that scope.

Questions this article answers

  • What does workflow actually mean, and what is it made of?

    It means the ordered states the record of a job passes through, plus the moves between them. The parts have names: the record itself, the state it currently sits in, each move between neighbouring states, the party entitled to make that move, and the definition of the state that closes the job. To find yours, follow a single job the whole way and name each state it passes through.

  • Is a workflow the same thing as a workflow diagram?

    It is not. A diagram is a picture drawn to explain a flow; the flow itself lives as the state held on the record. A diagram cannot say which state a given record sits in, nor who is entitled to move it on, so the drawing on your wall can stay current while nobody sees where the work is waiting. Keep the drawing; the missing half belongs on the record.

  • Who is allowed to change the state of a record?

    Whoever the flow names as the owner of that move: a person, a role, an event or an outside party. Tahlil.com puts the reading that reaches the patient through a doctor's approval; the owner there is one person. Vipkurum ties the right to a role, so a parent, a teacher and an institution manager open one timetable record, each within their own permission. Left unwritten, the right goes to whoever is free.

  • How do we see where a job is currently waiting?

    You read it off the state list, and how finely you can read it depends on how finely that list is drawn. A state nobody updates returns a wrong answer, which costs more than no answer at all. The test is whether a state names a condition that genuinely sits in somebody's hands. Tahlil.com keeps a pre-read state apart from an approved one, so a reading waiting there says who is holding it.

  • When is it not worth putting a flow into software?

    When the same person makes every move and the job closes in a single sitting: nothing is handed over, nobody is left waiting. What settles it for you is not how much work you run but whether somebody else makes the next move. Our limit belongs here too: the flows we can show are operational records such as requests, bookings, work orders and approvals, while corporate approval chains and budget flows sit beyond it.

About the author

Algoriel

Remote web software agency

We build custom web and mobile software for businesses. Here we answer the questions that come up while your software is being built and after it goes live.

Tags:
  • workflow
  • state transition
  • record state
  • approval step
  • role based permission

Have a system to build?

If there is a system you want built, the quote form is the place to describe it.