Archive by Author

City of Denver Makes Strategic Technology Investment in Open Source

We have been working hand in hand with the City of Denver for over 15 months to help them streamline their content management applications and business processes – see our recent customer case study. Denver, like many cities (and businesses) had invested in a number of different technologies that were hard to manage, too rigid and expensive to maintain.

We worked closely with Denver to help maximize their investments, identifying strategic technology purchases and planning their integration with existing technologies. To date, the City’s the most effective technology investment has been consolidating on Alfresco as their content management platform. As an open source technology, Alfresco offers Denver an open and flexible infrastructure with huge cost advantages. Denver estimates saving $1.5 Million over 5 years by migrating Documentum content to Alfresco. Alfresco has just published a case study which features Zia’s engagement with the City of Denver. A slideshare presentation is also available.

Over the past year, Zia consultants have truly become an extension of the Denver Technology Services Group. We have implemented a number of projects, creating solutions for contract management, procurement, mobile apps, and more. During the course of these engagements, we’ve configured the systems, designed workflows and user interfaces, written web services, created new applications for roll out and performed migrations. Many of our consultants wear multiple hats, ranging from project manager to architect to lead engineer to business analyst. As a result, Denver leverages Zia consultants to work with their existing team saving the city additional money and resources.

Key to Denver’s success has been its strategic use open source technology. As commented in Alfresco’s recent blog, open source technology can provide the building blocks for more open and social government interaction.

This can be seen in the Denver 311 application, a soon to be released app on the Apple App Store. Reusing the web services already created, we integrated Alfresco with the city’s call center and CRM technology and created a metadata form that can be filled out online or through an iPhone, or iPad application. Once submitted, a ticket is created in the CRM system and a city worker is assigned to investigate. 311 requests can be resolved faster while keeping the citizen who reported the item updated on the resolution.

Together Zia and Denver plan to make more city services and processes available online or through mobile applications. As Denver’s CIO Chuck Fredrick said:

“We are able to quickly roll out new services and automate city processes with the help of Zia and Alfresco. In the Technology Services Group, we are continuously looking for ways to make the city more open, efficient and easier for citizens to engage with.”

You can get a pdf of the case study from Zia Resources

.

Enhanced by Zemanta

etendi BRIDGE

etendi BRIDGE

Business Summary of the Solution:

etendi BRIDGE, an easy-to-use, interactive, safe and secure web-based meeting place that bridges the gap when parents and kids can’t be together. Developed specifically for non-custodial divorced parents or co-parenting situations, grandparents, military families, or the heavy business traveler, etendi BRIDGE allows family members to stay connected by providing a single place for them to be together online. Features include live video phone calling, shared spaces for photos, videos and documents, personal notes, an interactive white board, and a shared calendar. etendi BRIDGE leapfrogs existing web-based messaging or video communication tools by providing in one web location everything needed to create a true virtual meeting place. Parents, kids and other family members can be online at the same time and have a video phone call, play games or work on homework together. When they can’t be together online, they can create and leave text or video “Thinking of You” messages and use shared web spaces to build custom web pages, photo albums, explore common interests, plan events and build shared memories.

Technical Summary:

The application is an RIA’s implemented using Flex 3 for the client communicating with a server based on Spring Framework and backed by MySQL or PostgreSQL. SOAP is used as the primary communication protocol, however, the implementation of the server and client lends to easily replacing SOAP another layer (e.g. BlazeDS).

 

Architecture Details:

Server Application Architecture

The server portion of the framework is comprised on the following high level components:

  • Java 6
  • MySQL (or PostgreSQL)
  • Hibernate
  • Spring Framework (including Spring Security)
  • CXF SOAP (formerly XFire)
  • Red5 (optional add-on for media)
  • BlazeDS (AMF communications)

Spring. The Spring Framework provides an alternative to conventional J2EE server side programming. Spring is built upon the paradigm known as Inversion of Control (IOC). In a nutshell, the primary different between a Spring managed resource and a J2EE resource is that instead of a section of code in a class asking for a resource via JNDI (as in classic J2EE), the Spring resource has a bean setter for an interface matching the type of resource needed and then Spring takes care of “injecting” that resource into the class instance before it’s ever needed. The advantage is that the code requiring a resource can be decoupled from the mechanism for actually acquiring that resource.

Spring configuration deals with Javabeans as it’s fundamental object. In a Spring configuration one defines a series of beans representing resources or beans which do work using the resources. Once beans are defined they are woven together using dependency injection.

Spring also heavily utilizes interfaces in class signatures. This is advantageous so that concrete implementations of an interface can be swapped out without the class where the resource is used being affected. An example would be the database access object (DAO). A DAO implementation provides implementations for methods to access the data while hiding the details of how that data is acquired. So, in one instance the DAO could be an implementation of Hibernate and in another JDO. So long as the implementations adhere to the interface they should be swappable.

