09/12/2007
Nuxeo Runtime adds support for scripting languages

Bogdan had added preliminary, yet powerful, support for scripting in Nuxeo Runtime, before leaving for well deserved vacations. This makes scripting available from all Nuxeo’s platform. Thanks to this new feature, you can easily uses scripts from your custom components. This can be very useful for a lot of use cases, like, dynamic rules (scripting language as DSLs), easily modifiable behaviours, light and powerful configuration / customization, etc. Scripts have access to the whole API thanks to Java scripting integration (JSR-223).

Moreover, scripts can also be run remotely thanks to the Nuxeo Runtime command line. This allow you to create a script on your administration machine, launch it on the remote platform and get the result back. It makes scripting a killer-feature for administration scripts (ex: expire content, bulk content modification, bulk refactoring of the content repository layout, etc.).

Last, but not least, we are working on a interactive shell (using Python or Groovy) to interact with Nuxeo’s platform.

Here is a quote a Bogdan’s mail to get more details:

Hi all,

I’ve just integrated scripting support through JSR 223 in nuxeo. This was integrated as a new project nuxeo-runtime-scripting which is in svn but it is was not yet added in the nuxeo.ear build (neither in runtime svn module)

For now only these scripting engine were integrated:

  1. jexl

  2. jruby

  3. groovy

  4. jython

  5. groovy

  6. js (rynho)

If needed I will add more later (like php for example). You can run scripts in nuxeo in 3 different ways:

  1. Put the script inside the nuxeo.ear/script directory (you should define this directory through a runtime var.) Then from the java code you can do:

     Framework.getService(ScriptingService.class).eval("my_script.js");
    

    where my_script.js is the script path relative to the script directory

    Or you can use the JSR 322 API:

     ScriptEngineManager factory = new ScriptEngineManager();
     ScriptEngine engine = factory.getEngineByName("js");
     engine.eval("absolute/path/to/my_script.js");
    
  2. Let the script inside your .jar and registered it under using name as a script component. The you can run the script as follow:

     Framework.getService(ScriptingService.class).getScript("myScript").eval();
    

    This method is caching the compiled script so it is only supported for languages that support compilation. (actually all the engines that comes in nuxeo)

  3. Run a script from remote :)

    This can be used for debug, testing or administration. You write a script locally then you run it against a remote Nuxeo EP server. The script will be send to the server and executed on the server then the server will return the result (including STDOUT and STDERR) to the client.

    For security reason this feature can be disabled using a runtime property on the server.

    Here is an example on how you can run a remote script:

       ScriptingClient client = new ScriptingClient("localhost", 62474);
       URL src = RemoteTest.class.getClassLoader().getResource("test.js");
       RemoteScript script = client.loadScript(src);
       script.eval();
    

    For the following js script:

       importPackage(java.lang);
       importPackage(org.nuxeo.runtime);
       importPackage(org.nuxeo.runtime.api);
       importPackage(org.nuxeo.runtime.model);
    
    
       runtime = Framework.getRuntime();
       name = runtime.getName();
       version = runtime.getVersion();
       desc = runtime.getDescription();
       println("Remote runtime: "+name+" v."+version);
       println(desc);
       println("---------------------------------------");
       println("Registered components:");
       println("---------------------------------------");
       regs = runtime.getComponentManager().getRegistrations();
       for (var i=0, size=regs.size(); i<size; i++){
           println(regs.get(i).getName());
       }
    

    The following will be printed on the STDOUT of the client:

      Remote runtime: OSGi NXRuntime v.1.4.0
      OSGi NXRuntime version 1.4.0
      ---------------------------------------
      Registered components:
      ---------------------------------------
      service:org.nuxeo.ecm.core.api.DocumentAdapterService
      service:org.nuxeo.ecm.core.repository.RepositoryService
      service:org.nuxeo.runtime.remoting.RemotingService
      service:org.nuxeo.runtime.EventService
      service:org.nuxeo.ecm.platform.login.LoginConfig
      ...
    

