A place is a named container. A token is typed data sitting in a place. Together, they represent all the state in a CPN.

A token's location — which place it's in — is its state. A task token in the backlog place is a backlog item. Move it to doing and it's in progress. Move it to done and it's complete. You don't check a status field; you check where the token is.

Tokens carry data — a task token might have a title, an assignee, a creation date — but that data is payload. The place governs behavior: which transitions can act on it, who can see it, what happens next.

A marking is the snapshot of all tokens across all places at a given moment — the complete state of the system. If you froze the net, the marking is everything you'd need to resume it.

In a traffic light net, there are three places: green, yellow, red. A single Light token occupies one of them at any time. The marking is always exactly one token in exactly one place. The light's state is literally where the token sits.

In practice

Places are your tables. Tokens are your rows. But unlike a database where a row sits in a table and a status column tracks state, a token's place carries meaning. Which transitions are possible — and which aren't — follows from where tokens are. The topology of places constrains what can happen, not application code checking field values.

See also