Spring out of the box has a component known as core. The core component provides the basic IoC functionality and basic framework for a bare bones Spring instance. There are numerous other modules: MVC, Security, Test, JDBC, etc. Each module can be added to the classpath and configuration as additional functionality is needed. The Spring MVC module provides form based functionality for conventional web pages.

MVC. The Spring MVC framework is used to implement login, password reset and sign up.

Security. Application security is handled via the Spring Security module. Spring Security is very configurable and provides role-based security. Roles are used to define various security rules dictating which role has access to a given resource. Resources can be as high level as a URL (in the case of a servlet) or as granular as a method call (from a SOAP interface or other managed service in Spring). Aspect Oriented programming is heavily used in Spring to provide declarative security.

When a user first visits the site, served by the Spring MVC Framework, an HTTP session is bound. By default a session can be given a default role, ROLE_ANONYMOUS. If a user logs in various other roles can be bound to that session. Spring Security handles redirecting a user to a login page if the resource requested cannot be satisfied for that session’s role.

Hibernate. Hibernate maps the server side business objects (POJO’s) to database tables. The Hibernate implementation classes implement a generic DAO interface which defines a series of methods which provide access to the underlying POJO’s. The Spring JDBC module is defined for a particular database and then injected into the Hibernate service. The Hibernate layer creates a series of mappings between a Java class (POJO) and a database table. The particular database is abstracted by the Hibernate layer. If database specific features are used sparingly it is quite possible to swap out one database for another.

Hibernate has many advanced features such as caching, code based queries and fine grain control over writing custom queries if needed.

SOAP. The SOAP interface is implemented using the CXF framework. CXF is powerful and flexible. One can design code first interfaces (SOAP interfaces generated from existing code) or schema-based interfaces (the SOAP interface is first designed via a WSDL and then implemented). Each has it’s trade offs. Code based schemas are easier to develop and provide quicker development cycles. Code based schemas are probably more appropriate when the client and the server can both be modified, such is the case with etendi. For services accessed by third party clients, the schema based interface seems to be more rigorous and less prone to errors from code based changes.

AMF. BlazeDS provides a very similar means for creating an RPC interface as SOAP. The primary different is that BlazeDS is based on Actionscript Message Format (AMF) and is primarily only available to Flash clents (however some Java and PHP implementations do exist). BlazeDS is still relatively immature in comparison to CXF and does not have the same level of customizability.

BlazeDS also provides a messaging framework. If real time messaging is needed without media streaming capabilities then BlazeDS provides a decent alternative to Red5. Red5 seems to have more maturity at this point.

Client Application Architecture

The client application is a Rich Internet Application written in Flex 3. Flex 3 is an application programming framework for creating Flash-based applications. Flex provides a rich set of GUI components and communications API’s.

The client application communicates with the server via three primary mechanisms: RTMP, HTTP-based (SOAP, Rest, etc) or AMF (BlazeDS) requests. The implementation of the data layer is abstracted such that the client code is not dependent on the underlying implementation details, much like the DAO pattern used on the server. Using this scheme an AMF based data access layer can be swapped out for a SOAP based one or vice versa.

All requests from the browser or client application are subject to the security rules implemented on the server (Spring Security). Authentication can be implemented in several ways. Some applications may require broad security restrictions requiring a user to authenticate prior to loading the client application. Others maybe implement finer grain security rules so that the client application can load via an unauthenticated session, but is subsequently required to provide a means to authenticate the user before any data calls are made to the data services (SOAP, AMF, RTMP, etc). Finally, any combination of the two can be employed as needed.

Flex applications are event-based. Virtually all operations in a Flash application are asynchronous. Event driven development lends itself well to creating non-blocking user interfaces which can fetch data in the background while the GUI remains responsive.

The client application is broken out much like a server-side application utilizing the MVC pattern. The data layer is built upon an API which the controller code uses to acquire data. A model of the server-side data is maintained in the client. The model is updated via calls through the data access layer. The view layer utilizes the model to bind data to GUI controls and provide a means for the user to interact with the data.

 

Solution Brief: United Airlines – Integrated Search Application

Business Summary of the Solution:

Create an application that allows airline pilots to study flight manuals online with advanced searching. This project removes the need to a tedious and expensive paper updating process  and ensures that the technical writers for United can update content for the Pilots. In the future the API developed for this project will be reused in a tablet PC to be installed in all United Airline Airplanes.

Technical Summary:

The design of this system allows for the push of content from United’s Documentum installation to Mark Logic (this part of the project was not in the scope of my work). The content is processes to burst it into searching units and run transformation into XHTML as a caching system. Users load the web application and can browse or search all of the flight manuals. The searching allows user to search based on text input and additionally to select their airplane and a number of other filters. The search uses predictive text so that a user can select how the word they mean to type or can see synonyms for the current word. All filters show the user the number of search results that are generated by searching on a term or applying a filters. A user can bookmark and annotate interesting content and the application keeps track of all topics that a user has opened during a session.