So, this new feature can be used to write pure script based Nuxeo components. Also in future I will try to configure tomcat to be able to run scripts inside servlets. This means to be able to write we pages in php or other supported language for Nuxeo EP ;-)

Bogdan

I think this open a wide range of new possibilities and ease of use for the Nuxeo Platform to allow you create innovative and powerful ECM applications (and not only, actually, since Nuxeo Runtime can be use to create any extensible application on the Java Platform).

Stay Tuned!

EB.

Posted by Eric Barroca @ 09/12/2007 11:57 PM. - Categories: java, nuxeo -  0 comments
09/05/2007
Steve Raby joins Nuxeo as UK and Nothern Europe Manager

As you already might have seen, Steve Raby has joined Nuxeo as Director for UK and Nothern Europe and head of our London-based UK branch. We have started to do some great work, already and I’m just blogging about this to add some personal touch on this. :-)

Steve, a Sun and JBoss veteran, is a strong asset for our company and, of course, brings some new blood to our vision and management structure. The work we are doing is already productive and we recently signed our first large UK customer (you are going to read about that soon).

It’s also a really interesting to experience a shared vision for the business and the same enjoyment for the Open Source model. Same customer service orientation. And same faith in the success. The beginning of a long story, I'm sure.

Welcome on board Steve! We are going to continue building a great and successful Open Source vendor… (okay, okay, you’ve already been there for two months :-) )

Stay Tuned!

EB.

PS: Read the full PR here

Posted by Eric Barroca @ 09/05/2007 03:50 PM. - Categories: nuxeo -  0 comments
09/03/2007
Nuxeo EP: the Service Oriented ECM Platform

If you’re one of those people that believe that SOA is more than a buzzword surrounded by hype, then this blog might be worth reading. As you might guess, I’m one of those. And for real-world solutions. :-)

Nuxeo EP is built around two simple yet powerful concepts:

  • Services: a service is a component of the Nuxeo platform offering some feature to others (ok, so you do know what a service is! :-). From a technical point of view, in Nuxeo’s case a service is an OSGi bundle.

  • Extension points: a service might provide one or more extension points so that other services can contribute extensions to this point (to configure the service or extend it). Think Eclipse Equinox extension system ported to the server-side.

Basically, Nuxeo EP is a set of services that mutually extend themselves (plus a bunch of business specific configuration files and UI) to offer a complete set of high-level ECM Services, ready to be integrated into the Service Oriented Architecture of your Information System (IS).

This is the future of ECM Platform providers and here is why… ;-)

One company, different needs

As you might know, or guess, a company’s departments can have very different needs related to content management.

Let’s take a few examples:

  • marketing people want an application to manage their pictures and videos so that they can quickly find and get the right picture to illustrate their new “fact sheet”.

  • the legal dept want a collaboration system to share and collaborate on legal documents. They also want a document management system to store all kinds of legal documentation.

  • engineers want a full-blown ECM system to handle collaboration, document management for industrial documents (blueprints, specifications, operation manuals, etc.)

  • the accountants want a system to manage invoicing and payment processes which can track physical items (e.g. incoming paper invoices, acceptance papers, delivery proof, etc.) and interact with SAP where all numbers are stored

  • the QA people want to manage their organizational diagrams and processes to be under version control and workflow. They also want the engineers to use a document management system to enforce audit and compliance on produced documents (specs, op. manuals, etc.).

Of course, I could add dozens of examples, and I’m sure you could too.

All those needs might require very different UI, processes and business logic. But they still have some crucial common parts…

On to a Central Content Platform

