Email: dev@concena.com       Twitter: @dbrucegrant
Nuxeo - Room for Improvement - Part 1

Maybe I'm biased, but I think Nuxeo is a great platform on which to build next-generation content solutions that will greatly improve on existing business processes and practices. And I'm also a big proponent of building solutions on top of Nuxeo to laser focus content management needs for specific business processes. That being said, there are still many situations where the use of the native Nuxeo client is both required and necessary. So, I thought it was time to start documenting some of the improvements I would like to see over the next 12 months! My two cents worth in any event.

First up is vocabularies. An absolutely critical part of any system - that is, the value sets that can be used in drop down lists, et.al., to populate document fields in an easy and controlled manner. I look at this particular aspect of the Nuxeo platform and think there is a lot of opportunity for improvement.

The top 3 improvements I would like to see with vocabularies:

  1. Support for an arbitray number of levels of hierarchical relationships. This would make it simpler to model client, brand, product, etc. type relationships common in many industries (and typically the data is fairly static).
  2. An improved user interface would go a long way to making vocabularies easier to use (and much better to demo). Better control over ordering of data should be included in the remake.
  3. Don't know about anyone else but it's typical in larger organization to have a separation of accountability for vocabularies. Would be nice to have a security model built around vocabularies to allow portions of the vocabularly model to be exposed (via rights assignments) to individuals and groups. And it would be great if that model allowed granular controls over addition, update, and deletion. And, although this is really a fourth item - it would be wonderful if part of the security model could force some vocabulary contributors to submit modifications through a controlled workflow!

And of course you can always workaround this missing functionality (at least sme of it) with a relatively small contribution. In my case I wanted the users in the "Voculary Managers" group to have a new User tab added to allow them to maintain vocabularies, so I made the following changes...

1. create a new action and a filter based on inclusion in a specified group

<component name="com.concena.my.dam.core.actions">
    <require>org.nuxeo.runtime.started</require>
    <require>org.nuxeo.ecm.platform.actions</require>
    <extension target="org.nuxeo.ecm.platform.actions.ActionService" point="actions">
        <action id="myDirectoriesManager" link="directory/view_directories.xhtml" label="title.vocabularies" order="50">
            <category>USER_CENTER</category>
            <filter-id>only_for_vocabmgrs</filter-id>
            <filter-id>not_readonly</filter-id>       
        </action>
    </extension>
    <extension target="org.nuxeo.ecm.platform.actions.ActionService" point="filters">
        <filter id="only_for_vocabmgrs">
            <rule grant="true">
                <condition>#{myUserServicesContext.vocabularyManagerEnabled}</condition>
            </rule>
        </filter>
    </extension>
</component>

2. created a new seam component to test for inclusion in the group

@Name("myUserServicesContext")
@Scope(SESSION)
@Startup
public class myUserServicesContext implements Serializable {

    private static final long serialVersionUID = -4938620211123775755L;

    @In(required = false, create = true)
    private transient Principal currentUser;

    /**
     * Checks to see if a user is a member of the "Vocabulary Managers" group.
     *
     * @return - true if the user is a member<br>
     *         - false otherwise
     */
    public boolean getVocabularyManagerEnabled() {
        if (currentUser == null) {
            return false;
        } else {
            return ((NuxeoPrincipal) currentUser).isMemberOf("Vocabulary Managers");
        }
    }

