Loading color scheme
Boston Professional v5.8 Release Notes
Boston Professional v5.8 is a patch release to Boston Professional v5.7Release Date: TBA
A summary of the main commits follows:- Usability fixes to panning and scrolling of ORM diagram Pages;- Fixed bugs in Undo/Redo processing when moving model elements on an ORM diagram Page;- Can now create a Value Type from within the Virtual Analyst, using the syntax <ValueTypeName> IS A VALUE TYPE;- Added database configuration items to MetaModelModel for configuring databases such as Snowflak and TypeDB;- Added IsPrimarySubtypeRelationship to MetaModelSubtypeRelationship so that the primary subtype relationship for a model element can be selected;- Implemented GRPC dependencies for TypeDB access using FactEngine;- Various usability improvements;- Database version now at v1.29; and- Minor bug fixes.
Known Issues:--------------------- FactEngine doesn't cater for unary fact types at this stage- Unary Fact Types may not be translated to a boolean attribute/property in the Entity Relationship and Property Graph views in all cases.
Boston Professional v5.9 Release Notes
Boston Professional v5.9 is a patch release to Boston Professional v5.8Release Date: TBA
A summary of the main commits follows:- Minor bug fixes.- Attributes/Columns in Entity Relationship view can now be flagged as being Derived Fact Type Parameters- Various usability improvements;- Database version now at v1.30; and- Minor bug fixes.
Boston Professional v6.0 Release Notes
Boston Professional v6.0 is a patch release to Boston Professional v5.9Release Date: 24th January 2022
A summary of the main commits follows:- NORMA Object-Role Modeling files are now able to be imported by Boston. See video: https://www.youtube.com/watch?v=0coVrXuqsKc- Improvements to reverse engineering TypeDB database schema into Boston;- Implementation of Role Value Constraints, Role Value Comparison Constraints and Value Ranges on Role Constraints;- Implemented Reference Modes for Objectified Fact Types using Objectifying Entity Type;- Minor fix ERD Attributes - Move up/down now more consistent. Now can't delete unless in Superuser mode;- Can't create two Pages with the same name (change on edit etc);- Can't drop a Role onto a FT with Roles joined to nothing;- Only update VT Instance Concept Instance in database if new Concept Intsance doesn't already exist;- Removing a FactTypeInstance from a Page will not also remove the associated Derivation Text;- Various usability improvements;- Database version now at v1.31; and- Minor bug fixes.
Boston Professional v6.1 Release Notes
Boston Professional v6.1 is a patch release to Boston Professional v6.0Release Date: 4th April 2022
Patch release: 6.1.1A summary of the main commits follows:- Database version now at v1.33;- Implemented product registration.- Added automated error reporting.- Implemented automatic product update regime.- Added storing Models as XML functionality (over saving Models to the database exclusively). - Can now view a ModelElement in the Glossary from the ModelDictionary- Implemented Value Type Subtype Relationships.- Entity Types can now be subtypes of Fact Types.- Can now set Fact Type Reading Instance position on Page.- Fixed bugs around EntityTypes with CompoundReferenceSchemes, not verbalised correctly if Subtypes.- When loading .fbm file, can now store as XML- Minor but fixes addnig IUC when FactType is not on Page (handling IUCAdded event). Now doesn't throw error.- Implemented synchronous broadcasts for the WCF Service managing Boston clients.- Added extra Virtual Analyst help to the help manual. Virtual Analyst now provides extra help/suggestions on some commands.- Added 'Getting Started' to the Startup page (Boston Student and Boston Professional).- Refined Reference Table management/code improvements.- Fixed bug when reassigning a role from a Supertype to a Subtype, was removing relevant Columns rather than reassigning them to a different table (if required, because Subtype might be absorbed).- Updated Boston database documentation (User Manual).- Improved Diagram Spy. Handles Objectified Fact Types better now and in line with Entity Types.- Fixed management of Model Notes (Page/GUI/Instance handling).- Added one new Model Fix type.- Fixed bug in creating ValueTypes...ModelDictionaryEntry was either not being created or not set to Dirty.- Fixed bug in Verbalisation of Subset Constraints that are not Subset Join Constraints. Was reading 'If some....then some...' rather than 'If some...then that....'- Fixed bug in Verbalisations for 1:1 BinaryFactTypes- Removing ModelElements from Model now forces XML save of Model if Model.StoreAsXML- Can elect to see MDAModelElement errors in ErrorList (or not)- Fixed cross threading bug on CircularProgressBar in frmToolboxEnterpriseExplorer when loading a Model.- Circular Progress bar now shows more values when loading Model stored as XMl- Various fixes to Model Explorer to make navigation easier in ClientServer mode.- FactTypeNames now showable/hidable by Page.- Improved navigation in Diagram Spy/frmDiagramORM...can now add to Page from Entity Type...FTs from, FTs to, SubtypeRelationships...makes it much easier to navigate the model.- Improved DiagramSpy showing. Now adds SubtypeRelationships.- Baloon Tooltip now in beige colour when shown for a model element on a Page.- Fixed bug in loading NORMA files. RDS view, was creating multiple Columns for a Table with the same name. Made Cloned Column Id being able to be set to new GUID- Fixed RDS Table's Index (PK) modification as it relates to upstream Tables. Especially when an External Uniqueness Constraint is late applied as in when loading a NORMA file.- Fixed bug in adding Column to subtype tables...reflection in supertypes.- Fixed RDS Table's Index (PK) modification as it relates to upstream Tables. Especially when an External Uniqueness Constraint is late applied as in when loading a NORMA file.- Improving importing of NORMA files and RDS Index and Table Column management on changing of Primary Key of downstream ModelElements's RDS Table.- Improvements to NORMA file loading. NORMA files with Errors now catered for.- Implemented a CustomMessageBox to make message boxes more meaningful (more buttons and buttons with more descriptive messages then Yes, No, Cancel etc).- Various fixes to the Database Upgrade process. Now replaces CoreMetaModel on each Database Upgrade.- Improvements to Table Data View toolbox/functionality (from ER Diagram View).- Added loading Value Type Value Constraints when loading a NORMA file.- Introduced shape for acyclic_strongly_intransitive RingConstraint- Implemented image and verbalisations for symmetric_transitive Ring Constraints.- Minor bug fixes.
- Fixed bugs with Frequency Constraints (Instance management and Instance properties).- Fixed bug where Role Value Constraints loading on a Page would erroneously replay the Fact Type to which the Role Value Constraint was ultimately joined.- Added CodeSafe: OrganicComputing: to loading RoleConstraintRoles and where the Argument of the Role can't be found.- Fixed cutting-pasting errors-from one Model to another. Serialisation errors (lists not being serialised etc)- Fixed Copy/Paste Bug - Could not copy/past Fact Type (Instance) with Fact (Instances);
Boston Professional v6.2 Release Notes
Boston Professional v6.2 is a patch release to Boston Professional v6.1Release Date: 30th May 2022
A summary of the main commits follow:- Can now create Property Graph Schema using the Shape Toolbox. Implemented Node Type dropping onto a PGS Page from the Toolbox;- Implemented link creation for Property Graph Schema from within the Property Graph Schema page type;- Implemented conversion of an EntityType to a FactType;- Built Index Manager for use within Property Graph Schema page types. Finalising Conversion of EntityTypes to FactTypes;- Can now add Properties to a PGS Edge Type from the PGS page type;- Can now create PGS pages using the Virtual Analyst;- Implemented Keyword Extractor (beta);- Added functionality to Virtual Analyst. Now can create Internal Uniqueness Constraints for binary Fact Types.- Added some shapes from the Richmond project;- Added extra Organic Computing self-healing functionality;- Implementing Add Property/Attribute for PGS Node Types;- Made Subtype Relationship Identification Path setting more sophisticated;- Sample Populations now instantly reflect errors/removal of errors for UniquenessConstraints;- Index objects now removed form Columns when Index is removed. Reflects in ERD view;- Fixed verbalisation bug for Fact Types (one to many);- Fixed Copy/Paste error when copying just an EntityType without its CompoundReferenceScheme;- Refined Brain FEKL function handling and BroadcastEvents in general;- Fixed numbering bug in SequenceNrs for RoleConstraintRoles in RoleConstraintArguments;- Implementing FEKL Statements in FBM Interface (Client/Server message handling/API);- Implemented FEKL Statements in FBM Interface (Client/Server message handling/API);- Small fix to Entity Type Instance, SetReferenceMode- Added more documentation to the Boston database (within the database);- Refined Broadcast events for RoleConstraints;- Implemented ErrorCode, ErrorMessage and FEKLStatement to the WCF Interface;- Fixed query bug in FactEngine. Certain FactTypeReadings were not being recognised because Objects were being compared rather than Ids of ModelElements;- Fixed My.Settings upgrade problem (assembly to assembly);- Migrated 'Viev' string values in code to 'FactEngine';- Fixed upgrade process (My.Settings not being upgraded) bug in new assembly management regime;- Fixed bug removing FrequencyConstraint from Model. Now removes from Page successfully;- Fixed bugs with Frequency Constraints (Instance management and Instance properties);- Fixed bug where Role Value Constraints loading on a Page would erroneously replay the Fact Type to which the Role Value Constraint was ultimately joined;- Added CodeSafe: OrganicComputing: to loading RoleConstraintRoles and where the Argument of the Role can't be found;- Fixed cutting-pasting errors-From one Model to another. Serialisation errors (lists not being serialised etc);- Fixed Copy/Paste Bug - Could not copy/past Fact Type (Instance) with Fact (Instances);- Main Form [Session]->[Save All] was loading unloaded models. Changed to only saving those Models loaded and dirty.- Stability improvements;- Fixed XML model loading problems.- Minor bug fixes.
Known Issues:--------------------- Role Value Constraints do not show on reloaded pages.- FactEngine doesn't cater for unary fact types in all cases at this stage- Unary Fact Types may not be translated to a boolean attribute/property in the Entity Relationship and Property Graph views in all cases.
Boston Professional v6.4 Release Notes
Boston Professional v6.4 is a patch release to Boston Professional v6.2 (v6.3 release skipped)Release Date: 8th Aug 2022 (Limited Release)
A summary of the main commits follow:
- Implemented Use Case Diagrams;- Implemented Cypher/Neo4j query. FactEngine;- Implemented Neo4J in Boston/FactEngine;- Made improvements to database upgrade process;- Improvements to the AutoComplete functionality in the Virtual Analyst, along with parser improvements for all natural language interfaces to Boston;- Bug fixes based on customer feedback;- Improved the Boston Virtual Analyst parser, and the Parser Generator for all Boston parsers;- Facts added to a Fact Type using the Virtual Analyst show on open Pages containing and instance of that Fact Type;- Implemented Fact creation statement to Virtual Analyst;- Added syntax for Facts to be created using the Virtual Analyst;- Virtual Analyst - Added ability to define Internal Uniqueness Constraints for Objectified Fact Types and/or FactTypes spanning more than one Role;- Added ObjectifiedFactTypeIsIdentifiedByIts clause to Virtual Analyst syntax;- Client/Server Boston Online now supports Subtype Relationship creation;- 1:1 FactTypes as Links in Property Graph Schema view now have no arrow heads;- Fixed Models not being removed from TreeView in the Model Explorer;- Fixes to NORMA .orm file loading;- Fixed AutoLayout bugs ORM Diagram Form;- Fixed NORMA file loading bugs. Was removing Columns for subtypes under certain circumstances as the model loaded;- Added ORM Popup Tool Selector to the ORM diagramming page;- Added search box to the Model Dictionary;- Added new CodeGeneratorUseSquareBracketsTableNames to configuration items;- Minor bug fixes, Code Generator;- Implemented InstanceNumber on ConceptInstances. I.e. Can now have multiple instances of a ModelElementInstance on a Page at the same time. RoleInstances join to the nearest instance;- Implemented Transformations for FactEngine queries;- EntityTypeInstances now show ObjectifyingEntityTypeIndicator image for EntityTypeInstances that are ObjectifyingEntityTypes and where the EntityTypeInstance is visible (i.e. used instead of the corresponding ObjectifiedFactType);- Objectifying Entity Types can now be displayed on a Page and as (especially) when imported from NORMA .orm files;- .fbm XML export can now exclude Core MDA (Model Driven Architecture) model elements from the Model;- Implemented InstanceNumber on ConceptInstances. I.e. Can now have multiple instances of a ModelElementInstance on a Page at the same time. RoleInstances join to the nearest instance;- Improvements to error handling within the DuplexServiceClient processing of messages;- DuplexServiceClient now returning extra error messages for FEQL statements;- Added ModelCreate interface message type the Boston WCF DuplexServiceClient interface;- Minor bug fixes with to Boston WCF DuplexServiceClient interface;- Fixed bugs in DuplexServiceClient message handling. CodeSafe implemented to check that the Model is loaded before performing operations over the Model;- Extended Boston Natural Language API. Better error messages;- Completed frmCRUDEditUnifiedOntology;- Fixed some Boston compiler warnings;- XML stored Models where the XML file no longer exists are now gracefully handled in the Model Explorer, urging removal of the Model from the Model Explorer;- Internal Uniqueness Constraints / Instances that are somehow corrupted are now identified and urged to be removed from the Model and reconstructed. Handling of this type of error is now more graceful;- Implementing Unified Ontology management;- Models stored as XML now have different 'XML Model' icon in Model Explorer if no target database;- Role Paths within Join Paths within Role Constraint Arguments/Sequences now match functionality of NORMA;- Value Types now capable of being declared Independent, when having been referenced within Fact Types. I.e. When the Value Type does play a Role in a Fact Type, though instances of the Value Type may exist independently of the Role they may play;- Impoved morphing, State Transition Diagram to ORM diagram;- Can now create Foreign Key References directly between Entities in Entity Relationship Diagram views;- Refined error message throwing. Users can now turn on Automatic sending of error messages to FactEngine on the error message dialog;- Refined upgrade management of config file and database location finding on upgrade. Error message only if can't find the database after having migrated the config file;- Fixed bugs in State Transition Diagram view. Not allowing links. Saving Model to XML file;- Refined the Taxonomy Tree view;- Updated the User Manual for the new Virtual Analyst statements;- Implemented INCLUDES (Value Type Value Constraint) clause in VAQL for the Virtual Analyst;- Implemented AT LEAST ONE and ANY NUMBER OF in Virtual Analyst Fact Type creation statements;- Can now access the Table Data View directly from within a Property Graph Schema;- Added setting ShowStackTraceFactEngineQuery;- Improved jumping to Vitual Analyst when a Fact Type Reading does not exist in the Model, for a given FactEngine query;- Improvements to Table Data Edit form. Minor bug fixes;- ER Diagram View - Clicking on an Entity that represents a FactType, now shows Fact Type Readings in the ORM Reading Editor;- Refining database synchronisation, especially when creating a Model via a PGS Page;- Removed automatic creation of FT as MDA Model Element in Brain actions- Create FactType;- Bug fix in verbalisation of Many-to-One FactTypeInstance;- Bug fixes in show/hide facility for Fact Types in the ORM diagram view;- Clicking on a Role Name now highlights the Role to which it relates;- Implemented the ability for a Superuser to change a ModelElement to a MDA Model Element, with warning that is only to be done by FactEngine staff;- Added more intelligence around identifying Column Name's in RETURN clauses in FactEngine;- Fixed bug in v6.1 reloading Page that contains Subtype Relationships. Wasn't reloading the Subtype Relationship links;- Fixed bug in v6.1. Opening the Keyword Extraction Tool without having the Model loaded...now loads the Model;- Implemented dashed lines for Link Fact Type based Edge Types in PGS diagrams;- Fixed bug in [Make Many-to-Many Relationship] option for Edge Types;
Boston Professional v6.5 Release Notes
Boston Professional v6.5 is a patch release to Boston Professional v6.4Release Date: 9th October 2022
A summary of the main commits follows:
- Can now configure the URI of the Boston Server;- Object-Type / Model Element names can now have- characters in them;- The Virtual Analyst will now show Auto Complete suggestions for the first word (Model Element) after more than one character has been typed;- Minor bug fixes;- Bug fix- Refreshing Model Dictionary was crashing Boston in v6.4.9- Improvements to the Keyword Extraction toolbox;- Can now merge Models;- URL/IP Address of Boston Server is now configurable (not only port number);- Improvements to the Keyword Extraction toolbox;- Made the port number for Boston Server configurable;- Improvements to natural language FactEngine queries;- Implemented ability to move a Model from one Project to another, when in Client/Server mode;- Added Client/Server general broadcast dialog box;- Added configuration item for default converstion type for General Concepts (Value Type or Entity Type);- Improvements to natural language processing in FactEngine;- Moving to new error reporting regime;- Bug fixes, finding/setting Fact Type Reading Instance on a Fact Type Instance;- Updated Model Fix where Primary Key Columns do not match Preferred Identifier Role count;- Improved working with Objectifying Entity Types on a Page;- Improved managing of Columns for Tables when an Entity Type is a subtype of a Fact Type in the ORM diagram view;- Improved error reporting regime to provide finer detail to the error logging service;- Improved error reporting regime to provide finer detail to the error logging service;- Refinements to the Fact Engine Knowledge Language and handling by the Virtual Analyst in Boston;- New Database location regime on startup. Can now hold down the [Shift] key when starting Boston to select the database;- Can set default Object Type for General Concepts on Fact Type (for that General Concept) to Value Type. Otherwise defaults to Entity Type;- Updates to NORMA .orm file export;
Known Issues:--------------------- FactEngine doesn't cater for unary fact types in all cases at this stage
Boston Professional v6.6 Release Notes
Boston Professional v6.6 is a patch release to Boston Professional v6.5Release Date: 9th January 2023
- Minor bug fixes;- Improving GOAsync in FactEngine;- Introduced String variable type to the Code Generator for managing List of String;- Implemented code changes for Boston/FBM to NORMA .orm file export;- Can now 'log in as...' another user when in Superuser Mode for a User;- Can edit and delete nodes for Neo4j using the Database Table Data toolbox;- Can create new nodes for Neo4j using the Database Table Data toolbox;- Adding ability to create/edit data in Neo4j using the Database Table Data toolbox;- Can now delete Reference/Configuration Tables;- Improvements to natural language transformation in FactEngine;- Improvements to transformations in FactEngine;- Can now upload new Reference Tables, or append to existing Reference Tables/Configuration Tables;- Improvements to storing of DBName for Value Types;- Can now export Reference Table values (configuration items) to XML;- Checking in Model Element Appears on no Page error validator;- Improvements to the FEKL Uploader;- Acronyms can now be used in 'IS AN ENTITY TYPE' type FEKL Statements;- Improvements to FactEngine for Neo4j- Improvements to Natural Language Transformations in FactEngine;- Added FactEngineQueryTransforms configuration item;- Bug fixes in FactEngine for Neo4j;- FEKL Uploader now supports Page creation and adding model elements to a Page;- Released FEKL (FactEngine Knowledge Language) Uploader tool;- Can now configure the URI of the Boston Server;- Object-Type / Model Element names can now have - characters in them;- The Virtual Analyst will now show Auto Complete suggestions for the first word (Model Element) after more than one character has been typed;Known Issues:--------------------- FactEngine doesn't cater for unary fact types in all cases at this stage
Boston Professional v7.0 Release Notes
Boston Professional v7.0 is a patch release to Boston Professional v6.6Release Date: 29th May 2023
- Implemented Model Settings in ReferenceFieldTable/Value tables;- Refining the management of data for Neo4j databases;- Implemented Model Settings in ReferenceFieldTable/Value tables;- Implementing ability to view and add Edges on Edge Types for Neo4j/Graph databases;- Refined how FactInstances are loaded for FactTypeInstance on Pages when XML stored Models load;- Implementing BinarySerialiser for Model serialisation;- Implemented Binary Serialisation/Deserialisation of Models;- Implemented RecordsetProxy to move Boston to SQLite;- Implementing GenericRecordset and SQLiteRecordset classes to move to Boston running over an SQLite database;- Introduced Data Lineage to Boston;- Glossary view improvements;- Fixed DBName property for RDSTable. Was returning empty string in some circumstances;- Created Code Generator template for Data Vault for SQLite. Can be used as a reference for other database types;- Added Properties Table display for Entity Types and Objectified Fact Types on the frmDiagramORM form. i.e. can now see the table/attributes for an Entity Type and Objectified Fact Type from within the ORM diagram view;- Bug Fix: Tidied up DBName for columns in FactEngine SQL queries;- Improved and refined Derived Fact Types, for database table Columns;- Improvements to removing Attributes/Properties from Entities/Node Types. More checking is done to see that the removal of the Attribute/Property will not effect related model elements;- Navigation improvements from within the Model Dictionary;- Improvements to Verbalisations and navigation between Model Dictionary, Diagram Spy and Verbalisation Toolbox;- Introduced Column/Property mismatch error. CMML - Difference between RDS Columns on Table and actual database Columns/Properties;- Made it easier to navigate around the Property Graph schema view. Able to jump to Model Dictionary for Node Type, for example;- Adding Relational.AI Database Connection Manager;- Added error checking to the FEKL Uploader to check that Fact Type Names are not longer than 100 characters;- Navigation improvements on Attributes and Properties to the various toolboxes in Boston;- Added error checker, tErrorChecker140CMMLModelError.vb- Added CMML (Common MetaModel Language) errors to error list;- Column Name creation on import of NORMA file now more in line with Column Names (for Entities) as in NORMA;- Fixed Duplex Service bug when creating a Fact Type using the Virtual Analyst. Had circular broadcast;- Fixed bug where loaded NORMA models, in Client/Server configuration, were not being saved to a model.- Added a new Model Fix Type. ObjectifiedFactTypesWithNoCorrespondingRDSTable;- Can now create PGS and ORM Pages from an ERD Page;- Can now create Entities on an ERD Page from the Toolbox;- FactEngine: Improvements to FEQL for Cypher;- Improvements to ERD drawing on the frmDiagramERD form;- FactEngine: Improvements to the FactEngine parser. Introduction of math functions. Introduction of COUNT(DISTINCT...) type clauses;- FactEngine: Updates to generation of SQL and Cypher;- FactEngine - Improved parser and implemented Math Functions;- Improvements to FEQL. Implementing math functions on/over domains/columns/properties;- Fact Type Readings - Fixed bug where the Fact Type Reading was not showing for Fact Types on Page;- ORMQL Recordset is now an enumerator;- Better error messaging in tableORMReferenceFieldValue, GetReferenceFieldValueTuples;- Update to Wildcard Operators for databases in publicDatabase, getLikeWildcardOperator;- RDSColumn: NodeModifierFunction added to Equals;- FactEngine: FEQL: Improvement to getAndSetFBMFactType in QueryEdge;- FactEngine: FEQL: Implemented Math Function in QueryEdge;- FactEngine: FEQL: Changes to QueryGraph in tune with introduction of the new CountClause (allowing COUNT(DISTINCT...) type queries;- FactEngine: FEQL: QueryNode now inherits from tQueryFormulaToken;- FactEngine: FEQL: Math functions in QueryNode now moved to Formula in QueryEdge;- FactEngine: FEQL parsing. Introduced QueryFormulaToken. QueryNodes can be formula under certain circumnstances;- New FEQL parser classes introduced to Boston;- Small change in tSQLite.vb database manager;- Can now set the data for Foreign Key Relationships through the GUI using the Table Data Toolbox;- Added new error type - 131 - Population contains NULL value error;- Improvements to FactEngine for SQL;- FEQL Parser now includes SUM and AVG modifier functions;- Fact Type Readings for ManyToOneBinaryFactTypes from/to the same Object Type, now have the first Fact Type Reading for the Fact Type with the first Role that with the Internal Uniqueness Constraint;- FactEngine: Implemented MONTH an YEAR modifier functions;- Transitioning 'String...' data types in FEKL to 'Text...' data types. 'String...' syntax is still valid for now. E.g. 'StringFixedLength' when used is converted to the TextFixedLength data type;- FactEngine: Implemented Time, Date, ToLower, ToUpper node modifier functions in FEQL, FactEngine Query Language, parser. Mostly complete for SQL generator;- FactEngine: Standardised code structure for FactEngine for Services;- FactEngine: Improvements to Cypher query generation for FactEngine;- FactEngine: Introduced DATE node modifier to FEQL;- FactEngine: Introduced TODAY function to FEQL/FEKL;- FactEngine: Bug fixes FEQL to Cypher;- Added GPT3 Nl-2-FEQL processing to FactEngine;- Improvements to the FactEngine parser and FactEngine Cypher generation;- Fixed bug in reverse engineering a SQLite database. Single column primary key column names were being truncated to their associated Entity Type Reference Mode;- Multi column filtering on the Table Data Toolbox now available;- Minor bug fixes;Known Issues:--------------------- FactEngine doesn't cater for unary fact types in all cases at this stage
Object-Role Modeling (ORM) is a powerful technique for business analysis and database design that allows for clear communication between stakeholders and helps to ensure that the resulting database accurately represents the requirements of the business.
To provide a blow-by-blow use case of ORM, let's consider a hypothetical project to create a customer relationship management (CRM) system for a small business. The CRM system will need to track customer information, sales opportunities, and customer interactions.
Step 1: Identify Stakeholders and Define Business Requirements
Typically one first identifies the stakeholders and define the business requirements. In this case, the stakeholders might include the business owner, sales staff, customer service representatives, and marketing staff.
To define the business requirements, we would conduct interviews with these stakeholders to understand their needs and workflows. For example, we might learn that the sales staff needs to be able to quickly access customer contact information and sales history, while the customer service representatives need to be able to view customer interactions and quickly resolve issues. During this process we may include all of Step 2, below, and create an ORM Diagram as we conduct workshops with the stakeholders.
Step 2: Develop an ORM Diagram
Once we have a clear understanding of the business requirements, we can begin to develop an ORM diagram. The ORM diagram will provide a visual representation of the objects types, attributes/properties, and relationships that need to be modelled in the database for our CRM system.The wonderful thing about ORM is that we need not decide as to what type of database, graph or relational, that we will use for the system, as ORM is database agnostic.
To develop the ORM diagram, we would start by identifying the key object types in the system. In this case, we might identify objects such as Customer, Sales Opportunity, and Interaction.
Next, we would identify the attributes/properties that are associated with each object. For example, the Customer object type might have attributes such as Name, Address, and Phone Number. The Sales Opportunity object might have attributes such as Sales Stage, Probability, and Expected Close Date.
Finally, we would identify the relationships between the object types. For example, the Customer object type might have a relationship with the Sales Opportunity object type, indicating that a customer can be associated with multiple sales opportunities.
Step 3: Refine the ORM Diagram
After developing the initial ORM diagram, we would refine it based on feedback from stakeholders and further analysis of the business requirements. This might involve adding or removing object types, adding attributes to object types, or modifying relationships between object types.
For example, we might realize that the Interaction object needs to be split into separate objects for Phone Call, Email, and Chat interactions in order to better track customer interactions.
Step 4: Map the ORM Diagram to a Database Schema
Once the ORM diagram has been finalized, we can use it to map the object types, attributes/properties, and relationships to a database schema. This involves defining the tables and columns that will be used to store the data in the database.
For example, the Customer object types might be mapped to a Customers table/node type, with columns/properties for Name, Address, and Phone Number. The Sales Opportunity object might be mapped to a Sales_Opportunities table/node type, with columns/properties for Sales Stage, Probability, and Expected Close Date.
Step 5: Implement the Database Schema
After the database schema has been defined, we can implement it in a database management system (DBMS) such as MySQL, PostgreSQL or Neo4j. This may involve creating the tables and columns in the database, and setting up any necessary indexes or constraints for those database types that have a predefined schema.
Step 6: Test and Refine the Database Schema
Finally, we would test the database schema to ensure that it accurately represents the business requirements and meets the needs of the stakeholders. This might involve creating sample data and running queries to ensure that the data is being stored and retrieved correctly.
If any issues are identified during testing, we would refine the database schema and repeat the testing process until we are confident that the database meets the needs of the business.
To help learn the terminology of Object-Role Modeling when having come from an Entity-Relationship Diagram or Property-Graph Schema background, the following table of terms and their corresponding terminology has been compiled.