Demo
Follow one example, change its data, and see the checks and reasons behind a proposed change.
See the rules work on one example
This demo follows an artist and a work they have made. The source calls that work an Artefact. It asks a small question: under this model, can a proposed change produce a valid result?
Start with A transition is accepted below. The artist is active and is the author of the work. The proposed change adds a creation date and creator, then checks the result. Next choose A transition is not allowed yet. The artist is no longer active, so the same action is blocked before those values are calculated.
The State panel shows which definitions match the supplied data; more than one can match. The Transition panel shows checks on the proposed change and the values it would produce. Edit a value to see the explanation update. These edits do not update an external system.
- Read the facts
- Find matching States
- Propose a change
- Inspect checks and reasons
What do the terms mean?
- State
- A definition that the object's data can satisfy, such as having a creation date.
- Operation
- A proposed change with a named target State.
- Filter
- A prerequisite involving objects, their States and their relationship.
- Condition
- A requirement checked against the proposed result.
- Derivation
- A rule that fills in values for the proposed change.
- Authorization
- The selection that determines which Derivations this demo applies. It is not a login or a check of a real person's permissions.
This experimental demo makes parts of one source example inspectable. Some source rows cannot be evaluated as written; the page reports them and labels its spelling interpretation where used. It does not establish general determinism. In particular, which single State to choose when several definitions match remains unresolved.
Pick a scenario
Each one sets the data, the Operation and the Authorization, then runs. Everything below stays editable afterwards; the moment you change something it is your scenario.
State is computed, never stored
The engine holds no status field. It reads the object's data against each State's restriction and reports every State that holds. Edit the data on the right and the set on the left recomputes.
computing…
Two States hold at once, and the sources give no rule for choosing. This leaves the selection of one State unresolved; reporting all matches does not itself establish nondeterministic evaluation. CONFLICT PM-STR-0030, Q-G-0001.
Two candidate repairs, previewed here and applied nowhere:
Its data
The names and dates are the demo's own; no source gives instance data. Only the model is Guil's.
Every transition passes through the same gate
An Operation is a request to move an object to a State. The gate below is the method's answer, step by step. Click a step to read what it checked.
No transcribed table pairs an Operation with the State it achieves; the pairing in the Operation list is read off the sources' naming convention (Create → Created, Instantiate → New, Activate → Active). Q-G-0041.
What the sources leave open
This experimental demo makes four unresolved parts of the source example visible:
- Which State an object is in when several restrictions hold. The State panel shows the set; the repair previews show the two candidate rules. Q-G-0001.
- Whether the example can be replayed. Both worked Derivation formulas read the clock or the acting user, so the demo makes you supply them. Q-G-0034.
- Five Conditions that attach to nothing. The source spells their State "Create Artist" and "CreatedUser"; no State has either name. Q-G-0042.
- Five Conditions that cannot be evaluated. Their "enforces property" cell holds a State name instead. Q-G-0040.
The model, as transcribed
Show the four tables the engine runs against
Parsed from the three figure transcripts, not retyped. Every row links to the cell it was read from; a row marked UNCERTAIN is a cell the transcript itself could not read with confidence, and one marked RECONSTRUCTED is our extrapolation, not a source.
Verification status of the three source transcripts: conditions-validates-state (unverified), derivation-garantees-states (unverified), filter-and-operations (unverified). No human has re-read the source images against any of the transcribed text below. An UNCERTAIN mark is the transcriber's own flag, raised at transcription time — it is not the product of a review. The absence of a mark is not verification. An unmarked row has not been checked any more than a marked one; it simply was not flagged as uncertain by whoever transcribed it. See /evidence for the verification ladder in full.
States
| Name | Thing | Restrictions | Source |
|---|---|---|---|
| New Artist | Artist | has no createdDate | BLG:business-capability-definition-using-pciml-in-detail |
| Created Artist | Artist | has createdDate | BLG:business-capability-definition-using-pciml-in-detail |
| Active Artist | Artist | has activatedDate | BLG:business-capability-definition-using-pciml-in-detail |
| New User | User | has no createdDate | RECONSTRUCTED — not in any source |
| Created User | User | has createdDate | RECONSTRUCTED — not in any source |
| New Artefact | Artefact | has no createdDate | RECONSTRUCTED — not in any source |
| Created Artefact | Artefact | has createdDate | RECONSTRUCTED — not in any source |
Filters
| ID | Operation | Subject | Predicate | Object | Source |
|---|---|---|---|---|---|
| Filter 1 | Create Artist | — | — | New Artist | IMG:filter-and-operations#r3 |
| Filter 2 | Instantiate User | — | — | Created Artist | IMG:filter-and-operations#r4 |
| Filter 3 | Create User | Created Artist | hasUser | New User | IMG:filter-and-operations#r5 |
| Filter 4 | Activate Artist | Created Artist | hasUser | Created User | IMG:filter-and-operations#r6 |
| Filter 5 | Instantiate Artefact | — | — | Active Artist | IMG:filter-and-operations#r7 |
| Filter 6 | Create Artefact | Active Artist | isAuthorOf | New Artefact | IMG:filter-and-operations#r8 |
| Filter 7 | Publish Artefact | Active Artist | isAuthorOf | Created Artefact | IMG:filter-and-operations#r9 |
Conditions
| Name | Target State | Type | Enforces | Source |
|---|---|---|---|---|
| New Artist requires artistID | New Artist | Error | artistID | IMG:conditions-validates-state#r3 |
| Created Artist requires firstName | Create Artistno State of this name — nearest "Created Artist". Q-G-0042 | Error | firstName | IMG:conditions-validates-state#r4 UNCERTAIN |
| Created Artist requires lastName | Create Artistno State of this name — nearest "Created Artist". Q-G-0042 | Error | lastName | IMG:conditions-validates-state#r5 UNCERTAIN |
| Created Artist requires artisticName | Create Artistno State of this name — nearest "Created Artist". Q-G-0042 | Error | artisticName | IMG:conditions-validates-state#r6 UNCERTAIN |
| Active Artist requires hasUser | Active Artist | Error | hasUser | IMG:conditions-validates-state#r7 |
| Created User requires userName | CreatedUserno State of this name — nearest "Created User". Q-G-0042 | Error | userName | IMG:conditions-validates-state#r8 UNCERTAIN |
| Created User requires password | CreatedUserno State of this name — nearest "Created User". Q-G-0042 | Error | password | IMG:conditions-validates-state#r9 UNCERTAIN |
| New Artefact requires artefactID | New Artefact | Error | New Artefactnames a State, not a property — unevaluable, Q-G-0040 | IMG:conditions-validates-state#r10 UNCERTAIN |
| CreatedArtefact requires hasPhoto | Created Artefact | Error | Created Artefactnames a State, not a property — unevaluable, Q-G-0040 | IMG:conditions-validates-state#r11 UNCERTAIN |
| CreatedArtefact requires isTaggedWith | Created Artefact | Warning | Created Artefactnames a State, not a property — unevaluable, Q-G-0040 | IMG:conditions-validates-state#r12 UNCERTAIN |
| CreatedArtefact requires artefactName | Created Artefact | Error | Created Artefactnames a State, not a property — unevaluable, Q-G-0040 | IMG:conditions-validates-state#r13 UNCERTAIN |
| CreatedArtefact requires artefactDescription | Created Artefact | Error | Created Artefactnames a State, not a property — unevaluable, Q-G-0040 | IMG:conditions-validates-state#r14 UNCERTAIN |
Derivations
| Name | Target State | Formula | Writes | Enforced On | Source |
|---|---|---|---|---|---|
| CreatedDate Default Value | Created Artefact | afn:now() ambient — breaks replay, Q-G-0034 | createdDate | ArtistandArtefactPublishingAuthorization | IMG:derivation-garantees-states#r3 UNCERTAIN |
| CreatedBy Default Value | Created Artefact | pmda:User() ambient — breaks replay, Q-G-0034 | createdBy | ArtistandArtefactPublishingAuthorization | IMG:derivation-garantees-states#r4 UNCERTAIN |