Tag: Content Rich applications

JBoss Seam Component wiring options

Posted by on October 29, 2009

At Rivet Logic we do quite a bit of work with the JBoss Seam framework, specifically with our Content Management System integration we call Crafter rivet.

Seam can be used with the Spring bean factory framework, a popular “IoC” or Inversion of Control / Dependency injection framework. Spring enables developers to create instances of java objects known as beans and then to wire them to other java objects. Most people working in J2EE today are familiar with this so I won’t spend any time going in to further detail here. Seam also supports the ability to use java annotations to declare a class as a bean and to specify how it should be wired through what they call out-jection and injection. Check out the Seam website for more details on how the Seam bi-jection mechanics work.

One question that has come up for me many times on consulting engagements is: “which approach to use, Spring or Seam bi-jection?” My experience shows me that the answer is not one or the other. Both approaches have significant benefits and can be used together to create a stronger approach than either one can provide on its own.

Here are some very simple guidelines

When to use Spring beans:

Infrastructure components and services are great candidates for Spring beans

  • Such services are generally singletons within the system. Spring has excellent support for managing and wiring these objects
  • Such service classes are often packaged in separate more commonly used libraries. Hard coding a bean name and wiring within the class definition or strongly coupling to Seam is less desireable.
  • You want a very simple way to override the implementation at deployment time. Consider a scenario where you want to override a DAO. By managing the bean in Spring it is extremely easy to override the bean definition to use an alternate class and configuration in a given environment simply by placing an additional xml file in the classpath

When to use Seam annotations:

Domain specific components are good candidates for bi-jection.

  • They are often fine grained application specific components.
  • Explicitly stating how the component will be wired in the the class file has little impact on its re-usability because its scope is limited to the application at hand.
  • Such components really benefit from one of Seams strongest features in its bean framework: Conversation Scoping. This is the ability to define a life-cycle which is shorter than a session. By limiting the lifetime of a object to its true life-cycle it’s possible to free memory up for other needs within the system. On large, high troughput applications the benefits here cannot be overstated.

By using a combined approach you get the reusability and flexibility of Spring framework with the performance orientation of conversation scoping and ease of development associated with Seam annotations.

Alfresco Tech Talk Live: Leveraging Alfresco Share for Collaborative Enterprise Authoring

Posted by on June 04, 2009

Tomorrow (Friday June 5th, 2009) at 12pm EST I have the pleasure of presenting and leading a discussion for the bi-weekly Alfresco Tech Talk Live hosted by Dr. Yong Qu of Alfresco.

We’ll be exploring how Alfresco Share, with some basic modifications, can be leveraged to create a collaborative authoring and management environment for your enterprise content. Join us tomorrow for a demonstration and open discussion as we explore this interesting subject.

To attend, please visit http://alfresco.acrobat.com/live and enter the meeting room as a Guest.

Alfresco Community Meeting in NYC 2009

Posted by on May 11, 2009

Last week I attended the Alfresco community meetup in New York City. The turn out was impressive. Nancy Garrity (Alfresco Community Manager) told me that the event was completely “sold-out” and that there was not enough room for everyone that wanted to come. I was sorry to hear that we were not able have everyone there that wanted to be there but it’s really great that there is so much interest in Alfresco.

The session got underway with Ian Howells, Alfresco’s Chief Marketing Officer, who reviewed the trends in favor of open source ECM, not the least of which is the accelerating demand driven by the global recession.

Michael “Uzi” Uzquiano, Product Manager for Alfresco WCM and Alfresco Network, then laid out a roadmap for Alfresco WCM, Surf and Alfresco Network. Some key highlights were:

• Repository harmonization. Alfresco provides two distinct content stores: the Web Content Management (WCM) repository, and the Document Management (DM) repository. Alfresco is bringing these two stores together at the API level and then consolidating many of the core capabilities.

• Clustering for the WCM repository (not just DM) is under development.

