EFRONT V4 EXTENSIONS ARCHITECTURE. The goal  To offer more flexibility to 3 rd party users to modify eFront functionality  To further extend eFront.

Slides:



Advertisements
Similar presentations
My EBSCOhost Tutorial Tutorial support.ebsco.com.
Advertisements

Unveiling ProjectWise V8 XM Edition. ProjectWise V8 XM Edition An integrated system of collaboration servers that enable your AEC project teams, your.
PlanetLab Operating System support* *a work in progress.
Lesson 17: Configuring Security Policies
Easy Website Creation Using WordPress Welcome and Thank You to our Sponsors.
Compliance on Demand. Introduction ComplianceKeeper is a web-based Licensing and Learning Management System (LLMS), that allows users to manage all Company,
SOFTWARE PRESENTATION ODMS (OPEN SOURCE DOCUMENT MANAGEMENT SYSTEM)
Academic Advisor: Prof. Ronen Brafman Team Members: Ran Isenberg Mirit Markovich Noa Aharon Alon Furman.
Application Architectures Vijayan Sugumaran Department of DIS Oakland University.
Catania Science Gateway Framework Motivations, architecture, features Catania, 09/06/2014Riccardo Rotondo
Service Broker Lesson 11. Skills Matrix Service Broker Service Broker, provides a solution to common problems with message delivery and consistency that.
SMS Gateway OZEKI NG Document version: v Adding SMS functionality to SysAid.
Definitions Collaboration – working together on team projects and sharing information, often through ad-hoc processes, to accomplish project goals. Document.
Jason Morrill NCOAUG Training Day February, 2008
Portal and AQAS-Philadelphia University 21-22/6/2011 AVCI Platform in PU Dr. Abdel-Rahman Al-Qawasmi Philadelphia University Director of Computer Center.
Introduction: Drupal is a free and open-source content management system (CMS). A content management system(CMS) is a computer program that allows publishing,
242/102/49 0/51/59 181/172/166 Primary colors 248/152/29 PMS 172 PMS 137 PMS 546 PMS /206/ /227/ /129/123 Secondary colors 114/181/204.
ArcGIS Workflow Manager An Introduction
Submitted by: Madeeha Khalid Sana Nisar Ambreen Tabassum.
Trimble Connected Community
Developing Workflows with SharePoint Designer David Coe Application Development Consultant Microsoft Corporation.
ArchForum Presentation The first multilingual, multimedia archeological web forum.
WaveMaker Visual AJAX Studio 4.0 Training Authentication.
What is Drupal? Open Source software written in php. A CMS or content-management system. A sophisticated web application building tool.
9 Chapter Nine Compiled Web Server Programs. 9 Chapter Objectives Learn about Common Gateway Interface (CGI) Create CGI programs that generate dynamic.
Support.ebsco.com My EBSCOhost Tutorial Tutorial.
WordPress Plugin Development A Starter Guide For Beginners.
Chapter 14 Part II: Architectural Adaptation BY: AARON MCKAY.
Computer Emergency Notification System (CENS)
Triggers A Quick Reference and Summary BIT 275. Triggers SQL code permits you to access only one table for an INSERT, UPDATE, or DELETE statement. The.
The Switchvox Extend API
The huge amount of resources available in the Grids, and the necessity to have the most up-to-date experimental software deployed in all the sites within.
IFORM ACCOUNT MAINTENANCE ICT4D SESSION 4. IFORMBUILDER WEBSITE REQUIREMENTS To access the iFormBuilder website, you need the following items: -Reliable.
What’s new in Kentico CMS 5.0 Michal Neuwirth Product Manager Kentico Software.
Module 15 Monitoring SQL Server 2008 R2 with Alerts and Notifications.
Architectural pattern: Interceptor Source: POSA II pp 109 – 140POSA II Environment: developing frameworks that can be extended transparently Recurring.
JIRA usage in the DAQ An overview.
What's New in Kinetic Calendar 2.0 Jack Boespflug Kinetic Data.
GOAL User Interactive Web Interface Update Pages by Club Officers Two Level of Authentication.
What is a Package? A package is an Oracle object, which holds other objects within it. Objects commonly held within a package are procedures, functions,
© 2006 Intland Software1 Aron Gombas Architect, Intland Software Extending & customizing CodeBeamer.
Collections Management Museums EMu New Developments EMu (and beyond!) Alex Fell Technical Operations Manager KE Software.
Registration Solutions for your Event Management.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
Enigma Mutiara Sdn Bhd Computer Based Learning (CBL) HSE Procedures.
INFSO-RI Enabling Grids for E-sciencE ARDA Experiment Dashboard Ricardo Rocha (ARDA – CERN) on behalf of the Dashboard Team.
Oracle Architecture - Structure. Oracle Architecture - Structure The Oracle Server architecture 1. Structures are well-defined objects that store the.
Company LOGO Network Management Architecture By Dr. Shadi Masadeh 1.
Module 6: Administering Reporting Services. Overview Server Administration Performance and Reliability Monitoring Database Administration Security Administration.
Why PACKZ? Innovation No real innovations in pre-press for years Offers new approach using standard open file formats Technology is moving fast, we are.
Research into content management systems List of Options 1. Web Based CMS 2. Database Based 3. Web based solutions.
SQL Triggers, Functions & Stored Procedures Programming Operations.
INFM 700 Project 3 (Aqua) - Akashdeep Ray - Arnaud Lawson - Neha AR - Vidisha Vedvyas.
Interstage BPM v11.2 1Copyright © 2010 FUJITSU LIMITED ADMINISTRATION.
Portal v2.6 Service Pack 1 Update. 2 Portal v2.6 Service Pack 1 6/27/2016 ©2007 GE Fanuc Intelligent Platforms All Rights Reserved Portal v2.6 Service.
Using the My EBSCOhost Folder Tutorial support.ebsco.com.
WEB IVR SMS WAP USSD One Picture to Understand USDP What is USDP … …
API Manager for Vendorlink
CONTENT MANAGEMENT SYSTEM CSIR-NISCAIR, New Delhi
Internet Made Easy! Make sure all your information is always up to date and instantly available to all your clients.
GrubTruck (iOS Food Truck App)
CONTENT MANAGEMENT SYSTEM CSIR-NISCAIR, New Delhi
CONTENT MANAGEMENT SYSTEM CSIR-NISCAIR, New Delhi
Customization Guidelines for BMC Remedy IT Service Management 7.5
Easy Website Creation Using WordPress
INFM 603 Main Class Project
Customization Guidelines for BMC Remedy IT Service Management 7.5
Technical Integration Guide
WEB SERVICES From Chapter 19, Distributed Systems
PHP Forms and Databases.
Presentation transcript:

