2. Basics
UI Layer (everything that presents to the user)
Domain Layer (FDO = FieldWorks Data Objects). All the logic required to keep the
data correct and consistent; “business logic”; no UI.
Persistence layer (FDO/Infrastructure/Persistence
3. Persistence (back ends)
UI Layer (everything that presents to the user)
Domain Layer (FDO = FieldWorks Data Objects). All the logic required to keep the
data correct and consistent; “business logic”; no UI.
Persistence layer (FDO/Infrastructure/Persistence
Common concept of key/value data store, maps GUID to XML representation of
FDO object.
Alternative “back end providers” implement key/value store
(more to come…then will thin out. Memory-only and XML file are special)
Memory-only BEP Firebird BEP Firebird XML file DB4O
(manual and unit tests) Client-server BEP (data BEP
BEP interchange)
4. Views and DomainDataByFlid
UI Layer (everything that presents to the user)
Views (legacy C++ code
used for most text display)
Working directly with the domain objects
Is the preferred approach now.
DomainDataByFlid
(access model data by object
ID/Field ID; ISilDataAccess)
FDO objects (access model data through domain objects encapsulating business
logic and constraints; partly generated from model, partly hand-written)
Persistence layer (FDO/Infrastructure/Persistence
5. FDO object interfaces
ICmObject
ICmObjectInternal
(explicitly implemented;
CmObject private to domain/FDO;
flid->property adapters)
ILexEntry (real & virtual
properties & methods;
accesssible to whole system) Overrides add
LexEntry props
(ILexEntry is the LexEntry
interface by which it
is known to the ILexEntryInternal
world, the signature (functions private to
of model properties domain/FDO but broader
that return lexical than IMPL subdomain)
entries.)
6. FDO object interfaces
ICmObject
ICmObjectInternal
(explicitly implemented;
CmObject private to domain/FDO;
flid->property adapters)
ILexEntry (real & virtual
properties & methods;
accesssible to whole system) Overrides add
LexEntry props
(ILexEntry is the LexEntry
interface by which it
is known to the ILexEntryInternal
world, the signature (functions private to
of model properties domain/FDO but broader
that return lexical than IMPL subdomain)
entries.)