Table of Contents
Objective: To familiarize you with the basic features and functions of an Enterprise Content Management system through exploration of the Nuxeo EP server.
The website is down. "The sales guy" (as seen on youtube).
If you have any comments, questions, or general-purpose harassment you would like give us about this book, then please use the comment form at the bottom of each page! We promise that we will try to incorporate any feedback you give (minus the profanity, of course), will respond to your questions, and credit you appropriately.
This lesson is not long enough to have a full explanation of the meaning of Enterprise Content Management or the software that implements this function, often called an ECM system. In the preface to this volume, we have provided you with a short discussion of the basics of ECM. (It's likely you know something about ECM already, you are reading this book!) [Definition: To repeat, in a short form, an ECM system is for the creation, discovery, management, and distribution of content, especially unstructured content.]
Many organizations have found that they are unable to locate or manage the content that they have, leading to enormous wastes in resources since useful content ends up being created multiple times rather than being reused. For example, a technical writer in an organization writes a summary of a product called frobnitz that his or her employer sells; ideally, that content should be reused in product brochures about the frobnitz, published to the website on the frobnitz page, and perhaps integrated into a comparison document circulated internally about how the frobnitz compares to the competition's offering. If the tech writer were to submit the summary to the [Definition: repository, the central location where all the content is stored], of an ECM system, this content reuse could be achieved. The technical writer's document would at least be found and consulted when each of the other documents is created, and perhaps even incorporated without change into the work of other users.
Another key function of ECM systems, including Nuxeo 5, is the ability to automate organizational processes that involve content in the repository. [Definition: Automating a business process that involves multiple users and is based on documents is often called workflow.] A simple example of workflow is document review before publication: Alice writes a document and wants to publish it to the website. Alice submits the document to the repository and begins a workflow called 'Approval For External Publication' that involves her boss, Bob. Bob is notified the next time he accesses the ECM system that he has work to do. He uses the repository to find and access the document, and then uses the workflow subsystem to indicate 'Approved.' At this point, the document is automatically made available via the website by the ECM system, and the workflow is marked as completed.
This will be a brief introduction to some of the basic functions of
Nuxeo that are available in the standard system download. For a more
detailed discussion of all the capabilities that are offered to a Nuxeo 5
user, see the User's Guide at
http://doc.nuxeo.org/5.2/books/nuxeo-user-guide/html
.
In the previous lesson we
showed you how to start the Nuxeo server and go to the login screen. Now,
we will take the next steps and log in to the system and use some of it's
features. A freshly installed Nuxeo system has the user name and password
"Administrator" (note the capital 'A'). Try logging in to the system with
your web browser at http://localhost:8080/nuxeo
and the
Administrator account. When you have succeed, you should see a web page
like this:
If you are new to the Nuxeo system or ECM, you will find it very illuminating to "play with" all the parts of the visible user interface. Some fun exercises to do are:
Create a two new users, Alice and Bob via the 'members management' link. Create Alice in the 'Administrators' group and Bob in the 'Members' group.
Logout as Administrator and log back in as Bob. Explore the user interface, noting the differences between what a "normal user" sees and what an administrator sees.
Upload a document as Bob and alter some of its properties. Submit the document for publication via the 'Publish' tab.
Logout as Bob and log back in as Alice. Check your dashboard and find the document Bob has submitted. Approve or reject the document and give a reason in the comment section. If you have approved the document, verify that the document has appeared in one of the Sections.
Create a new workspace 'foo' and alter the permissions so that Bob can rename of the workspace and add content to it.
Log out as Alice and log back in as Bob. Check the status of the previously submitted document and the comment made by Alice. Look at the document's history to get an overview of all the activity.
Go to workspace 'foo' and (try to) change the name to 'bar'. Create a new "Note" document in the workspace. (A 'note' has no file associated with it, just meta-data.)
Use the workflow system to set up a 'review' of the document. Put some questions from Bob to Alice in the comment sections when asked.
Look at the dashboard as Bob to see the status of the two documents that he has created. Log out and log back in as Alice to respond to the workflow...
Again, the Nuxeo User's Guide,
http://doc.nuxeo.org/5.2/books/nuxeo-user-guide/html
, covers
all the features of the system in some detail.
iansmith@Photo /nuxeo $ cd /nuxeo/tools/NuxeoEP5/NuxeoServer/bin iansmith@Photo /nuxeo/tools/NuxeoEP5/NuxeoServer/bin $ ls classpath.sh* probe.bat* run.jar* shutdown.sh* wstools.bat* jboss_init_hpux.sh* probe.sh* run.sh* twiddle.bat* wstools.sh* jboss_init_redhat.sh* run.bat* shutdown.bat* twiddle.jar* jboss_init_suse.sh* run.conf* shutdown.jar* twiddle.sh*
In the
screen listing above, you can see that when you navigate to the
bin
directory of the Nuxeo server, you see some files
that are associated with JBoss. In fact, all of the scripts in the
bin
directory manipulate the JBoss server rather than
Nuxeo proper. Nuxeo 5 runs inside the JBoss application
server. As of Nuxeo 5.2, the version of JBoss used is 4.2.3 GA.
If you are unfamiliar with software development for or administration of
JBoss there is no need to worry. This book will cover what you need to
know about JBoss, and in truth that amount is very small.
Why is Nuxeo designed this way? Nuxeo software follows the open source software principle of "building on the work of giants." This means not rebuilding subsystems that others have already built! JBoss provides a number of key features that the Nuxeo system "rides" on. For example, JBoss provides support for interacting with databases via JDBC (Java DataBase Connectivity) and JNDI (Java Naming and Directory Interface). Most importantly, JBoss provides the "web connector" that allows the Nuxeo server's capabilities to be accessed via the web-as you saw when you logged in above.
If you are familiar with web application development in Java, the
Nuxeo 5 server is implemented as a Java 2 Enterprise Edition (J2EE)
application and deployed as an Enterprise Application Resource, a
.ear
module. If you are not familiar with enterprise
web applications, no need to worry! You do not need to work with J2EE to
build new capabilities or applications with Nuxeo server. J2EE
is how Nuxeo is implemented, not how you will implement your
code.
The most important directory for configuring Nuxeo 5, if you
followed our instructions on installing Nuxeo in
/nuxeo/tools/NuxeoEP5
, is
/nuxeo/tools/NuxeoEP5/NuxeoServer/server/default/deploy/nuxeo.ear
.
This is the "exploded" version of a distribution of Nuxeo; in principle,
the entire system can be distributed as a single file-with many files
compressed inside it, but this is less convenient for most users who want
to configure the system. In configuring a Nuxeo server, most users need to
edit some of the files in this directory and its subdirectories. If you
ever have the need to upgrade or change your installation, it would be
wise to save all the files in this directory and all its
subdirectories.
Some of the key subdirectories' contents are:
config
This contains the configuration
files for many parts of the Nuxeo system, including the
repository.
datasources
This directory allows to
configure Nuxeo to use your particular database. By default, Nuxeo is
set to use the H2 embedded database
(http://www.h2database.com
) that requires no external
programs to function. In the file
datasources/default-repository-ds.xml
are some
commented out configuration examples for other databases such as
postgres and derby.
lib
This directory contains third-party,
open-source libraries that Nuxeo uses.
nuxeo.war
This directory contains the
html
files, xhtml
files,
graphic files, css style sheets, and other files that make the user
interface of Nuxeo 5 when you visit it in your web browser.
This directory is re-generated each time you start the server, so do not try changing the files in this directory as your changes will be lost. You can change the files that get placed in this directory by editing bundles (see next lesson).
plugins
This is where your code is placed
when you have built an extension to Nuxeo, normally packaged as a
'bundle' which will be explained more fully in the next lesson.
Normally, this directory is empty when you have a fresh installation
of Nuxeo.
system
This directory contains the
built-in, ECM features of Nuxeo 5. These are packaged as bundles also;
a fresh download contains about 125 bundles in this directory.
META-INF
This directory has a number of
configuration files in it. These are used to tell JBoss information
Nuxeo and are normally not something that developers would need to be
concerned about unless they are working on the Nuxeo system
itself.
As we noted before, the Nuxeo server runs inside JBoss, using many
of its features. One of these features is logging and to configure the
logging level of Nuxeo you need to make a change to the JBoss
configuration. The JBoss configuration file for the amount of logging you
desire is in the directory
/nuxeo/tools/NuxeoEP5/NuxeoServer/server/default/conf
in the file jboss-log4j.xml
. The output of
the logger can be found in the directory
/nuxeo/tools/NuxeoEP5/NuxeoServer/server/default/log
in the files boot.log
,
nuxeo-error.log
and server.log
.
The boot file is the information about the startup of the JBoss server and
the last is the information about the running system, including Nuxeo. The
configuration file log4j
only affects the
server.log
logging. The middle one is usually empty
except in the case where Nuxeo has detected a problem.
To change the amount of logging you see, on the console or in the log files, you must change the log level or "Threshold" used by the JBoss server. This is the snippet of XML from jboss-log4j.xml that controls the output to the console window:
<!-- ============================== --> <!-- Append messages to the console --> <!-- ============================== --> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="Target" value="System.out"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <!-- The default pattern: Date Priority [Category] Message\n --> <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/ > </layout> </appender>
In this listing, you can see the
Threshold is set to print information at the INFO
level
or more. To get more information, change the INFO
to
DEBUG
; to get less try using ERROR
or WARN
. More information about the (vast number of)
log4j configuration options can be found at
http://logging.apache.org/log4j/1.2/index.html
.