Please read


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Please read

  1. 1. Architecture 2005-09-03 Frank Bergmann <>
  2. 2. Content <ul><li>The Big Picture </li></ul><ul><li>GUI Structure </li></ul><ul><li>Component Architecture </li></ul><ul><ul><li>Component Use Overview </li></ul></ul><ul><ul><li>Component Conventions </li></ul></ul><ul><li>Localization </li></ul><ul><li>Permission Model </li></ul><ul><li>Customization Concept </li></ul><ul><ul><li>Application Lifecycle </li></ul></ul><ul><ul><li>Customization Options (1) </li></ul></ul><ul><ul><li>Customization Options (2) </li></ul></ul>
  3. 3. Basics & Roadmap <ul><li>] project-open [ is a web-based “Project-ERP”. </li></ul><ul><li>It combines project collaboration (content & community ) with financial and management functionality (costs, invoicing, accounting, …) </li></ul><ul><li>] project-open [ is based on the OpenACS (Open ArsDigita Community System) platform. </li></ul><ul><li>Most ] project-open [ modules are free or GPLed, except for specific customer functionality </li></ul>Platfrom Roadmap: V1.0 and V2.0 depended on Oracle, but V3.0 features PostgreSQL as a free database. 8i, 9i, Postgres 8i Oracle 8i (8.1.7) Data base OpenACS 5.1 OpenACS 5.0 ACS 3.4.9 Open-ACS V 3.0 V 2.0 V 1.0 P/O 10/2004 3/2004 11/2003 Date
  4. 4. Base GUI Structure <ul><li>Main Pages with Business Objects </li></ul><ul><li>“ ListPages” with filters </li></ul><ul><li>New/Edit Pages </li></ul>Projects Home News Tickets Clients Project Calendar Details Project Team Tickets Costs File Space Tasks Details Client Interact Tickets Projects Customer Interaction History Team Costs Invoice Client Details Corp. Details Billable Tasks Ticket Details Assign to others Ticket History User Details Profiles Tickets Projects Clients Portrait Interactions Filters Project List Links Filters Client List Links Filters Invoice List Links Filters User List Links Filters Ticket List Links Details Details Details Details Details Admin-Pages
  5. 5. P/O Core Data Model country Office Object BizObject Group BizObject Object Infrastructure Business Objects Organization Customer physical location User BizObject UserContact parent_project customer Project office Customer project url ProjectUrlMap Category View UrlType view ViewColumn Profile Currency Country ComponentPlugin Menu object_one object_two Rel (OACS) BizObject Superclass of all biz objects. Manages permissions using acs_rel with users. object_type object_status
  6. 6. Component Architecture Home Project Client Invoice Ticket User Project Components -Project List <ul><li>-ViewPage </li></ul><ul><li>ListPage </li></ul><ul><li>New/Edit </li></ul>-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 Comp Client Components User Components Invoice Components - View: Invoice List <ul><li>View Page </li></ul><ul><li>List Page </li></ul><ul><li>New/Edit </li></ul>Ticket Components <ul><li>View Page </li></ul><ul><li>List Page </li></ul><ul><li>New/Edit </li></ul><ul><li>View Page </li></ul><ul><li>List Page </li></ul><ul><li>New/Edit </li></ul>Permissions -View: Perm+Estim -View: Key Accounts (perm) -View: Customer employees (perm) - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . - . . . Component Use Overview
  7. 7. Component Architecture <ul><li>(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). </li></ul><ul><li>These components have to deal with all important functions such as permissions, localization and design templates. </li></ul><ul><li>HTML pages are used to validate input variables, generate the page layout, and to “wire” the GUI-components together (glue-code). </li></ul>Component Conventions
  8. 8. ] po [ Overview SoftwareDevelopment Templates Trans-lation CRM Finance 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 Localization Framework ContactMgmt. ReportingEngine Wiki Oracle Intermedia/Text TSearch2 Linux Solaris BSD Windows + CygWin Mac OS Operating System Search Engine AOLServer Pound Revers Proxy DynField Object Extensions Platform Services Profiling & Performance DebuggingSystem Application Modules FormBuilder Portal &Components Mail ServerIntegration ContentManagement Application Services DB-API TCL Quotes &Invoice Payments FinancialReporting Mail ServerIntegration CustomerWeb Reg. MarketingCampaigns CRMTracking AutomaticAudits ISDN TelIntegration ProjectMgmt. Project &Subprojects ProjectControlling TranslationWorkflow TMIntegration FreelanceInvoicing TimesheetInvoicing Available Documentation TimesheetMgmt. AutomaticInvoicing FinanceGuide Unix InstallGuide OpenACSInst. Guide Operations& Maint.Guide OpenACSDeveloperGuide ConfigurationGuide FilestorageGuide ForumGuide TranslationWorkflowGuide Full-TextSearch Automatic Testing BigBrother Sys Mgmt. Other Room Reservation E- Commerce CMS WebDAV SOAP & XML-RPC Surveys Glossary Web-Mail Blog Recruiting Workflow CVS Postfix / Sendmail Database Replication Mondrian Data- Warehouse
  9. 9. Localization <ul><li>All numbers, currency amounts, dates, times and physical locations are rendered as a function of the chosen user locale </li></ul><ul><li>All currency amounts are preceded by a currency identifier. A system currency determines the default. </li></ul><ul><li>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. </li></ul><ul><li>Dynamic text (names and descriptions ob business objects) are not translated. </li></ul><ul><li>Future versions of ] project-open [ may contain accounting modules specific for individual countries. </li></ul>
  10. 10. Permission Model <ul><li>Permissions are divided into profile-based permissions and role-based permissions </li></ul><ul><li>Profile-based permissions </li></ul><ul><ul><li>Restrict the visibility of pages and modules to a user </li></ul></ul><ul><ul><li>Are modified as part of system administration </li></ul></ul><ul><ul><li>API: im_permission(user_id, token) : Validates that a user has access rights to the permission token. </li></ul></ul><ul><li>Role-based permissions </li></ul><ul><ul><li>Restrict the access to business objects (currently “Project” and “Client”) </li></ul></ul><ul><ul><li>Permissions can be modified by the creators of the respective objects, to configure project/client team. </li></ul></ul><ul><ul><li>API: im_has_role(user_id, object_id, role) : Validates that a user has been assigned the specifc role. </li></ul></ul><ul><ul><li>Roles are ordered hierarchically (administrator -> member -> specific_roles). </li></ul></ul>
  11. 11. Profile Based Permissions <ul><li>Predefined Profiles: </li></ul><ul><ul><li>Manager </li></ul></ul><ul><ul><li>Project Manager </li></ul></ul><ul><ul><li>Employee </li></ul></ul><ul><ul><li>Finance </li></ul></ul><ul><ul><li>Client </li></ul></ul><ul><ul><li>Freelance </li></ul></ul><ul><li>Access permissions to all critical data can be assigned to profiles </li></ul><ul><li>Additional profiles can be defined if necessary </li></ul>Project A Project B Project C Our Company (Project Matrix) Client Provider Managers Freelancers Project Managers Clients Finance Employees „ Vertical“ Permissions General Manager Project Man. Project Man. Sales Manager Operations Manager Project Director Project Man. General Manager Proj. Man. Manager Client Staff Free lance Free lance Free lance Finance
  12. 12. Project Based Permissions <ul><li>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. </li></ul><ul><li>Predefined roles : </li></ul><ul><ul><li>Sales/Presales </li></ul></ul><ul><ul><li>Project Manager </li></ul></ul><ul><ul><li>Analyst, Developer, Tester, ... (IT-Consulting) </li></ul></ul><ul><ul><li>Editor, Translator, Proof Reader, ... (Translation) </li></ul></ul><ul><ul><li>Texter, Designer, ... (Advertizing) </li></ul></ul>Project A Project B Project C Our Company (Project Matrix) Client Provider Editor Editors Translators Translators Project Manager General Manager Project Man. Project Man. Sales Manager Operations Manager Finance Project Director Project Man. General Manager Proj. Man. Manager Client Staff Free lance Free lance Free lance
  13. 13. Application Lifecycle <ul><li>ERP applications are not a static systems, but need to evolve continually with changes in the business processes of the client (customizations) </li></ul><ul><li>ERP applications need to integrate/communicate with other corporate applications </li></ul><ul><li>ERP applications have life-cycles of 5-20 years </li></ul><ul><li>The challenge is to maintain customizations when upgrading to the next release. </li></ul>Capture Require- ments Install Configu- ration Data Import Customi- zation Initial Implementation Capture Require- ments Install Data Conver- sion Upgrade Customi- zation Installation Retirement Upgrade Opera- tions Opera- tions
  14. 14. Extensible Architecture <ul><li>A central core allows for extensions with different application modules </li></ul><ul><li>Different industry sectors need different configurations and modules </li></ul><ul><li>Customizations should be portable to the next version as easily as possible. </li></ul>… CRM Call Center Sales force Mgmt Project Mgmt Support Mgmt HR Project Reporting KM Projects Users Clients Invoices Expenses Account- ing Inventory Mgmt Recruit ing Perf.- Reviews Report- Generator … … … … … … … … IT/Consulting Engineering Translation Advertizing K- Profiles K- Mart Report- ing
  15. 15. Extensible Architecture <ul><li>Not all modules are useful for all sectors </li></ul><ul><li>Some modules are different for every sector (for example invoicing) </li></ul><ul><li>Some of these modules may exist in several variants specific for each sector. </li></ul><ul><li>The Module architecture has to deal with the interdependencies between each other and over time. </li></ul>* =applicable, (*) =maybe applicable, + =customized modules
  16. 16. Customizable Items <ul><li>GUI </li></ul><ul><ul><li>Home-Page (module-specific status boxes) </li></ul></ul><ul><ul><li>The main menu </li></ul></ul><ul><ul><li>Submenus of business objects </li></ul></ul><ul><ul><li>Views of biz objects (Project, Client, User, …) </li></ul></ul><ul><li>Categories (=workflow states and types) </li></ul><ul><ul><li>Object status categories </li></ul></ul><ul><ul><li>Object type categories </li></ul></ul><ul><li>Data Model </li></ul><ul><ul><li>Add columns to existing BizObj tables (system modules) </li></ul></ul><ul><ul><li>BizObj extension tables (sectorial configuration modules) </li></ul></ul><ul><li>TCL Libraries </li></ul><ul><li>Permission Model </li></ul><ul><ul><li>Add new permission tokens </li></ul></ul><ul><ul><li>New system roles </li></ul></ul><ul><ul><li>New Object/Group specific roles </li></ul></ul><ul><ul><li>How can additional module change the “core”? </li></ul></ul>
  17. 17. Customization (1) <ul><li>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. </li></ul><ul><li>Future version of ] project-open [ maintain compatibility with these configurable options, possibly extending them. </li></ul><ul><li>Business Object Extensions (90% preservation) Business Object database tables can be extended to hold additional fields via the &quot;DynField&quot; 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. </li></ul><ul><li>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. </li></ul>
  18. 18. Customization (2) <ul><li>New Custom Modules (80% preservation) The user may add new modules to the system, including their own data model and components. </li></ul><ul><li>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. </li></ul><ul><li>Custom Extensions (50% preservation) In some cases the client wants to modify the core business objects or component libraries. </li></ul><ul><li>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. </li></ul>
  19. 19. Participate! <ul><li>Build _useful_ software </li></ul><ul><li>We teach you how to build real software </li></ul><ul><ul><li>Learn about high-performance server applications </li></ul></ul><ul><ul><li>See why Java doesn’t work for _real_ software </li></ul></ul><ul><ul><li>Learn basics of SQL and Database Management </li></ul></ul><ul><ul><li>We have prepared some exercises that guide you through the process </li></ul></ul><ul><ul><li>Learn how to keep a web application running </li></ul></ul><ul><li>Choose a module to concentrate </li></ul><ul><li>Study some background material and become an expert </li></ul><ul><li>Design a user-friendly GUIs and a solid data model </li></ul><ul><li>Being a leading developer with your module, clients will ask for your experience </li></ul>