• New Forms Service: Alfresco WCM has long had a capability for defining forms. A user can install an XSD in the Data Dictionary. The XSD is then translated in to a Web form that provides a friendly user interface for reading, modifying, and storing XML. The DM repo does not have such a feature. Instead, within DM property sheets map to the underlying content model. Many users have requested both capabilities be available uniformly for both DM and WCM. Alfresco is responding to these requests with the new service. The new Forms Service will have a much more powerful persistence capability. I asked to find out if customers who already have XSD form definitions in play would need to change to a different format. I was told that these customers should be safe.

• Spring Webflow integration with Surf: Spring Webflow is the project in the Spring Portfolio that focuses on providing the infrastructure for building and running rich, Java-based web applications.

Uzi laid out a timeline for future Alfresco releases:

1. v3.2 Labs targeted for June

2. v3.2 Enterprise targeted for September 2009

3. v3.3 in early 2010

4. v4.0 later in 2010

In addition to Uzi’s presentation, a number of other presentations and demos were also given. I particularly liked the customer case study given by the Warren country Correction Center. They process a large volume of inmates in and out of the facility. Each time an inmate is processed in or out of the correction center a large volume of paper work is generated which must be stored for long periods of time. Warren country is now well on their way to eliminating the need to store large volumes of content in physical file cabinets. They have implemented an Alfresco based solution for archival and retrieval of inmate data. Electronic storage of the inmate information allows the correction center to quickly search and retrieve important information on inmate background, health, behavior and other important documents for both operational and legal functions.

Other demonstrations included
• Scanning best practices and an Alfresco-integrated Kofax demonstration.
• A walkthrough of Alfresco Share
• Digital tampering protection through an integration with Surety’s Absolute Proof.
• IMAP demonstration that allows your email bin and folders directly with Alfresco.
• A demonstration of a Flex UI for Alfresco.

I gave a presentation entitled “Leveraging Alfresco Share for Enterprise Content”. At Rivet Logic, we get a lot of requests for solutions to help authors manage deep, inter-related content types that need to ultimately be published to numerous channels, including the Web. In addition to the publishing requirements, enterprise class assets usually benefit from an authoring environment that includes social and collaborative capabilities like those found in Alfresco Share. To address this, we demonstrated a number of best practices and design patterns for managing enterprise content with an authoring environment plugged in to Alfresco Share combined with an instant Web preview capability. Based on the feedback, the approach seemed well received. Like many of our customers, members of the Alfresco community are quite interested in collaborative authoring environments for enterprise class content.

It was great to meet with everyone who was able to attend. These types of events are vital for the community. It’s a perfect time to give Alfresco feedback and for the customers and community to meet one another.

Alfresco Community Conference

Posted by on October 11, 2008

Today I am back in Boston after spending most of the week in Washington DC. I was there for the Alfresco Community Conference and also to spend some time at Rivet Logic’s new headquarters. We have a lot more room for our team in our new digs. Every time I have a chance to spend time with the group in Reston I am reminded of what an awesome team Rivet Logic has put together and why joining this team was such an easy decision.

The DC Conference was absolutely awesome. I left DC with the same excitement I had for Alfresco the first day I read about it on the web back in early 2005. This coming release is a Landmark release for Alfresco and a springboard for really big things in the future.

Last year Alfresco gave us Web Scripts. Web Scripts was raw functionality / capability for binding web-based functionality hosted in the repository to a parameterized, ReSTful URL. Web Scripts allowed Alfresco to easily integrate with other platforms, participate in mash-ups and to some extent get around the issues with the traditional alfresco web client (it’s much slower to develop for and a bit “click” intensive.) Web Scripts by it’s very nature is AJAX friendly which leads to better, more rich user experience and the javascript / freemarker construction makes building Web Scripts a whole lot easier than writing, compiling and deploying heavy Java code.

This year Alfresco gave us:

  • A better core repository
  • SURF
  • Alfresco Share
  • A peek at SURF Development Studio
  • CMIS

