Solution structure¶
Generated solution: ConnectSoft.Saas.EntitlementsTemplate.slnx - context projects under src/ plus the base-template/ submodule. Same layered layout as the other SaaS contexts with the ConnectSoft.Saas.Entitlements.* prefix.
Notable projects¶
| Project (suffix) | Role |
|---|---|
.EntityModel |
IEntitlement (root), EntitlementAssignment, TenantFeatureOverride, status enum |
.DomainModel / .DomainModel.Impl |
Processor/retriever + inputs; defaults + validators |
.PersistenceModel.NHibernate |
3 entity maps + repos, tenant filter |
.MessagingModel |
Published events; consumes catalog events from NuGet |
.FlowModel.MassTransit |
ProductCatalogReactionStateMachine / ProductCatalogReactionState |
.ServiceModel(.RestApi/.Grpc) |
Contracts + adapters |
.ActorModel.Orleans |
EntitlementEditorGrain |
.ApplicationModel / .Application |
DI wiring; host |
.Metrics |
EntitlementsMetrics |
Docs include ADRs 0002-external-catalog-identifiers, 0003-mass-transit-product-catalog-reaction-saga, 0004-tenant-scoped-entitlements. Layer responsibilities: see template layering and reuse.
Tests¶
ConnectSoft.Saas.Entitlements.UnitTests(validators, aggregate, gRPC adapter, AutoMapper,EntitlementEditorGrainSiloTests,EntitlementsNHibernateClassMappingsUnitTests,EntitlementsMassTransitTopologyMassTransitTests)ConnectSoft.Saas.Entitlements.AcceptanceTests(Reqnroll)ConnectSoft.Saas.Entitlements.ArchitectureTests(7 files incl.RepositoryConfinementTests,ServiceModelCodeFirstGrpcTests)
See testing.