Looking at those needs, besides their specifics, we can quickly define some common requirements:

  • Content storage: scalable and secure content storage for short term (e.g. press release) to long term storage (e.g. documents of specifications).

  • Flexible content model: to address all those needs, a flexible content model is required. Hence the content storage needs to be flexible to store any kind of content model.

  • Security and access control: all the managed content needs to be secure and access controls have to be carefully applied. Hence the need of global security and access.

  • Search: you need to search all this content. Hence the need for a flexible (to be adaptable to different content model) indexing and search engine. If you can search all the managed content using one UI it would be even better.

  • Process management / workflow: to support everything from simple approval processes (specification draft) through to complex business processes (invoicing) or complex hierarchical approval processes (legal docs, specifications) you need an enterprise process engine, deeply integrated with your content repository.

  • Relation management: wouldn’t it be great to be able to track dependencies between specifications documents, or between legal documentation and contracts? Or track links between pictures? Or maybe just track impacts between the specification and the operations manual? It might even be in the requirements! Well, to do this you need a powerful relation engine.

  • User Notification: People want to be able to subscribe to changes so that they are notified (via email or RSS feed) when documents change. Let’s set up a notification system with email and RSS support (and maybe IM or SMS).

  • Content Rendition: pictures need to be resized or cropped, word documents have to be converted as PDF after approval (e.g. for distribution or long term archiving), etc. You need an extensible content rendition system that allows you to define your renditions and maybe write your own rendition plugins.

  • Directories / Vocabularies: You need to manage lists of terms to populate lists of choices in metadata forms, workflow screens, etc. You might also want to lists to come from your ERP system (e.g. project codes, imputation codes, customer list), some other applications or LDAP servers (customer lists, user lists, etc.). You need a flexible service to centrally manage lists (flat or hierarchical), stored into SQL or LDAP, and bind them to forms in your application.

  • Audit: last but not least, you want all actions performed in the applications by users or other applications to be logged. You also might want to create reports from that data. Hence the need of a central audit trail.

This is what we define by Central Content Platform: a unique place offering content related services consumed by applications for end-users. End-users might see/use very different applications/UIs, services and storage are centralized to dramatically reduce maintenance cost and improve maintainability. And it’s much easier to secure (high-availability, physical protection, security audit, etc.) one central platform than each aspect of several different applications (with their own storage, language, platform, etc.).

One platform, many applications…

With Nuxeo Service Platform this pattern can become a reality. You can set up a scalable and reliable platform for ECM and make your business applications consume those services. Each application for end-users might be written in different languages, implement different paradigms, serve different users with different business needs.

Moreover, Nuxeo EP leverages standards and patterns to offer a wide range of communication systems. Java applications can use the java remoting system (EJB3 Remoting / POJO Remoting) and get access to the native API.

You prefer .NET, Ruby or PHP? Go on! Nuxeo EP also offer a wide range of Web Services (SOAP or REST) which enable integration with with virtually any software language / platform.

Need a workflow engine for your existing Spring based application? Just embed Nuxeo Runtime in your contract management app, connect to our Nuxeo EP instance and integrate your app with Nuxeo Workflow Service. Need advanced document storage with versioning and security? Just contribute your content type and store your documents into your Nuxeo EP’s Content Repository and access through the API or directly from HTTP links. We will take care of all complex document storage details such as access control, versioning, file streaming, transactions, etc. Need to add search? Plug your app to your Nuxeo EP’s Indexing and Search Service!

No more “one size fits all” ECM application

This is really what we think as the future of ECM. One application cannot fit all needs of content and information management in an organization straight out of the box. End-users ask for more and more adapted applications to improve their daily work flow. They require more security, ease of use, accountability, business focus… Why not avoid those “$10M, 3 years” burdens that made ERPs famous and deliver more to your users? More dynamic, more usable, more often, more complete…

ECM platforms should not be huge monolithic applications. The SOA pattern gives a golden opportunity to deliver great applications to your end users while keeping all the advantages of reusable and centralized software.

This is our real business. This means a lot to us. It’s available today. Try Nuxeo EP.

Still thinking Open Source cannot innovate?

Stay Tuned! ;-)

EB.

Posted by Eric Barroca @ 09/03/2007 03:03 PM. - Categories: ecm, java, nuxeo, nuxeo5 -  0 comments
08/30/2007
Nuxeo EP 5.1.0 GA aka "Memphis" released!

