Overview
Introduce BaseParty as an Ash Resource fragment in Diffo, mirroring the existing BaseInstance pattern. Add a Party DSL extension and extend the existing Instance DSL with a party do block.
Background
The NBN domain requires Party kinds — RSP, Person — with rich typed relationships between them and Instance.
Scope
BaseParty fragment
Ash Resource fragment providing common Party attributes: id, name, kind, and shared Party fields
Party DSL extension — initially just one instance block on party resource.
instance do — declares what this Party kind means to Instances that relate to it, for example facilitated_by Person
party do - declares relationship between parties, example Person managed_by Person
Instance DSL extension
Add parties do block to the existing Instance DSL so a specialised Instance can declare its party relationships and roles
Language is lifecycle-neutral
Acceptance
BaseParty fragment compiles and is recognised as a Party in a domain
PartyDSL extension provides instance and party do blocks
Instance DSL extension gains a party do block
A lightweight example domain in the Diffo test suite
Non-scope
Places, including places block in Party DSL
Overview
Introduce BaseParty as an Ash Resource fragment in Diffo, mirroring the existing BaseInstance pattern. Add a Party DSL extension and extend the existing Instance DSL with a party do block.
Background
The NBN domain requires Party kinds — RSP, Person — with rich typed relationships between them and Instance.
Scope
BaseParty fragment
Ash Resource fragment providing common Party attributes: id, name, kind, and shared Party fields
Party DSL extension — initially just one instance block on party resource.
instance do — declares what this Party kind means to Instances that relate to it, for example facilitated_by Person
party do - declares relationship between parties, example Person managed_by Person
Instance DSL extension
Add parties do block to the existing Instance DSL so a specialised Instance can declare its party relationships and roles
Language is lifecycle-neutral
Acceptance
BaseParty fragment compiles and is recognised as a Party in a domain
PartyDSL extension provides instance and party do blocks
Instance DSL extension gains a party do block
A lightweight example domain in the Diffo test suite
Non-scope
Places, including places block in Party DSL