EFRONT V4 EXTENSIONS ARCHITECTURE

The goal  To offer more flexibility to 3 rd party users to modify eFront functionality  To further extend eFront through modules/plugins and not core extensions  To keep the core eFront as small as possible  To facilitate further development in a faster and robust way  To customize eFront for customers without changing the core

How?  By building on our current modules architecture  By using an extended version of the events system to catch and modify system behavior  By using the experience from the notification layer to create asynchronous events  By building a lot of the new functionality as modules  By re-writing current functionality as modules (depending on the advantages it offers and time needed)  By simplifying the modules creation process

Events  Events are fired on different important happening inside the system  User registration  Lesson acquisition from a user  Lesson completion  User login  …  We can extend this event system to include content fired events  Unit content shown  Right sidebar shown  Footer shown  Header shown  …  The number of events we track will be increased through time BUT how they are treated will be generic  Each event has a unique name (e.g “user_registration”)  Events cannot be disabled  It should be REALLY easy to add new events (we will do so all the time)

Events vs Logs  Events cannot be disabled  Logging can be disabled depending on our needs  Logging saves in database a portion of Events  Logging can and should be implemented as a system plugin

Possible Events

Events_mapping  A central function that maps events with actions  events_mapping is populated from modules during their installation  The events mappings keeps a vector with elements of the type: (event, module->function)  For any event there might be several different functions to call initiated from different modules  An event can be triggered through eFront usage, from the API or at specific dates