I know this might not be fresh news, but as there is no mention on blogs.nuxeo.com, here it is! :-)

Our core team haven’t rest a lot this summer… Nuxeo 5.1.0 GA (codenamed Memphis) has been tagged and released two weeks ago! This new released is a big step forward for our ECM platform. There is many new features and technical improvement in this release. And that’s great! :-) To get an overview of what’s new in this release, please see the document “New and Noteworthy”.

From a technical point of view the release of Nuxeo EP rely on strong foundations: Nuxeo Runtime 1.3.2 and Nuxeo Core 1.3.2 has been also released some days before the full platform.

For developers and integrators, all artifact have been seeded to our maven repository. Maintenance related fixes will be done in the 5.1 branch in our repository (which will roll out 5.1.x series) while major development work for new features will happen in the trunk (5.2.x series).

A special note on the performance and scalability front: we have done a huge work on this side and ran extensive performance testing (benchmark docs will be published in the following days). But most important… the platform is fully scalable at the service level. This means that platform services can be spread on any number of servers (which means you can tailor your deployment architecture to your application needs). Plus, the platform’s build system (fully based on Maven) allow to easily generate nuxeo.ear for each machine of your multi-machine deployment infrastructure, depending on services you select by configuring assemblies for each of your server (ex: nuxeo-search.ear for the search and indexing machine, nuxeo-core.ear for the content repository server, nuxeo-platform.ear for other services and nuxeo-web.ear for you web front-end).

Thanks a lot to the whole development team and the supporting community. This is a really good piece of software! On to the next version!… ;-)

To go further:

I hope to be able to blog more in the future to give more update on the software (new features, improvements, tips) and on the ECM in general. So much to say, so little time… ;-)

Stay Tuned!

EB.

Posted by Eric Barroca @ 08/30/2007 03:55 AM. - Categories: ecm, java, jboss, nuxeo, nuxeo5 -  0 comments
02/09/2007
Nuxeo's vision: ECM is to unstructured information what ERP was to structured one!

At Nuxeo, we think that ECM is to unstructured information (documents, actually) what ERP was to structured information in the ’90s. An innovative approach is needed to solve today’s business problems, unifying processes and tools for managing and storing this information.

Nuxeo offers a new vision for ECM, driven by today’s world's requirements. A world where most of the information to manage is produced by people using software. A world where most of the information produced by organizations remains unmanaged despite its exponential growth. A world where regulations and businesses survival require to put all this content under a strong and efficient control.

Nuxeo proposes a seamless experience, streamlining all aspects of content life-cycle. From capture/production to archiving, through indexing, publishing, approval or compliance checks, Nuxeo provides to companies a global platform to manage their content, given companies’ rules and specificities. Be it for thousands documents or for millions.

Nuxeo Enterprise Platform offers a unique experience to users and managers, integrating collaboration features into the document management system. Traditionally, document management and collaboration components are separated and seen as different applications by software vendors. In the 90’s, when this discipline was invented, DM was designed to reference, index and manage rooms of paper archives. This is not the case anymore: content is now digital and is authored or produced by software. Content to manage is tons of files, not tons of paper! How a solution designed from the ground to manager paper-based information and references could be adapted to manage tons of files, emails, IM, etc.? It can't. It’s a real change in the content management paradigm: new requirements, new promises, new features and new foundations. Using ’90s requirements to manage today’s content is as inefficient as using steam engines to power 21th century’s trains.

Nuxeo streamlines content production, collaboration and document management into a global thought and design. Users can create content, share it, collaborate, apply business processes, classify it using the same application, same paradigms. Eventually, users can use a document management system without even knowing they are doing DM: they are just working together on content as they are used to with shared drives. But this time, content is managed, accountable, indexed and ruled by company’s standards.

Want a preview of what it means? Just download and try Nuxeo EP 5.0 now! :-)

Stay tuned for more!

Posted by Eric Barroca @ 02/09/2007 02:03 AM. - Categories: ecm, nuxeo, nuxeo5 -  0 comments
02/06/2007
Open Source ECM: Nuxeo EP 5.0.0 aka "New Orleans" released!

