Architecture 2005-09-03 Frank Bergmann

19
Architecture 2005-09-03 Frank Bergmann <[email protected]>

description

Architecture 2005-09-03 Frank Bergmann . Content. The Big Picture GUI Structure Component Architecture Component Use Overview Component Conventions Localization Permission Model Customization Concept Application Lifecycle Customization Options (1) - PowerPoint PPT Presentation

Transcript of Architecture 2005-09-03 Frank Bergmann

Page 1: Architecture 2005-09-03 Frank Bergmann

Architecture2005-09-03

Frank Bergmann <[email protected]>

Page 2: Architecture 2005-09-03 Frank Bergmann

Content

The Big Picture GUI Structure Component Architecture

– Component Use Overview– Component Conventions

Localization Permission Model Customization Concept

– Application Lifecycle– Customization Options (1)– Customization Options (2)

Page 3: Architecture 2005-09-03 Frank Bergmann

Basics & Roadmap

]project-open[ is a web-based“Project-ERP”.

It combines project collaboration (content & community ) with financial and management functionality (costs, invoicing, accounting, …)

]project-open[ is based on the OpenACS (Open ArsDigita Community System) platform.

Most ]project-open[ modules are free or GPLed, except for specific customer functionality

P/O Open-ACS Database

Date

V 1.0 ACS 3.4.9 Oracle 8i (8.1.7)

11/2003

V 2.0 OpenACS 5.0 8i 3/2004

V 3.0 OpenACS 5.1 8i, 9i,Postgres

10/2004

Platfrom Roadmap: V1.0 and V2.0 depended on Oracle, but V3.0 features PostgreSQL as a free

database.

Page 4: Architecture 2005-09-03 Frank Bergmann

Base GUI Structure

Main PageswithBusinessObjects

“ListPages”with filters

New/Edit Pages

Projects

Home

News

TicketsClients

ProjectCalendar

Details

Project

Team

Tickets

Costs

FileSpace

Tasks

Details

Client

Interact

Tickets

Projects

CustomerInteraction

History

Team

Costs

Invoice

ClientDetails

Corp.Details

BillableTasks

Ticket

DetailsAssign

toothers

TicketHistory

User

Details

Profiles

Tickets

Projects Clients

Portrait

Interactions

Filters

ProjectList

Links Filters

ClientList

Links Filters

InvoiceList

Links Filters

UserList

Links Filters

TicketList

Links

Details DetailsDetailsDetailsDetails

Admin-Pages

Page 5: Architecture 2005-09-03 Frank Bergmann

P/O Core Data Model

UserContact

parent_project

customer

Project

office

Customer

country

Office

project

url

ProjectUrlMap

Object

BizObject

Group

Category

View

UrlType

BizObject

view

ViewColumn

ProfileCurrency

CountryComponentPlu

gin

Object

Menu

Infrastructure

Business Objects

Organization

Customer physical location

User

object_one

object_two

Rel (OACS)

BizObject

BizObjectSuperclass of all biz objects. Manages permissions using acs_rel with users.

object_type

object_status

Page 6: Architecture 2005-09-03 Frank Bergmann

Component Architecture

Home Project Client Invoice TicketUser

ProjectComponents

-Project List -ViewPage-ListPage-New/Edit

-View: Project List (short)

-New: Project List-List: Filter-View: Renderer-Print: Renderer

-Project List -Project Select-Project Render

-Client List -List: Renderer-List: Filter

-Project List -Project/Task List-Project Filter

-Project List -Project Select-Render CompClient

Components

UserComponents

InvoiceComponents

- View: Invoice List

-View Page-List Page-New/Edit

TicketComponents

-View Page-List Page-New/Edit

-View Page-List Page-New/Edit

Permissions-View: Perm+Estim

-View: Key Accounts (perm)-View: Customer employees (perm)

- . . .

- . . .- . . .

- . . .

- . . .- . . .

- . . .

- . . .

- . . . - . . .

- . . .

- . . . - . . .

- . . . - . . . - . . .

- . . .

- . . .

Component Use Overview

Page 7: Architecture 2005-09-03 Frank Bergmann

Component Architecture

(GUI-) Components are used to render lists of objects, to render individual objects (in various variations) and to “filter” objects (restrict the elements of a SQL “where” clause).

These components have to deal with all important functions such as permissions, localization and design templates.

HTML pages are used to validate input variables, generate the page layout, and to “wire” the GUI-components together (glue-code).

Component Conventions

Page 8: Architecture 2005-09-03 Frank Bergmann

SoftwareDevelopment

Templates

Trans-lation

CRMFinance

Controlling

HR

System

Collaboration,Content & KM

OOFrame Security

Calendar

OpenACSPermission

Web Server

Database

FinanceBase

Payroll

Skill Database

Filestorage

OnlineDiscussions

IncidentWorkflow

BasicAuthentication

LDAPAuthentication

WorkflowEngine

Chat

PackageManager

AutomaticSoftwareUpdates

PostgreSQL Oracle 8i, 9i, 10g

PageContracts

SQLTemplates

OO Model

ObjectMetadata

LocalizationFramework

ContactMgmt.

ReportingEngine

Wiki

Oracle Intermedia/TextTSearch2

Linux Solaris BSDWindows+ CygWin

Mac OSOperating

System

SearchEngine

AOLServer PoundRevers Proxy

DynField Object Extensions

PlatformServices

Profiling & Performance

DebuggingSystem

ApplicationModules

FormBuilder

Portal &Components

Mail ServerIntegration

ContentManagement

ApplicationServices

DB-APITCL

Quotes &Invoice

Payments

FinancialReporting

Mail ServerIntegration

CustomerWeb Reg.

MarketingCampaigns

CRMTracking

AutomaticAudits

ISDN TelIntegration

ProjectMgmt.Project &Subprojects

ProjectControlling

TranslationWorkflow

TMIntegration

FreelanceInvoicing

TimesheetInvoicing

AvailableDocumentation

TimesheetMgmt. AutomaticInvoicing

]po[ Overview

FinanceGuide

Unix InstallGuide

OpenACSInst. Guide

Operations& Maint.Guide

OpenACSDeveloper

Guide

ConfigurationGuide

FilestorageGuide

ForumGuide

TranslationWorkflow

Guide

Full-TextSearch

AutomaticTesting

BigBrotherSys Mgmt.

OtherRoomReservation

E-Commerce

CMS

WebDAV

SOAP &XML-RPC

Surveys

GlossaryWeb-Mail

Blog

RecruitingWorkflow

CVS

Postfix/Sendmail

Database Replication

MondrianData-

Warehouse

Page 9: Architecture 2005-09-03 Frank Bergmann

Localization

All numbers, currency amounts, dates, times and physical locations are rendered as a function of the chosen user locale

All currency amounts are preceded by a currency identifier. A system currency determines the default.

All static text used in pages and components is translated before rendering the HTML page. An English text in the target location is used as a default value in case of incomplete translations. The translation interface also specifies the target location to provide a context for translators.

Dynamic text (names and descriptions ob business objects) are not translated.

Future versions of ]project-open[ may contain accounting modules specific for individual countries.

Page 10: Architecture 2005-09-03 Frank Bergmann

Permission Model

Permissions are divided into profile-based permissions and role-based permissions

Profile-based permissions– Restrict the visibility of pages and modules to a user– Are modified as part of system administration– API: im_permission(user_id, token): Validates that a user

has access rights to the permission token. Role-based permissions

– Restrict the access to business objects (currently “Project” and “Client”)

– Permissions can be modified by the creators of the respective objects, to configure project/client team.

– API: im_has_role(user_id, object_id, role): Validates that a user has been assigned the specifc role.

– Roles are ordered hierarchically (administrator -> member -> specific_roles).

Page 11: Architecture 2005-09-03 Frank Bergmann

Profile Based Permissions

Predefined Profiles:– Manager– Project Manager– Employee– Finance– Client– Freelance

Access permissions to all critical data can be assigned to profiles

Additional profiles can be defined if necessary

GeneralManager

ProjectMan.

ProjectMan.

SalesManager

OperationsManager

ProjectA

ProjectB

ProjectDirector

Project Man.

ProjectC

GeneralManager

Proj.Man.

Manager

Our Company(Project Matrix) Client

Client Staff

Provider

Freelance Free

lanceFreelance

Finance

Managers

Freelancers

Project Managers

Clients

Finance

Employees

„Vertical“ Permissions

Page 12: Architecture 2005-09-03 Frank Bergmann

Project Based Permissions

Within a specific project, freelancers and clients may have the same rights as in-house staff. Freelancers may even have to act as project managers.

Predefined roles:– Sales/Presales– Project Manager– Analyst, Developer,

Tester, ... (IT-Consulting)

– Editor, Translator, Proof Reader, ... (Translation)

– Texter, Designer, ... (Advertizing)

GeneralManager

ProjectMan.

ProjectMan.

SalesManager

OperationsManager Finance

ProjectA

ProjectB

ProjectDirector

Project Man.

ProjectC

GeneralManager

Proj.Man.

Manager

Our Company(Project Matrix) Client

Client Staff

Provider

FreelanceFree

lanceFreelance

EditorEditors

Translators

Translators

ProjectManager

Page 13: Architecture 2005-09-03 Frank Bergmann

Opera- tions

Application Lifecycle

ERP applications are not a static systems, but need to evolve continually with changes in the business processes of the client (customizations)

ERP applications need to integrate/communicate with other corporate applications

ERP applications have life-cycles of 5-20 years The challenge is to maintain customizations when

upgrading to the next release.

Capture Require- ments

Install Configu- ration

Data Import

Customi- zation

Initial Implementation

Opera- tions

Capture Require- ments

Install Data Conver- sion

Upgrade

Customi- zation

Insta

llati

on

Reti

rem

en

t

Upgrade

Page 14: Architecture 2005-09-03 Frank Bergmann

K-Profiles

K-Mart

Report-ing

Extensible Architecture

A central core allows for extensions with different application modules

Different industry sectors need different configurations and modules

Customizations should be portable to the next version as easily as possible.

CRM

CallCenter

Sales force Mgmt

ProjectMgmtSupport

Mgmt

HR

ProjectReporting

KM

Projects

UsersClients

Invoices

Expenses

Account-ing

InventoryMgmt

Recruiting

Perf.-Reviews

Report-Generator

……

IT/Consulting Engineering TranslationAdvertizing

Page 15: Architecture 2005-09-03 Frank Bergmann

Extensible Architecture

Not all modules are useful for all sectors

Some modules are different for every sector (for exampleinvoicing)

Some of these modulesmay exist in several variants specific foreach sector.

The Module architecture has to deal with the interdependencies between each other and over time.

Presales * * * * * (*) (*)Project Collaboration * * * * * * *Project File Sharing * * * * * * *Customer Management * * * * * * *Emplyee Management * * * * * * *Timesheet * * * * * * *Travel Costs * * * * * * *Project Reporting * * * * * * *Support Management * * * * * * *Recruiting * * * * * *Invoicing + + + + +CRM light' * * * * *

*=applicable, (*)=maybe applicable, +=customized modules

Page 16: Architecture 2005-09-03 Frank Bergmann

Customizable Items

GUI– Home-Page (module-specific status boxes)– The main menu– Submenus of business objects– Views of biz objects (Project, Client, User, …)

Categories (=workflow states and types)– Object status categories– Object type categories

Data Model– Add columns to existing BizObj tables (system modules)– BizObj extension tables (sectorial configuration modules)

TCL Libraries Permission Model

– Add new permission tokens– New system roles– New Object/Group specific roles

How can additional module change the “core”?

Page 17: Architecture 2005-09-03 Frank Bergmann

Customization (1)

1. Configurable Customization (100% preservation)The system has been designed for the particular customizations. The customization involves changes in the configuration file and/or database contents.

Future version of ]project-open[ maintain compatibility with these configurable options, possibly extending them.

2. Business Object Extensions (90% preservation)Business Object database tables can be extended to hold additional fields via the "DynField" SQL Metadata system. These extensions are not replaced during a system upgrade. Rendering of the fields is handled automatically by components in a new library.

Future version of ]project-open[ must not overwrite the extension tables. The client will have to integrate the modified components into the new View/List/Edit pages.

Page 18: Architecture 2005-09-03 Frank Bergmann

Customization (2)

3. New Custom Modules (80% preservation)The user may add new modules to the system, including their own data model and components.

Future version of ]project-open[ will not take into account the compatibility with custom modules.However, it is likely that the integration of the new modules with the new version will be easy to manage.

4. Custom Extensions (50% preservation)In some cases the client wants to modify the core business objects or component libraries.

Future version of ]project-open[ will not take into account the compatibility with custom extensions.That means that the client will have to port the extensions to the new version.

Page 19: Architecture 2005-09-03 Frank Bergmann

Participate!

Build _useful_ software We teach you how to build real software

– Learn about high-performance server applications– See why Java doesn’t work for _real_ software– Learn basics of SQL and Database Management– We have prepared some exercises that guide you through

the process – Learn how to keep a web application running

Choose a module to concentrate Study some background material and become an expert Design a user-friendly GUIs and a solid data model

Being a leading developer with your module, clients will ask for your experience