IBM Content Navigator (ICN) is a massive leap forward for the OOTB Enterprise Content Management user experience. One of the most important features is the plugin interface. It allows organizations to extend or alter functionality in a maintainable way that persists nicely through upgrades and fix packs*. I’ve been working on a talk for a couple of UserNet meetings about ICN Plugin Development and, as I’m not a developer day-to-day, I realized that there are great tools available to make this work easier, but that they are hard to find and confusingly documented. This is my attempt at a clear and easy to understand getting started guide.
First thing’s first, some reference materials.
- Customizing and Extending IBM Content Navigator, the comprehensive Red Book on this subject.
- It was written for v2.0.2, but is still accurate for v3.0.
- This guide is a good tutorial on doing the examples it provides, you won’t get beyond the examples quickly if you don’t learn Dojo first, but definitely worth the read.
- The IBM Knowledge Center, the primary documentation of the product and the guide to all the APIs and interfaces.
The Future of Big Data
With some guidance, you can craft a data platform that is right for your organization’s needs and gets the most return from your data capital.
Next, we need to configure our IDE. You’ll find buried in the Red Book (Release 2 from 2014 ID: sg248055, Chapter 3 section 2, linked above) a reference to an Eclipse/RAD Plugin contained in the additional materials.
- The direct link to these materials (zip file, over FTP) is here.
- You’ll also need Eclipse (or RAD, but for this purpose I’m assuming Eclipse), after some quick testing I determined that Neon will not work, Mars works just fine, here’s the link to the version I’m using (download links are on the right of that page).
Once you’ve got Eclipse installed at a base level
- open the Red Book Zip and get the 2 JAR files out of this directory: SG248055.zip\usecase\Chapter 3 Setting up the development environment (com.ibm.ecm.icn.facet.EDSPlugin.202.jar and com.ibm.ecm.icn.plugin.202.jar).
- Copy those jars to the “plugins” directory inside the main eclipse install location (when you unzip the eclipse download, you’ll find the plugins directory in the same directory as the eclipse executable).
Once you’ve added the Eclipse Plugins you can create an ICN Plugin or EDS project in Eclipse. These Eclipse Plugins ensure
- that your project has all the requisite parts,
- that the build script (Ant) is set up correctly to create a JAR that ICN will read correctly (manifest entries).
When you’re working with an ICN Plugin
- If you right-click on the project or the main class an item is added to your context menu for IBM Content Navigator which allows you to quickly add elements for your plugin to provide (Features, Menus, Request/Response Filters, Services, Actions, etc.).
- It quickly provisions the right collection of base files and configurations for the selected class of element (and updates the main class to ensure it is provided).
These little things take a good bit of pressure off of development to understand the nuances of ICN’s interface and allows them to focus primarily on the functionality they wish to add or modify.
its really helpful. do you have any Idea how to deploy/test these IBM CN plugin in RAD itself
Gosh, I haven’t used RAD in a very long time. Are you thinking about running a local instance of ICN in RAD and deploying the plugin to that instance? Or do you want to deploy the plugin to your server-running ICN instance directly from RAD? Either thing should be possible, but it might be tricky b/c you’d need to integrate with the ICN Admin REST API, which is not terribly hard, it’s just tricky. I don’t, however, think there’s an OOTB solution here.
Also, just a note, the latest up-to-date Eclipse Plugin for ICN Plugin development is now hosted on Github: https://github.com/ibm-ecm/ibm-content-navigator-samples/tree/master/eclipsePlugin. IBM has also posted in the repo a large and growing number of sample plugins to do all kinds of useful things.