After a few weeks of refactoring / cleaning / testing, I am really proud to announce, on behalf of Nuxeo, the final release of Nuxeo EP 5.0.0 code-named “New Orleans”. Proud of what we have achieved in the last year. Proud of the technical infrastructure, code quality and overall platform.

It’s really a turning point for our community, our customers and our company. And I would like to deeply thank them all, starting with our development team and external contributors.

This release means a lot. It means a complete technology switch from Python/Zope to Java (EE) 5, JSF, EJB3, etc. It also means that we are proving that innovation is still at the core of our business with this new platform, designed with extensibility and developers’ needs in mind.

Nuxeo EP is not about a product. It’s about a platform. A platform to power a great community and ecosystem, allowing easy extensibility and pluggability through third-party add-ons and extensions.

We managed to build an extensible and full-featured ECM platform. Please help us make it grow and make it a major Open Source enterprise-grade project, by giving feedback, reporting bugs, asking for new features, writing extensions, etc.

We will be as supportive as possible to help you to be ready to contribute. We would be delighted to get feedback.

This release is just the beginning of a long journey that we expect to be a major hit in the ECM market.

We will be as supportive as possible to help you to be ready to contribute.

Stay tuned for more! :-)

EB.

Get Involved:

Posted by Eric Barroca @ 02/06/2007 12:10 AM. - Categories: eclipse, ecm, java, jboss, nuxeo -  0 comments
11/23/2006
Nuxeo's presentations @ JBoss World Berlin 2006

Arnaud, Thierry and I are just back from the JBoss World in Berlin. We had a great time and met for the first time the JBoss community. It was very interesting to get feedback on our vision and technologies we have exposed. Participants to conferences reacted very well and we are pleased to see that our software are really interesting for the community.

Regarding the event itself, I've been pretty impressed by the status of the JBoss community: large presence, very professional but still fun, lot of interesting discussions, etc. I hope we will be able to propose the same kind of event to our community next year (it's the plan, at least). JBoss people and conference attendees were very open to the discussion and it was great to exchange.

And last but not least, the famous JBoss Party deserves its reputation! ;-)

Here are the slides of presentation we have made, as PDF:

If you would like more information, do not hesitate to drop an email in private or on the mailing-list!

Posted by Eric Barroca @ 11/23/2006 02:05 AM. - Categories: java, jboss, nuxeo, nuxeo5, slides -  0 comments
11/17/2006
Next-generation ECM: Nuxeo EP 5.0 RC1 is out!

I am very pleased to announce that we just released the first release candidate of Nuxeo Enterprise Platform, our new platform for Enterprise Content Management, fully based on Java EE 5.

I sincerely thank all the development team for their huge efforts those past 6 months that have allowed us to release the platform as planned (ok, we are one day late due to some installer issues, but I believe one day is OK :-).

The version 5.0 of the ECM platform focus on infrastructure. Strong yet flexible foundations are in place. And we already have experienced that new features can be quickly and efficiently built. And you also get a very nice user interface for free! :-)

Highlights

Nuxeo EP 5 is designed for today’s content management needs in the enterprise. Based on a full Java EE 5 architecture (EJB3, JBoss Seam, JSF, JMS, etc.), leveraging OSGi and Nuxeo Core, it’s built for true extensibility, high-performance, high-availability, large scale, distribution and information system integration.

Extensibility

All the platform can easily be extended or configured through extension points. You don’t have to modify the code to bring in your add-ons or custom behaviors. Just write your component, plug it to corresponding extension points and deploy it! The whole platform is designed this way, making it really modular and pluggable. It’s just a set of components mutually extending themselves…

Extensibility is really a core asset of our platform. Nuxeo Runtime proves its power and efficiency, leveraging the OSGi standard.

Query Language

