Email: dev@concena.com       Twitter: @dbrucegrant
«Back

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

Comments
Trackback URL:

No comments yet. Be the first.

Recent Entries Recent Entries

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