It’s clear that without the foundational work of Web Scripts and the capabilities in the WCM product the items above would not have come to pass in a single year. Web Scripts has enabled an explosion of capability. Last years release of Web Scripts may have seemed like a powerful but merely additional capability but it laid the foundation for a huge growth explosion. The game board was set up with last year’s release and it is evident with 3.x that the game has changed.

As Alfresco’s application architecture is refactored they are also able to refactor their team a bit and more cleanly dedicate resources to specific areas of the architecture. We now have a dedicated team of strong developers with a focus on repository scalability and stability. This week we were told we can expect better performance, scalability in both the DM and WCM repositories. We also heard that harmonizing the APIs and capabilities for these repositories is a goal and is underway. Alfresco has also added a new remote interface to the repository that allows Microsoft Office to use the Alfresco repository as if it were a Share Point server. Something good just got better. I like the direction the engineering is heading by cleanly separating the repository from the applications that work on top of it. I also like what I have heard about the focus on key areas like performance and scalability. New features are always important but are a distant second to improved performance and scalability of something as core and foundational as the repository and its content services.

SURF is an application platform for aggregating and delivering Web Scripts (and other components.) SURF is an MVC for site / application composition. Alfresco has taken Webscripts, templating, and URL addressability and parameterization capabilities out of the core repository, combined them with a set of new capabilities and re-organized them in a entirely separate framework. In essence SURF is entirely independent of the Alfresco Repository. The key here is that while SURF is entirely separate, creating Alfresco client capabilities in SURF is a snap.

Alfresco Share is a new application that Alfresco has developed, which, for many people will eliminate the need to use the traditional Alfresco web client for anything other than repository administration. Share is a collaboration platform similar to something one might expect from Share Point but with much more Enterprise 2.0 and social features. Share is really impressive and it demonstrates what can be built with SURF and how quickly and easily one can build it. Share was developed in less than a year but has features and capabilities of other systems that have been under development for years. Best of all, Share will continue to get better at a similar rate and because it is so easy to write new components with Web Scripts the community can contribute and accelerate this growth.

Development Studio is a SURF based application that integrates with Alfresco WCM, the Alfresco Network and your SURF application to provide you with a visual (WYSIWYG / drag and drop / edit in line) environment for developing SURF applications. I truly believe that Alfresco WCM is an awesome platform with advanced features and capabilities not found anywhere else in Open Source and in some cases even in the world of the proprietary giants. WCM is a new platform with groundbreaking capabilities but without a something like SURF or the Development Studio to demonstrate these capabilities, it was hard for customers to recognize the value sitting right in-front of them. Early on in WCM, Rivet Logic had developed similar capability to what you see in SURF for the exact same reason. SURF and the Development Studio help to round out the Alfresco offering and will really help to highlight the unique and powerful value in Alfresco WCM.

CMIS (Content Management Interoperability Standard) is a new standard for ECM platform interoperability. Today it is in DRAFT status with OASIS but according to John Newton, CTO of Alfresco there is a strong probability of its adoption with the backing of the like of Microsoft, Documentum, Open Text, Alfresco and several other key players. CMIS supports both Web Service and REST based protocal bindings making it very easy to integrate in to an existing platforms. Alfresco’s REST implementation provides nearly full coverage of the specification. Web Scripts played an important role in the lightning-fast turn-around time for this implementation. Again we see the foundational work of Web Scripts delivered last year providing big results less than a year later. CMIS will allow developers to write repository agnostic applications that will work against any repository which supports CMIS including Alfresco. CMIS also specifies a SQL like query language. Unlike previously proposed standards that pushed XQUERY and XPATH, CMIS is adopting a well understood paradigm which I believe will only encourage its adoption.

It was a fantastic week and an exciting conference. If you have not looked at Alfresco lately it is definitely time to take another look. This is truly an exciting release for this product! I really enjoyed the opportunity to see everyone in the community, Alfresco, and at Rivet Logic HQ.