Nuxeo EP offers a convenient yet powerful way to query the content repository: NXQL, a SQL-like query language. It presents the content repository as a unified SQL-friendly database (schemas, content types and versions are mapped to table). You now can easily make reports on your content using SQL syntax
(ex: SELECT Title, Description, Subject, Date FROM schemas.dublincore WHERE Title CONTAINS 'Nuxeo').

Moreover, a ODA connector is available for Eclipse BIRT is available. JDBC and OLEDB connectors are on the way…

Querying and making reports of your content has never been so easy!

W3C XML Schemas

Nuxeo EP use XML Schema as its native format to define content types. To add a new content type, just put the XSD into a package, register it through an extension point and Voilà! :-)

Content schemas are assembled into Content Type and injected into the storage engine (Jackrabbit, by default). This allow great use of existing XML schemas (such as DublinCore, NewsML, etc.) without transforming them into a proprietary schema format.

Relation Engine

The relation engine allow to manage relations between your content. This is a very important feature to take care about updates and content lifecycle. For example, you can specify and trace dependency between document so that when a document is updated, users need to check that all dependencies are met. Moreover, is uses the standard RDF format and the powerful Jena RDF database, allowing high-performance storage and query of relation graphs.

Security Model & Audit Trail

Nuxeo EP offers a modern security model based on ACP/ACL/ACE concepts. Each node of the content hierarchy can hold several ACL that contains ACE (grant / deny permissions to users/groups). Services can use specific ACL on documents to override manually set security without messing it up. The security model, enforced at the repository level, can really allow you to model any applicative security you need without the common burden: Nuxeo EP handle it for you.

Moreover, all actions are logged into the audit trail, allowing easy and efficient activity reports, traceability and content auditing.

Desktop integration through drag & drop

Uploading files into Nuxeo EP is really easy. Just drag & drop files from your desktop to your browser and they will be uploaded into the platform in the workspace displayed in the browser. You have modified documents on your computer and want to update them in Nuxeo EP? Drag and drop them into your browser, they will be versioned and uploaded straight away!

This features is available for Firefox and MSIE.

Workflow Service and Life Cycle management

Nuxeo EP includes a workflow service, based on JBoss jBPM, that allow to design processes and apply them on content. With this service, you can easily create workflow processes for review, approval, publishing, etc.

Moreover, document’s life cycle are managed through a dedicated service, where you can define content life cycle schemas and manage them through workflow processes or manually.

Eclipse RCP client

Last, but not least, Nuxeo Core is also available as an Eclipse RCP bundle is also available. It allows you to create rich client applications, based on RCP, that store documents locally or remotely inside Nuxeo EP. Nuxeo Core can connect remotely to Nuxeo EP via EJB connection and transparently store content into the remote content repository, as well as into the local one. We intend to make this API the core of Eclipse Apogee.

A demo application, leveraging this feature, is available in our SVN. This demo can also be used to massively import content into the repository (import directory feature).

Download and join us!

An installer is available: Nuxeo EP 5.0 RC1 Installer. Feel free to try it out and give us some feedback. We would be delighted to get it.

Links:

Posted by Eric Barroca @ 11/17/2006 04:58 AM. - Categories: eclipse, java, jboss, nuxeo, nuxeo5, rdf, rich_client -  0 comments
09/27/2006
Nuxeo Runtime 1.0: Extension Points for Java EE and OSGi for JBossAS

We today released (under the EPL and the LGPL) the version 1.0 of Nuxeo Runtime.

Nuxeo Runtime offers a coherent component model for Java applications based on OSGi that makes them runnable on any Java platform with virtually no modifications. Nuxeo Runtime also offers a flexible extension/plugin system for any Java / Java EE application.

We today released (under the EPL and the LGPL) the version 1.0 of Nuxeo Runtime.

The inception

The original idea was born when we were confronted with the problem of deploying several core components of Nuxeo ECM (our ECM platform) to several Java platforms. Our initial goal was to make Nuxeo Core run on JBossAS and Equinox without modification to avoid the burden of maintaining two separate branches of the components.

