Skip to content

Domain Analysis

Ilya Katun edited this page Mar 26, 2020 · 6 revisions

Domain

On this page we provide Domain Model via Ubiquitous Language with Bounded Context

For more details on the topic see following links

Domain Problem

We need to analyze statistics of different Child Organisations. By "analyze" we mean:

  • Data visualization
  • Statistics calculations (approximate, max/min, etc.)
  • Build predictions based on covered data

There we face another problem

We need to provide a mechanism for aggregating data with unified format over time

For that we are going to develop a system that will allow users to:

  • Create custom forms for Reports based on Questionnaires & simplified Excel-like Tables
  • Schedule how Reports should be distributed across Child Organizations
  • Manage Child Organizations
  • Fulfill Reports
  • Create different analysis queries based on retrieved data via some interface

Ubiquitous Language

Organization Administration

One of the core entities of the system is Organization

``Organization` can be:

  • Child Organization : many
  • Head Organization : one

Head Organization controls & manages Child Organizations

Organization consists of Members. Each Member is globally a User. Each User should be Member of some Organization & can't exist independently.

User can be:

  • Child Organization Member (COM)
  • Child Organization Administrator (COA)
  • Head Organization Member (HOM)
  • Head Organization Administrator (HOA)

There can be only one Administrator per Organization

HOA can create, delete, edit Users & Child Organizations. That is the only way for new Users & Organizations to be registered

COA can send request on registration of new COM to HOA

Report Templating & Construction

Report Template is another important core entity of the business

Report Template is some abstraction over the accumulated data structure

Report Template consists of several Module Templates which are also some abstraction over different data representations

There are 2 kinds of Module Templates:

  • Table Module Template (utilizes tables with strongly typed Cell Templates & Bindings)
  • Questionnaire Module Template (utilizes questionnaires as a sequence of simple strongly typed Question Templates grouped into Section Templates)

Each Question Template or Cell Template has Input Type:

  • Integer
  • Decimal
  • Financial
  • Phone number
  • Email
  • Multiple Choice Option List
  • Single Option Select
  • Boolean
  • Short Text
  • Paragraph

Binding contains some predefined type that represents logic of the function & assigned Cell Templates affected by the function

Section Templates can be marked as repeatable which means that when User will be fulfilling Report generated from Report Template one can add more Answers of the same type structured in Section

Section Template contains Question Templates

Question Template can't exist out of Section Template

Report Template can be created only by the HOA

Report Scheduling & Distribution Rules

Report Schedule is another core domain entity that represents how Reports are instantiated in the system

Report Schedule can be created only by HOA

Report Schedule contains data about

  • Periods of instantiation (how often we create new Report)
  • Start & End instantiation dates (when we start creating Reports & when we stop doing that)
  • Assigned Child Organization
  • COM Roles
    • Assignee (one who should pass the information into the Report)
    • Reviewer (one that should approve the Report which means that approvement mechanism is required)
    • Viewer (one that can only observe the Report)
  • Report template can be provided with more sophisticated access rule, up to module access restrictions
  • Deadline periods

COA can assign COMs to Report by himself if HAO allowed that in Report Schedule

Report Passing

Report is automatically created by the system based on Report Schedule

Report is assigned to some Child Organization & to some COMs

COMs can work with Report based on their roles

Report has some limited availability time & Status based on Report Schedule and will be automatically blocked by the system when it will be expired

  • Proceeded
  • Passed
  • Awaiting Review
  • Expired

Report structure replicates Report Template, but has some additional data about User input

If Report was expired than only HOA can edit that

Conceptual Model

Use Cases

This is the core use case that invokes all the other use cases

Report Template Use Case

  • In order to get some information from Child Organizations
  • As a HOA
  • I want have an instrument that allows me to create custom distributable data structures - Report Template
  • I want it to provide support for tables & questionnaire form templates
  • I want it to have validation & binding schemes for data
  • I want input fields to be strongly typed

Report Schedule Use Case

  • In order to create instances of Report Templates automatically
  • As a HOA
  • I want have a mechanism of scheduling Report creation via Report Schedules
  • I want this mechanism to create single time & regular emissions
  • I want Organization assignment mechanism
  • I want COM access preferences for Report Schedule
  • I want to be able to delegate role definition to COA
  • I want define complex deadlines
  • I want limit Report emission period

Report Proceeding Use Case

  • In order to pass the data about my Child Organization
  • As a COM
  • I want to have an interface for passing data into form
  • I want to be able to save data before submitting it
  • I want to accept or reject Reports