Technical Overview
Philosophy & Design Goals
Prepare applications for the next 30 Years
Don't Rewrite. Re-Think, Re-Invent and Re-design
Reproduce the capabilities of Classic.
The "What", not the "How". What it does is similar. How it's done is different.
Implement minimum business rules. Leave the rest to customization.
Design to be agnostic regarding:
Server Location
Operating System and Platform
Existence of ITCs
Technical Architecture
One Database per District per Application
One installation of the software per District
Ready for the "Cloud"
Application Architecture
Modules
Independent Installable Features
Types of Modules:
Infrastructure (database, email)
Behavioral (business logic)
Required
Optional (authentication)
Data Model
Object Oriented
Abstraction of underlying Database tables
Simplifies "tables"
Correctly linked to related objects
Dynamic
Application discovers structure
Reporting Service
Form layout
Custom Fields appear as if part of system
Primary key/Database Id
Automatically assigned by system
Immutable
Random UUID
Used in relationships between objects
Rarely seen in UI
Natural Id
User or Auto assigned identifier
Human-readable reference number
Unique
May be mutable
Not used in relationships
e.g. Vendor.number, PO.number, Disbursement.transactionNumber + physicalCheck.number
Bad Habits caused by Classic
"Miss-using" fields for other purposes
Using identifiers to create semantic meaning:
Vendor number ranges
prefixing transaction numbers with code or Fiscal Year
Caused by Classic (e.g. lack of filtering)
Redesign Solution
Custom Fields can be created to add meaning
Accurate label
Viewable, filterable, reportable
Combined with Rules:
Validation
Custom behavior
Database Transactions
The Classic Problem
If operation fails (due to crash):
USxS transaction can be partial posted
Files left in inconsistent state (out of balance)
Example: Post Purchase Order steps:
Write PO header record
Loop for each PO Item:
Write item record
Update encumbrances on budget
Update encumbrances on appropriation
Update encumbrances on cash
If any of the steps fail, files can be out of balance
Redesign Solution
SQL Databases provide "Transactional Scope"
All operations within scope guaranteed to, either:
Succeed completely (commit)
Fail completely (rollback)
Any error causes rollback:
Duplicate key
Validation error
Security violation
System failure
Security, Permissions and Roles
Each Application has separate User profiles
An "ITC User" must have a profile in each instance
Can be externally authenticated (Windows Domain)
No special privileges assigned to ITC user
Permissions:
Defined by application
Fine-grained operations the software can perform
Not analogous to file level protections or ACL's in Classic
Roles
Set of permissions granted to a role
Defined per district per application
May represent:
Group of users
Job Function
One or more roles granted to Users
Predefined Roles:
ADMINISTRATORS (required)
Classic compatibility: (If imported from Classic)
SYSMAN_USER like OECN_SYSMAN
USAS_MANAGER like OECN_USAS_GM
USAS_REQ like OECN_USAS_REQ
USAS_RO like OECN_USAS_RO
USAS_STANDARD like OECN_USAS
Similar for USPS
Security in Application
In User Interface:
Hides Menu Options
Hides or disables buttons and controls
Application Layer
Services verify users access
If UI inadvertently allows user access, Model protects authorized access
See Authentication and Authorization for additional details.
Transactions, Events, Processing, Listeners & Rules
Understanding Permission Check
If user is authorized to "Create" a Purchase Order, then:
In UI, authorized to:
search and select Vendor's
search and select Expenditure Accounts
In Data Model, authorized to:
Post Encumbrance Ledgers
All side effects caused by Listeners and Rules
3rd Party Integration
SOAP Service
Exists in Preview
Simulates Classic data module
Near 100% compatibility with Classic
Batch Integrations
Most currently missing
Report Engine may be able match most exports
Generic import will be coming
Specific imports/exports based on feedback
Also missing: transfer mechanism
Future: Redesigned based web service (REST instead of SOAP)