Events_mapping

Example 1  Task: A history module that populates the history log by catching a subset of the system events  On installation the module includes hooks for the events we want to retain:  module->map(“user_registration”, module->user_registration())  module->map(“lesson_completion”, module->lesson_completion())  Whenever an event is fired:  eFront will call the events_mapping function  Events_mapping will discover the relative mappings and will call when applicable the related functions: module->user_registration() module->lesson_completion()  some environment variables should be passed to these functions either as parameters or via global variables. This remains to be specified.

Example 2  Task: A content modification module. It adds a copyright background image at each unit’s content  On installation the module includes a hook like:  module->map(“unit_shown”, module->unit_shown())  When a user tries to see a unit, the content of the unit is passed to the module->unit_shown() function where it is modified and is returned to the system

Example 3  Task: A unit-glossary merger  On installation the module includes a hook like:  module->map(“unit_shown”, module->unit_shown())  When a user tries to see a unit, the content of the unit is passed to the module->unit_shown() function where it is modified to include the popup functionality for glossary items and is returned to the system

Example 4  Task: Backup eFront every Sunday  On installation the module includes a hook like:  module->map(“asychronous_(timestamp)”, module->backup())  The timestamp is set from the current time until the first Sunday  We check with asychronous calls on events_mapping the timestamp until they are met.  The module->backup procedure makes a backup, delete the mapped event and creates a new one for the next Sunday.  The module is responsible to check if the action was called at a reasonable moment to make its designed action (in case for example that somehow it was considerably delayed due to server overhead)

Example 5  Task: Send a generic system report every day  On installation the module includes a hook like:  module->map(“asynchronous_(timestamp)”, module->report())  The timestamp is set from the current time until the next day  We check with asynchronous calls on events_mapping the timestamp until its time has come.  The module->report function creates and sends the report to a few users it specifies (e.g, admins). It also deletes the old event and creates a new one with a new timestamp.  Again, the module is responsible to check if the action was called at a reasonable moment to make its designed action (in case for example that somehow it was considerably delayed due to server overhead)

Example 6  Task: How to avoid “bad-words” on forum  On installation the module includes a hook like:  module->map(“forum_post_creation”, module->modify_post())  When a post is created it passes from the modify_post() function which checks and modify its content depending on a user-created list of bad- words  This module needs also an administration interface to manage the “bad words” list

Modules initiate a mapping with events

eFront activity can trigger modules functions

Time events can trigger asynchronous function calls

API extensions[1]  Our external API includes ~15 functions that represent ~0.001% of eFront functionality  One way to remedy this situation is to extend the API with new functionality  Which will increase eFront’s core size considerably  Another way to do it is to build a gateway between the API and modules through the event system  The benefit is that the module is not part of the core  Other users can create additional modules to communicate with the API and do various tasks

API extensions[2]  For this method to work we need to create a module that would initiate its own event(s)  E.g module->map(“api_logout”,module->logout())  The only way for this event to be called is through the API  E.g., uvXlLbwjjNXNf7XHMJh2DfBEe&login=john  For a non-identified action the API will:  Check the token  Call the events_mapping to see if there are modules that want to activate this event

Considerations  How to efficiently build on current infrastructure  How to make it very easy to use  How to make it as generic as possible  How to enforce new functionality based on this infrastructure from the development team  We need to publish the system API in a more systematic way  Security

Events list  page_startup  Is called before a page starts  page_shutdown  Is called before the page dies