Diesel has expressive domain modelling functionality. You can model a domain and then manage the domain's objects in several ways.
Define a class: $anno (table="TestClass1") $anno (inventory="diesel.db") $class TestClass1 (someValue:String, ref:<>TestClass2)
DslDomainto get full functionality.
Associate inventories via annotations on each class:
anno ( inventory=
anno ( inventory=
Or by registering an inventory to a list of classes:msg diesel.inv.register (inventory=
This second option is trickier: the association is only available after running this message, so if you don't put it in the EnvironmentSettings for diesel.realm.configure it won't be available by default...
tableannotation is optional, the default will use the class name as the table name
You can define domain elements in either special topics called
Category or as DSL in one tagged with either of
Category, domain, DslDomain. You can also define a domain on the fly within rules specifications (specs) and also import a domain definition from an external representation (for instance importing an ODATA domain from a Microsoft Dynamics instance. These types all work together and are merged into one domain per project and per diesel flow.
For instance, you can define a class in a few separate topics and the definitions are merged into one, making it easy to extend and annotate concepts.
You can also model classes and other domain elements in DSL.
The main domain modelling constructs are:
$classconcept or class or type
$annoannotations - can add properties to classes or other domain elements
$class Class1 [T] (attribute1, attribute2:String, ref:Class2)
Each realm has an associated domain, containing the categories defined as wikis as well as any domain modelling defined in topics tagged with
DslDomain or topics in the
Each flow extends that default realm domain with any domain modelling elements defined in it's own specifications, over and above those already captured in topics tagged
domaintopic, so it's known to the entire realm.
diesel.dom.add is a "todo" so not available yet.
So, when browsing a domain and you see a message like
nothing found about TestClassInv1a double check if
TestClassInv1a was supposed to be included in the realm's default domain and if it is actually included...