    .....

3. Modified view_directories.xhtml (not included here - just too messy) to change currentuser.administrator test. Take a look at the source!

4. And finally, created a group called Vocabulary Managers and added a test user to try it out!

That's it for now!

>> Also check out Room for Improvement - Part 2

Nuxeo 5.5 - a big step Forward!

I had some down time over the Christmas holidays so I took the opportunity to take a good look at Nuxeo 5.5 (just released mid-December). I ran through several upgrades, upgraded a few custom plugins, and installed several product flavours.

Nuxeo has re-branded the base "platform" as CAP (Content Application Platform), on top of which sit the various Nuxeo-packaged distributions. The distributions are the applications built on top of Nuxeo: DM (Document Management), DAM (Digital Asset Management), and CMF (Case Management Framework). The new approach means a single installer, and more importantly, the same base platform can support multiple applications (there are still restrictions for the near term). This means that users can access Digital Content using the DAM client (search-oriented) or using the traditional DM client (for workflow, etc.). The CMF framework has not yet been updated to allow co-existence, but I believe that's the objective.

If you're new to Nuxeo then start with the Nuxeo web site for a wealth of information. You'll have to be patient and persistent to wade through and absorb all the details, but in my opinion the journey wil be worth the time invested.

If you already understand the basics then take some time to download and try 5.5 - I don't think you'll be disappointed!

Upgrading from Nuxeo 5.3.2 on JBoss to Nuxeo 5.5 on Tomcat

Following on the heels of my upgrade from 5.4.2 to 5.5 (both Tomcat), I thought I would take the next step and make the step from a Nuxeo 5.3.2 instance on JBoss to a 5.5 instance on Tomcat. It's important to note that the 5.3.2 instance was already configured with VCS.

I did a small scale test only because I wasn't entirely sure of the steps and whether they would work. As I worked I scribbled a few notes, so no assoicated document as yet with screen caps. However, over the Christmas holidays, I will perform a full migration on an existing system and produce an upgrade document when I do.

The basic process is the same as 5.4.2 to 5.5, with a few additional steps.

1. Install and configure a new instance of Nuxeo 5.5 (see the 5.4.2 to 5.5 for more detail)

2. Export (backup) the existing 5.3.2 database

3. Create a new database for 5.5 and import the backup from step 2

4. Copy the NXRuntime\binaries\data (in 5.3.2) to the data\binaries\data directory in 5.5 (this is where I have to spend a bit more time to ensure there isn't any additional information that needs to be migrated)

5. Copy custom jars (if any) into the plugins directory

6. Start the server...

I have left out some details, however, when I started the server everything worked as expected (of course I had already made some changes to my plugins to reflect some underlying changes between 5.3.2 and 5.5).

When I perform the full migration I will document the steps, with screen caps, in more detail and post on my blog.

So far, so good, when it comes to upgrading to 5.5!

Upgrading Nuxeo from 5.4.2 to 5.5 - Mostly Painless

I ran out of time to test a 5.4.2 upgrade with the Nuxeo 5.5 release candidate, however, now that 5.5 is out I made time. I decided that I would document the process (1) to help me with other upgrades, and (2) to help others with the upgrade process. Download the PDF document that details my upgrade from 5.4.2 to 5.5 on a Windows 7 platform, starting with Postgres 8.3 database.

Happily Disconnected (Diving into the Nuxeo Android Stack)

I wish that my schedule would have afforded me the time to attend Nuxeo World. But these things don't always work out. Luckily, however, I have made the time to start working through the Nuxeoworld presentations. I might have not even noticed the mobile session had it not been for a meeting I had last week (thanks Christine). Building a Nuxeo stack for Android, iOS (and maybe some day Blackberry :-) is a big step foward.

Taking the power of Nuxeo and extending it to the mobile workforce, creating simplified, process-oriented front-ends, and providing support for online/offline plays to the strength of the platform. I would like to see Nuxeo provide more of these 'seamless enterprise' capabilities to enable building simple, but powerful applications that deliver process-focused functionality when and where required, that are tied to a highly scalable document management system behind the covers.

The most promising piece of the puzzle for me is the caching and disconnected operations. Having worked with Lotus Notes for many years these are truly powerful  capabilities.

There is work to be done to round out the stack, document the configuration and build processes, and make it easier for developers to leverage the stack, but I like the trajectory! 

Over the weekend I stumbled through setting up an Android simulation environment (managed to get this working with latest envrionment, although still need version 8 api - the default for the demo applications). I downloaded the Nuxeo samples, asked a few questions, and I got the base environment working. Then I realized the Nuxeo plugin for the Insurance Demo application was missing from the downloads and requested that (which Thierry thankfully provided). Took me about 12 hours in total from never having done anything with Android to building and deploying working applications. One or two fewer Cognacs and it might have taken less time.

I'm hoping that Nuxeo puts a great deal of effort into productionizing the Android platform and then goes full tilt on the iOS version.

Here's a link to the Nuxeo presentation.

Showing 26 - 30 of 41 results.
Items per Page 5
of 9

Recent Entries Recent Entries

RSS (Opens New Window)
Showing 1 - 5 of 15 results.
of 3