Just about any solution that is built using an Enterprise Content Management (ECM) System will require that a content model be designed. The content model in an ECM system is analogous to the Schema of a database system. It defines the structure of the content in the repository. It is the basis on which the user interfaces, search capabilities and applications associated with the system are built. Any team that has to build an ECM based solution must be able to design, build and deploy a content model.
As is true in any development effort, the design of a content model is generally a collaborative process. Here are some of the players
Given the far reach of content modeling, it is important that the process be fully understood by the project team.
We really do a bit of informal content modeling any time we have to organize large amounts of content. Let's look at some examples:
Business Document Folders
Many of us have folders on our computer (or even in our physical file cabinets) for things like expense reports, invoices, receipts or work documents. The folder structure that you pick is an example of an implicit content model. When you organize by, date or customer or project, the folder structure has embedded information about your content that helps you categorize and find content.
Photo Album
Many of us use on-line photo albums. Many of these on line photo albums allow us to add date, location and a list of people in the photo. When we make choices on which fields to fill in, we are in effect building a model around our content based on what is important to us.
If you tried to replicate this on a file system, you might have trouble coming up with a folder structure and naming convention for this, you might be left scratching your head.
The problem with these ad-hoc models is that the model is generally loosely defined in our head and not enforced. The model is generally useful for manual operations rather than automated processes.
Enterprise Content Management (ECM) Systems provide the tools that allow system designers to express the design in a way that allows applications to understand, leverage and enforce the information architecture that the content model implies.
ECM systems differ from file systems in that rather than limiting the system designer to files and folders, it gives the designer the ability to define the objects that will be housed in the repository. ECM systems still have files and folders but they are just objects in the repository. The definition of the object includes the metadata or properties that each object has.
Looking back at your photo album app, you might define a photo object which has the following properties.
Your photo album object might be a folder that contains the photos. The properties of the album might be:
Notice that the ability to define properties, means that we do not have to come up with some complex folder structure or naming convention to categorize our photos any more.
Armed with the ability to add properties to each object in the repository, it is possible to approach content model design in a very structured manner. I tend to follow loosely the process below (or some variation of it).
Enumerate the Elements
In this phase the designer would:
Refine the Design
During this phase, the design is refined for implementation purposes. The actual steps taken in this phase will depend on a number of factors such as:
Once the design is completed, the content model must be built, and deployed to the repository. This process is dependent upon the repository, but in general a well specified content model can be quickly converted into a deployable format.
There are many ways for a team, that is new to content modeling, to complete their design.
Get Training
This approach is best for a team that wants to "own" their design. This is usually best for teams that have some time (well a day or two) to invest in themselves, and really are looking to minimize the amount of work that they delegate to outside parties. This provides the maximum transfer of skills and knowledge and can be used in combination with any of the methods listed below. If you want to ensure that your team is enabled for long-term success, it is best for them to get the skills they need through formal training with an expert.
Hire an expert to coach them through it
This is a reasonable approach when the team needs to get started quickly and may have to maintain the solution after it goes into production. This is also good for teams that may be uncomfortable with taking on something new by themselves. In the end, the team should end up with a certain level of enablement around content modeling but this option may not set them up for success to maintain the solution post-production.
Hire an expert to do it for them
This is a suitable approach if the ECM project is really a one off and that will not be revisited, or if it is a function that is so different from the team's normal function, that any investment in team enablement would be inappropriate. The drawback to this approach is that the team does NOT gain any skill or knowledge that will allow them to become self sufficient.
For the past 6 months, I have had the opportunity to split my time between Alfresco consulting and curriculum development for Alfresco University. It has allowed me to bring my field experience into the education department and learn a bit about instructional design. One of the courses that I have been working on is the Content Modeling Course. This course will debut at Alfresco Summit. The first half of the course will focus on the design of the content model, through a number of exercises. The second half of the course will concentrate on building, deploying, refining and troubleshooting the model. This course includes exercises that are targeted for developers, information architects and system administrators.
I am personally excited about the opportunity to launch this course at Alfresco Summit, and am looking forward to seeing you there. If you would like to attend please visit our Alfresco Summit Training page for registration information.