This project won an innovation award at the MarkLogic user conference.

Tech Stack:

Content Management Technologies

  • Documentum WDK
  • DFC
  • DQL
  • BPM
  • DAM

Web Technologies

  • Spring Framework
  • Google Web Toolkit
  • Javascript
  • CSS
  • HTML

Other Technologies

  • MarkLogic XML Database

Deployment Platforms

  • Solaris
  • Linux – Red Hat Enterprise 4

 

Solution Brief: Santa Fe Institute (SFI)

Business summary of the solution:

The Santa Fe Institute (SFI) is devoted to creating a new kind of scientific research community, one that emphasizes the pursuit of understanding the common themes that arise in natural, artificial, and social systems. This unique scientific enterprise attempts to uncover the mechanisms that underlie the deeper simplicity present in today’s complex world.

Because the growing SFI community demands both historical and current information about research, methods, and intellectual perspectives, an ad-hoc approach to research, data, and content management is no longer efficient or appropriate. Therefore SFI has defined a new initiative, the Scientific Information System (SIS), to provide a thorough and systemized approach to capturing and disseminating the scientific content of SFI. The SIS solution is intended to facilitate continued ongoing intellectual engagement of the various constituencies that co-evolved with the Institute, and to ensure the Institute continues to impact the way the world thinks about science.

Technical Summary:

The SFI project integrated and utilized several open source projects to meet the customers requirements. The system is composed of three different applications: a content management system (CMS), a calendaring and scheduling system and a standalone web application hosting forms.

The open source version of Alfresco was implemented and customized as the CMS application of the project. The customizations included creating customized components, custom database and LDAP connectors, tight integration with the calendaring and forms web applications, and integrations with WebDAV and Marklogic. The user interface was customized using JSF, JSP, JSTL and CSS. However, the Marklogic integration was done using proprietary software.

Bedework, an open source calender system, was integrated and customized to meet the customers calendaring and scheduling requirements. The customization includes integrating with Alfresco and enhancing the user interface to fit the customers requirements.

A standalone web application was developed to meet the customers requirements for a standalone web app used to provide online forms (surveys, registration forms, etc…). The web application integrated all open source projects to accomplish its goal of providing a secure, reliable and highly reliable web application to provide online forms. The web application integrated Spring, Chiba/XForms, Hibernate, LDAP, MySQL, Acegi Security, and WebDAV. The user interface was built using CSS, JSP, JSTL and Sitemesh (as a web page layout and decoration framework).

Tech Stack:

Content Management Technologies

  • Alfresco
  • Chiba/Xforms

Web Technologies

  • Tomcat
  • Spring Framework
  • Acegi Security
  • Bedework
  • WebDAV
  • Hibernate
  • Sitemesh

XML Technologies

  • MarkLogic XML Database
  • XML/XSLT

Other Technologies

  • Java
  • Javascript
  • Ant
  • JUnit
  • MySQL Database

Deployment Platforms

  • Windows Server 2003
  • Linux – Red Hat Enterprise 4

 

Solution Brief: IEEE

Business Summary of the Solution:

The Society Portal (SP) refers to a website that society members will use to work with IEEE. Among other functions, the SP will allow society members to interact with the IEEE Workflow Management System (WMS) to conduct reviews of proofs of articles and issues. WMS uses a Documentum repository to store documents and handle security, versioning, etc. Based on the large number of society members and the need to have members interact with the system only on sporadic timeframes, the members will not be created as named Documentum users. Society member accounts are based on IEEE Web Accounts and each member’s user id and password are managed through the IEEE web account interface.

Technical Summary:

Designed and developed a high-quality, full-stack web application utilized by IEEE Society Members to interact with IEEE. The web application consists of all open source technologies, integrated and utilized to provide a highly interactive and highly available system, known as the Society Portal. The system communicates with an Oracle database, an LDAP server and a web service for its data. The web service provides data from IEEE’s WMS system. The user interface is highly interactive utilizing CSS, JavaScript and Dojo. JSPs, JSTL and Spring Tags are utilized to provide the dynamic web content. SiteMesh is used for layout and decoration of client side views. Security is handled using Acegi security and authenticating against an LDAP server. Email templates are created using the Velocity templating engine.

Tech Stack:

Content Management Technologies

  • Documentum WDK
  • DFC
  • DQL
  • BPM
  • DAM

Web Technologies

  • Weblogic 9.2, 10.0
  • Spring Framework
  • Acegi Security
  • Velocity
  • Dojo
  • Hibernate
  • Sitemesh
  • XFire
  • JSTL, JSP

Other Technologies

  • Java
  • Javascript
  • Ant
  • Oracle Database
  • LDAP

Deployment Platforms

  • Solaris
  • Linux – Red Hat Enterprise 4