Working on this issue, we also quickly figured out that nothing like Eclipse extension points was available for Java EE and that this would cause us some troubles since Nuxeo EP needs to be fully extensible, to allow ISV and system integrators to customize and develop new features without doing any code/package change on our certified components. Moreover, we like to think about and design applications as a set of components that extend each other (thanks to the experience of our previous ECM platform).

This approach is a tremendous feature for all business platforms. I believe it’s one of the main reasons of the current Eclipse success.

So we decided to work on a new system that would allow us to deploy our components to any Java platform (Java EE application server and OSGi) without code changes. This new system would also need to provide a flexible extension system allowing component to provide / consume extension points mutually.

We then went to the “Let’s find a name” phase with the usual internal arguments.

Nuxeo Runtime was born…

Requirements

The requirements for Nuxeo Runtime were pretty simple and quickly defined.

  1. Deploy POJO components to any Java platform (Java EE application servers, Eclipse, etc.)

  2. Offer an extension system usable by any Java component (POJO, EJB, whatever)

  3. Minimize the work required to support new Java platforms (we want to support Glassfish very soon, for example)

  4. Reuse as much as possible from existing standards

Now, the easy part: “how to implement that?”… :-)

OSGi: the Package Model

Because we were familiar with Eclipse RCP, OSGi quickly came to our minds for the package model. After some analysis, we decided to go with it for several reasons:

  1. It is a standard and is gaining momentum in the industry

  2. It provides all the features we required (dependencies, versioning, etc.)

  3. It is simple enough yet powerful and flexible

  4. It is vendor-neutral

Moreover, current activities around OSGi (adoption, extensions, etc.) made us feel confident in its future.

As OSGi is not supported by all Java platforms, we created an adaptation model that allows host adapters to be written. These adapters mimic an OSGi platform using native features of the host platform.
OSGi bundles are, then, seen as native component of the host platform. For example, on JBossAS, your component is seen as a native MBean.
We currently have an adapter for JBossAS, and Eclipse is supported without adapters since it’s an OSGi platform.

Extension System: Everything is a Plugin!

Another very important feature we required was an easy way to make our components pluggable. We wanted to make it easy to write plugins for our components. We like the approach of a set of components extending themselves mutually to form the final application. Furthermore, we strongly believe that easy extensibility is the key factor for a platform’s success.

We started to work on an extension system, inspired by Eclipse extension points and Zope’s component architecture.

So Nuxeo Runtime provides a flexible plugin system based on extension points that allow any component to declare extension points that others can use to extend/configure. Nuxeo Runtime manages the extensions tree and takes care of bindings. Any Java and Java EE component can use this system to become pluggable with almost no change.

The final model is close to OSGi Declarative Services. We plan to fully support this in the next release. We’re also thinking of adding support for Eclipse’s native extension system.

Extensible Java and Java EE applications and Composition

Thanks to Nuxeo Runtime, any Java and Java EE component can offer extension points to become extensible.

This allows an approach based on true composition to build your applications. Take the components you need, let them plug and extend themselves. Then write one (or more) “customization” component and make it bind them all.

I really believe this opens an amazing way to create componentized Java EE applications.

Just forget the pain of specific builds, enjoy composition!

Example: Nuxeo Transformation Service

For a real-life example, let’s take Nuxeo Transforms, our document transformation service for Nuxeo EP.

First, the NXTransform package defines the transformation infrastructure (transformer, transform chain, etc.). It does not implement any real transformation code.

NXTransform, by itself, will never transform your MS-Word document into a nice PDF. Neither will it extract plain text from a PDF. It only defines a couple of Session Beans / Message-Driven Beans that can be called to ask for a transformation, and offers a set of extension points (to plug real transformers and to define transform chains). NXTransform.sar will never change, whatever transformation chain and transformers it needs to offer.

Now, take a look at NXTransformPlugins, the default set of transformers we provide in the platform. You can find in this package the transformers and the transformation code. You can see the JOOConverter transformer as well as the PDFBox transformer. This package just plugs the embedded converters to NXTransform’s extension points to register its transformers.

