System Architecture Overview
CostOS 8 is a multi tier client server application supporting both a thick and a thin client application. On the database tier it runs on top of a Filestream enabled SQL Server Database. The other 2 main components are:
- CostOS Workstation
- CostOS Enterprise Server
Additionally CostOS provides Application Programming Interfaces (APIs) and SDKs in different tiers of the application so that core calculation or view only functionality can be accessed as required by external tools.CostOS Workstation
CostOS Workstation is the main CostOS Desktop Application developed mainly using Java Desktop and some HTML/CSS interop Technologies. It provides a User Interface for doing all estimating user tasks available within the application. Additionally it is the place holder for many business logic actions that exists into the application like project recalculation, assembly design and execution, BIM/GIS takeoffs, project variables design and execution, import/export modules etc.
Workstation users are authenticated by communicating with the CostOS Enterprise Server that additionally authorizes any actions that need to be performed directly to the database using SQL. Many workstation users can connect and work at the same data set at the same time. Any changes that a user makes has to be visible and easily indentified by all other users that work on the same project or data set. CostOS utilizes the JMS (Java Messaging Service) technology to get information about what is happening to a certain project, resource, estimate item takeoff model or any other data set. A JMS user session is authorized again by the CostOS Enterprise Server and it binds directly to the current user interface so that any changes made by other users are visualized instantly into the workstation.
The Project Recalculation BUS is triggered after an event is made that requires a new aggregation to take place. It will identify what are those projects that need to be updated, update them and inform the workstations or the web applications about the changes performed.
The User Action Logging on the other side will insert action information to the database that contains:
- Username
- Datetime
- Description of Action
- CRUD Operation Type
- Information about what Tables where Updated
- Group in Action Group
- Filtering Criteria Data
All Action Logs are then available to the application or project administrators to track changes made by users, or try to revert the history of a specific object.
CostOS Enterprise Server
The CostOS Enterprise Server (CES) is a Java Enterprise Edition (JEE) application that runs on a JEE Application Server (curently the opensource TomEE/Tomcat Enterprise Edition). The main components of the CostOS Enterpise Server are currently:
CostOS Explore
A web based application that provides a web user interface. With interfaces to:
- Global User Management (Roles, Groups, Sessions)
- Active Directory/LDAP integration Management
- Project Viewer with views for EPS, BOQs with Resources, Project Variables, BIM & GIS Models, Worksheets etc
- Dashboard Viewer
- Action History Viewer
CostOS Server
All server side components that manage the back end of the application. Components include:
- User Management / Session Management
- Authorization & Authentication of all services
- Message Driven Project Recalculation
- Centralized Asynchronous Action Logging
- Configurable Time Driven Business Logic Actions for:
- Archiving actions & user logs
- Live user session checking
- Maintenance Tasks for BIM files
- Etc.
The main web based front technologies involved on CostOS Explore are:
- HTML5/CSS & Javascript
- JQuery
- Vaadin
- Websockets over JMS using the Atmosphere Framework
The main technologies that we utilize on the server side are mainly managed from the Spring Framework and they include:
- RESTful / JSON APIs
- Struts2 MVC / Java Servlets and JSPs
- JEE Stateless Session Beans & Entity Bean APIs (using the EJBD protocol)
- JMS using ActiveMQ that is embedded to TomEE
- JAAS Java Authentication and Authorization API
- JMX / Message Driven Beans
- Hibernate Object Relational Mapping (ORM) Framework
- Other Spring Framework extensions for Security, DAO, EJB, Quartz, JMS, Transaction Management, Web Services, REST etc
CostOS SQL Server
CostOS Server and Workstation both run on top of an SQL Server Instance. The SQL Server Instance must have the FILESTREAM feature enabled to support the storage of files as non-transaction blocking blobs and perform faster when reading and writing to server side files like Excel, BIM, CAD etc.
We currently use 1 Master database and a minimal of 1 Projects Database per CostOS Server instance.
The Master Database is were we store information about:
- Global Program Settings (UoM, Currencies etc)
- Global User Settings & Roles Settings
- Global Projects Settings
- Enterpise Project Structure
- Project/SubProject and What-IF General Information (without any data)
- Master Resources Database Tables
- Master Group Codes Database Tables
- Master Assemblies Database Tables
- Master Layouts Database Tables
- Master Project Variables Database Tables
- Master Column Customization Database Tables
- Master Worksheets Database Tables
- Master Documents/Images/Files Tables
- BIM Model Structure, Element & Properties & Files Information
- Centralized User & Action Logging
- Master Database Triggers & Views
- Etc.
The Project Database is were we store information about projects. All tables contain a ProjectID that refers to the Master Database Project ID so that it is very fast to access and join information between the two (or more?) databases. Project Database Information include:
- Project User Settings, Views & Layouts, Roles
- BOQ Database with Resources
- Project Assemblies used in Projects
- Project Variables used in Projects
- Worksheets used in Projects
- Quotations used in Projects
- Takeoffs used in Projects
- Work Break Down Structures (WBS)
- Triggers
- Views used for BI
- Etc.
External Databases & Applications
CostOS 8 provides many methods for integrating with external tools applications and databases:
- CostOS API: This is a REST/JSON API available from the CostOS Enterprise Server. It can be used to access information that exists in projects and the eps structure.
- CostOS Plugin SDK: Java Programmers can use this SDK to develop a Plugin that runs inside CostOS Workstation. A wide range of functions is available for accessing and setting project data. Examples of such plugins are the CostOS 2D Takeoff Tool that run on C# and other customer specific plugins like SAIPEM, DEME, Tecnimont and DEPA plugins.
- SQL Views: CostOS contains some views that allow BI professional to easily identify and access project data.
- Jasper Reports: CostOS Workstation provides a User Interface that anyone can use to upload his Custom Reports in JRXML format. These Reports can run directly from a CostOS Project and show results instantly.
- Jasper Server Reports: CostOS has the ability to connect to any Jasper Server and run a parametric report easily from there.
- Project Planning: CostOS has the ability to connect to a Primavera EPPM P6 server and push estimating project data to project planning.
- Resource Databases: CostOS provides a subscription based service to connect to a range of Cloud Resource Databases like: BCIS, Richardson, RS Means, Ostrakon etc. Additonally a Resource Database Connector is availble within the Workstation Application that allows a user to map
resources from any external DBMS like SQL Server, Oracle, MySQL, DB2 etc.
- Import/Export: A wide range of import and export formats is available in different levels and data sets of the application like:
- Microsoft Excel (import/export)
- Microsoft Project (import/export)
- EBQ file format (import/export)
- XML format (import/export)
- PDF (import drawings/export)
- CANDY text file format (import)
- IFC (import/export)
- DWG, RVT, DWFx, DXF, DGN, IDGN, IMODEL, PDF (import)