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.

  1. Read the facts
  2. Find matching States
  3. Propose a change
  4. 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…

    Its data

    The names and dates are the demo's own; no source gives instance data. Only the model is Guil's.

    Relations

    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

    NameThingRestrictionsSource
    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

    IDOperationSubjectPredicateObjectSource
    Filter 1Create Artist —— New Artist IMG:filter-and-operations#r3
    Filter 2Instantiate User —— Created Artist IMG:filter-and-operations#r4
    Filter 3Create User Created ArtisthasUser New User IMG:filter-and-operations#r5
    Filter 4Activate Artist Created ArtisthasUser Created User IMG:filter-and-operations#r6
    Filter 5Instantiate Artefact —— Active Artist IMG:filter-and-operations#r7
    Filter 6Create Artefact Active ArtistisAuthorOf New Artefact IMG:filter-and-operations#r8
    Filter 7Publish Artefact Active ArtistisAuthorOf Created Artefact IMG:filter-and-operations#r9

    Conditions

    NameTarget StateTypeEnforcesSource
    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

    NameTarget StateFormulaWrites Enforced OnSource
    CreatedDate Default ValueCreated Artefact afn:now() ambient — breaks replay, Q-G-0034 createdDateArtistandArtefactPublishingAuthorization IMG:derivation-garantees-states#r3 UNCERTAIN
    CreatedBy Default ValueCreated Artefact pmda:User() ambient — breaks replay, Q-G-0034 createdByArtistandArtefactPublishingAuthorization IMG:derivation-garantees-states#r4 UNCERTAIN