Want to add transformation capability? Just write a new component to implement the transformation and plug it into the transformation service. Need a new transform chain? Just add a bundle descriptor that will configure the new transform chain.

Have a look here for an Adobe PDFGenerator integration: Nuxeo Adobe PDFGenerator Transformer.

Before runtime, Nuxeo Transforms has no need to know anything about what transformers will be available. You only need to build it once…

To give some metric, the implementation of the transformer “PDF to plain text”, based on PDFBox, took 30 minutes. Tests included…

Wanna Play?

Just head to Nuxeo Runtime Page, download it, read the documentation and start coding! :-)

Currently JBossAS and Eclipse are supported (in fact, it should run natively on any OSGi platform but it’s untested). We would love to give help if somebody volunteers to support more platforms (e.g.: Glassfish, Geronimo, JOnAS, Websphere, Weblogic, other OSGi platforms, etc.).

If you need support or simply want to discuss just join the mailing-list.

One more thing… If you like it don’t forget to send a postcard to Bogdan Stefanescu (c/o Nuxeo, 18 rue Soleilet, 75020 Paris, France) that made it possible! ;-)

Stay Tuned!

Posted by Eric Barroca @ 09/27/2006 05:07 PM. - Categories: apogee, eclipse, java, jboss, nuxeo, nuxeo5 -  0 comments
09/21/2006
Nuxeo switches to Java technologies

As you may have already seen on the web, we are announcing a big transition for our ECM platform: we are switching from the Zope application server to the Java platform.

Nuxeo 5.0, successor of CPS, will be entirely based on the Java platform. It benefits from modern java technologies such as Java EE 5, JSF, JBoss SEAM, OSGi, etc. This transition started 8 month ago, when we have begun to integrate Java component into CPS. We, then, evaluated technologies from the java world, figured out that Java 5 was a big improvement, made some tests and research and finally decided to go with it for our next products.

This may be a big surprise for our long-term users and developers, but we believe we have made the right choice. Furthermore, we are not abandoning CPS, which will be supported for at least 3 years. We are taking it to the next level.

The new platform is still under intensive development and you can expect more announcements in a few days...

Nuxeo 5 will be available in 2 editions:

  • Nuxeo Enterprise Platform to deploy large scale ECM solutions
  • Nuxeo Rich Client Platform to create ECM oriented desktop applications

Nuxeo 5 introduces some innovative approaches and technologies:

  • Nuxeo RuntimeWrite once, deploy anywhere
    • Platform independent deployment and extension system (inspired by Eclipse’s extension point) that can be use to make any Java 5 / Java EE application easily extensible through plugins.
    • OSGi-based bundle model
    • Deploy to any Java platform through adapters (it currently includes adapters for JBoss and Eclipse)
  • Nuxeo Core“an embeddable enterprise content management core”
    • Full-featured document / content management engine
    • Based on the JCR API for persistence
    • Offers POJO and Java EE API
    • Offers a smart and powerful SQL-like language for querying the repository (Eclipse BIRT data source available)
    • Fully extensible through plugins
    • Deployable on JBoss and Eclipse
  • A set of components that forms the ECM platform

The first public and stable release of Nuxeo 5 is due for November 15.

Related reading:

Posted by Eric Barroca @ 09/21/2006 03:06 PM. - Categories: eclipse, ecm, java, nuxeo, nuxeo5, rich_client -  0 comments
Last modified: 01/31/2006 03:23 AM

Nuxeo Bloggers: Log in!
Search Nuxeo Blogs
About this blog

Eric Barroca
Executive VP of Operations
eb@nuxeo.com
Subscribe !

Subscribe to this blog (ATOM / RSS)

Subscribe in NewsGator Online

Photos and Pictures
Nuxeo - Indesko - Nuxeo 5 Project
All content is copyrighted by their author.
CPSSkins is Copyright © 2003-2006 by Jean-Marc Orliaguet. | CPS is Copyright © 2002-2006 by Nuxeo SAS.