Nuxeo Studio Documentation
Nuxeo Studio Documentation
Nuxeo Studio Documentation
12/09/2014
Table of Contents
1. Nuxeo Studio Documentation Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1 Getting Started in Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Studio Overview and Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1.1 What can be achieved with Nuxeo Studio? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1.2 What do you need to know about Nuxeo applications? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1.2.1 About documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1.2.2 About layouts and content views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1.2.3 About workflows and business logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1.2.4 Plugins and extensions with the Nuxeo Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1.3 How To Get Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Working in Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 Branding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2.1 Branding Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2.1.1 Migrating My Branding to 5.5 New Branding System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2.2 Create multiple themes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 Content Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3.1 Schemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3.2 Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3.3 Life cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3.4 Structure Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4 Listings & Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4.1 Content Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4.1.1 Content View: Query & Form Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4.1.2 Content View: Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4.1.3 Content View: Enablement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4.2 Form Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4.3 Search / Advanced Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4.4 Tabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4.5 Virtual Navigations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5 Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.1 Workflow screens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.1.1 Workflow creation form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.1.2 Definition tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.1.3 Variables tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.1.4 Availability tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.1.5 Graph tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.2 Node popup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.2.1 Node General tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.2.2 Node form tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.2.3 Node Transitions Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.2.4 Node Variables Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5.2.5 Node Escalation Rules Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.6 Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.6.1 User Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.6.1.1 User actions categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.6.2 Automation Chains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.6.3 Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.6.4 Filtering Options Reference Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.7 Roles & Permissions Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.7.1 Add a new Permission in the UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.7.2 Add predefined users and groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.8 Vocabularies Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.8.1 Vocabulary Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.9 Advanced Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Administering your project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 Automated renaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2 Use Registries for Referencing Externally Defined Objects (Types, Operations, ...) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.3 Test your Studio config with a new version of DM or CMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.4 Update the Version of Your Target Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.4.1 Specific Upgrade Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.5 Version Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.6 Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.7 Automated validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.8 How to Enable Package Specific Features in Studio for DAM or DM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4 Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Deploying Your Project in Dev Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
4
5
5
6
7
7
11
12
12
12
13
13
18
19
19
19
20
24
25
26
26
29
32
33
33
38
39
43
44
44
44
44
45
45
46
46
46
48
49
49
50
50
50
52
63
66
68
69
69
70
72
72
73
73
74
75
76
76
76
80
82
83
86
87
87
88
89
90
91
98
99
100
101
103
103
103
104
105
111
111
112
113
113
117
119
119
119
120
123
123
124
124
124
125
126
127
128
130
Getting started
This page will give you an overview of what can be done with Nuxeo Studio and how you can create your own Nuxeo Studio
projects step by step.
Quick Start Dev Guide
Studio Overview and Concepts
Tutorials
The goal of this section is to provide ready to use examples. They can be followed step by step to learn how to use Studio on
practical use cases.
Deploying Your Project in Dev Mode
How-tos
Answers
In this guide:
What can be
achieved with Nuxeo
Studio?
What do you need to
know about Nuxeo
applications?
How To Get Started
Step 1
Check out what can be
achieved with Nuxeo
Studio
About documents
Documents
Nuxeo offers ECM applications that enable your organization to manage its documents in a dematerialized way. In Nuxeo applications, a doc
ument can contain an office file (Microsoft Office file, OpenOffice file...), a picture, a video, a PDF, etc. It can also have multiple binary files,
also holding metadata and other properties. Folders, workspaces, cases, sections are also considered as documents in the application.
Technically speaking, a document in Nuxeo is a "content object" that provides a consistent set of information called "properties" and enables
you to store/archive/fill in information in the "document repository". Once you have this, you'll quickly understand that having an environment
such as Nuxeo Studio to configure your document types is a great asset!
Properties
What we refer to as metadata are properties that are stored by a document. There are different types of properties: strings for text
properties, dates, booleans for yes/no properties, integer for numbered properties, blobs... They can also be a list of these types, such as a
list of dates, a list of strings... The blob property is used to store a binary content, such as a file.
Documents are not restricted to a single property of one type. On the contrary, they can store various string properties, or several blobs (ex: a
flash animation and its powerpoint storyboard).
Properties are grouped in schemas, which are sets of property definitions. For instance, Nuxeo uses the "Dublin Core" schema for most of its
documents. When you say "this document holds a Dublin Core schema", you actually say that the document has a title property, a description
property, a creation date, a modification date, an author, a subject, etc.
The schema is a nice concept to enable property definition re-use.
Facets
Beside properties, documents also automatically get some features thanks to facets.They are capabilities, or a potential behavior of your
document. Some examples of facets:
"commentable" makes the "comment" tab displayed so that users can comment on the document
"publishable" will display the publishing tab
"downloadable" displays the download link everywhere it should be displayed, etc
Not all the documents have the same facets. For instance, workspace, section and folder documents have the folderish facet, that is to say
that they can contain other documents (or that you can create documents in them if you prefer it the other way around). Notes, files, pictures
dont have this facet. The folderish facet allows the document to be displayed in the browsing tree, so that you can display its content in the
middle of the screen in the Nuxeo user interface.
Nuxeo Studio enables you to manage properties and create your own "folderish documents" in a centralized place, so you are not limited to
the built-in folderish types. This is a great time saving tool compared to doing manual configuration, whether you are working on a single
project or on many different ones. Of course, the more projects you work on, the more Studio will be saving your time, as you can easily
share your work from one project to another in Nuxeo Studio.
Lifecycle
In Nuxeo, Documents have a lifecycle, that is used to design the different steps of the life of a document. Not all document types have the
same lifecycle. A document will go from one state to another depending on how the usability of the document changes: has it been approved?
is it still legal for use? is it a definitive or a draft version? Going from one state to the other is called a "transition". The lifecycle defines a
set of states and the possible transitions between those states: every combinations are not necessary possible, depending on your business
constraints.
For instance, in Nuxeo DM, the lifecycle of a document is: project -> approved -> obsolete (and deleted). You go from "project" to "approved"
with the "approve" transition, and from approved to obsolete with the "obsolete" transition.
To control the state of the document, you can use, from Studio, automation chains and more specifically the Follow lifecycle transition operati
on.
Content views
Just like you can customize the forms and presentation of documents, you can also adapt the lists of documents to display information
relevant to the users of your application. Lists of documents are done using content views. Basically, content views are what is used in the
Content tab of your folderish documents (workspaces, folders, etc) and everywhere that lists of documents are displayed.
A content view is composed of two parts:
A filter that restricts the content displayed to the current space or a specific document type, depending on your need. Without this
filter, the whole content of your document repository would be displayed in your Content tab. We provide a default filter that
excludes documents that are hidden in navigation and that are deleted from the list of documents.
The results presentation, i.e. the configuration of the table in which the documents are listed, on which you can define all the columns
available
Content views are used to control the way you present information either in new tabs within documents view or after new search forms and
can easily be defined with Nuxeo Studio.
User actions
In Nuxeo applications, many links are provided to navigate between various features. For instance, when you are on a document, you have
various "tabs", and you also have icons on the top-right part of the screen (such as print, export, send via email...). You also have buttons on
which you can click after having selected various files in a folder. Another group of links is the one just below the worklist. All these links are
called "User Actions" in Nuxeo terminology.
Folder toolbar
Worklist
Clipboard
Header links
10
All the user actions categories are described on the page User actions categories.
Event Handlers
Sometimes, you want your business logic to be executed without requiring users to click on a button or link: you want an action to be
triggered automatically when an event occurs. Thats what event listeners (also called event handlers) are for. A listener is a piece of Java
code that runs some code when a given event occurs.
Some built-in events are: Document created, Document imported, Document modified, Document security updated, Document locked,
Document unlocked, Children order changed...
A sample listener is the "Dublin Core" Event Listener. It is enabled in our out-of-the-box products such as DM and DAM to systematically
update the contributors and last updated fields (dates) every time a "Document modified" event is fired, so that we always know who
participated in the modification of a document and when the last modification occurred.
Nuxeo Studio enables you to easily declare new event listeners. You need to bind them on one side to events of your choice, and on the
other side to content automation chains that you have edited in your project so that the selected content automation chain is executed each
time one of the selected events happens.
11
Working in Studio
In this chapter we will explain each screen exposed by Nuxeo Studio. If you are blocked in your configuration process on a specific screen, here
you go!
Resources
Resources is a section in Studio where you can upload various files that will be included in the plugin that Studio produces and that will be used
by your application at runtime. Resources files are usually referenced from another Studio feature.
12
Branding
The Branding section lets you manage the look of your Nuxeo instance. By creating a branding, you will change the header and footer, links and
backgrounds colors, the default font family and borders.
The first screen list all the brandings available. It's the first step to create your own branding.
The New button lets you create a new branding. You can override the one defined in Nuxeo or create multiple brandings and activate
them in different zone of your Nuxeo instance.
The Rename button lets you rename the theme selected in the list.
The Copy button duplicates the selected theme.
The Delete button lets you remove the selected theme.
Several brandings can be created but you can only have one branding set as default in your project.
You just created your first branding? Hooray, let's see how configure it.
Branding Configuration
There are 3 steps shown by 3 tabs to brand your application:
The Common tab will let you manage the global rendering of your application,
The Login Page tab will let you manage the login page rendering,
The CSS Editor will let you define your CSS rules that will be applied on each page of Nuxeo.
Common Tab
The Common page is where you will specify the main elements that define a branding: the logo, the colors and the font used by the default
view in Nuxeo.
Studio Configuration
After
13
In this section
Common Tab
Changing
the Logo
displayed
on Header
Changing
the Header
and Footer
Additional
Branding
Elements
Login Page Tab
Common
Changes
Additional
Options
CSS Editor Tab
Declaring a
New CSS
Class and
Its Rules
Overriding
an Existing
Rule
Specifying the
Default Branding,
Disabling a Theme
Branding
Specifying a
Default
Branding
Disabling a
Theme
Branding
Studio Configuration
After
14
Result
Common Changes
Basic Studio Configuration
Steps
Most of our customers apply the following strategies for their login page background image:
A picture covering all the screen. This is the strategy chosen by Nuxeo.
Or a logo with transparency as the background image, aligned on the top left (Horizontal alignment = top, Vertical alignment = left) +
a background color.
With a web designer's help, you can have many other possibilities.
Additional Options
15
Studio Configuration
Role
To let you customize the login screen
completely, the header, news and footer
can be removed.
If you have a simple color used as the
background image in the login page, you
can add a light pattern or a color to the
login box.
2. CSS Editor
3. Result
16
Create a new branding implies that it will be the default branding used in your application. The checkbox displayed under the Common tab will
be checked by default. If you created several brandings, be sure that only one of them is checked. Your branding will be used in your
application everywhere except if a local theme configuration is set.
If you don't want to use your branding during a test you can disable your default branding without deleting it.
Just tick the Disable theme branding option above the tabs. The tabs and their content will be displayed under a gray overlay.
17
The login page and logo configuration have not changed, but customizations of palettes (backgrounds, borders, colors and fonts) have been
modified to make it easier to use, and to make them match the new default branding.
Note that the migration process will keep some of the palettes customizations you did, but some will not be kept as they are not available for
customization anymore. Improvements to make it possible for you to define your own CSS customization are on the way.
If you were customizing the theme layout in a third-party module (to change one of the theme views for instance), you should be aware that
after migration, this structure is not generated anymore: the theme to override will be the default one (galaxy) instead of the customized one
(this theme used to be named after the studio project id if it was the default one).
Also, if you were overriding it only for the page structure, but still want to use the branding defined through Studio, you can remove all styles
from this definition as explained in the Migrating my Customized Theme documentation: maintenance will be easier after these changes.
Related topics
Nuxeo Studio quick start guide - A practical approach
Branding
Branding Configuration
Migrating My Branding to 5.5 New Branding System
Specific Upgrade Instructions
18
Content Model
Schemas
Documents
Life cycle
Structure Templates
Schemas
Concept
A schema in Nuxeo Studio is dedicated to define a list of metadata. There is no UI definition in this section, it is just a storage definition.
If you are not comfortable with this typical ECM notion, please read more about documents, properties and schemas in the theoretical
introduction.
Note that schemas can be defined directly from the Document type feature. One would configure a schema here when sharing of the
definition among multiple document types is known from the beginning.
Creating a Schema
To create a schema, click on New.
Feature ID: The id of the schema. Will be used as the technical id of the schema. It should not contain spaces or special characters.
Schema Prefix: Prefix of the schema. Prefix is used when referencing a document property (ex: dc:title for the Title property in the
Dublin Core schema), for instance in an NXQL query.
Schema names and prefixes
You should carefully choose your schema names and prefixes. There will be many references to them in your project (layouts,
automation, NXQL queries). Nuxeo Studio doesn't yet handle completely schema refactoring. Furthermore, once you deployed, if
you change a schema name or prefix, you will have to operate a data migration.
We suggest you to use name like my_schema_name (lowercase, word separated by an underscore) for the feature id and
something shorter for the prefix like msn (without reference to the dead IM :)). See the Naming Conventions page for more tips on
ids and names recommendation in Nuxeo Studio.
19
Editing a Schema
Add field:
Name: the name of the property useful to reference it (see the note below).
Type : the type of the property. Complex type will let you define a complex field like an address storing street, zip code, etc...
for instance.
Multi-Valued: if you want the property to be a list (a list of Blobs, a list of booleans, a list of Dates, ...)
Default Value: sets a default value on the property at document creation time.
Delete field: delete the selected line. (Although it is a checkbox, you can delete rows only one by one.)
You should carefully choose the field/property names, as changing them after going live requires a data migration. Furthermore,
Nuxeo Studio doesn't handle property refactoring completely yet.
Related pages
How to Add Complex Fields on Your Document Type
Content Repository
Documents
Concept
Read more about documents, properties and schemas in the theoretical introduction.
20
In this section
Concept
Creating a
Document Type
Definition Tab
Schema Tab
Creation, Edition,
View and Header
Layout Tabs
Tabs - Default Tabs
Filtering
Tabs - Content
Views
Feature ID: The id of the document type. Will be used as the technical id at generation. Convention is to use a capital for the first
letter.
Extend: The document type that the type being created will extend. Local types are the ones created in your Studio project. Default
types are the ones part of the Nuxeo distribution you use (Nuxeo DM 5.6, ...)
Adding a custom type
if you don't find the default type you are looking for, you can add it using the custom type registry.
Label: You can put here a label or an i18n key.
Description: The description of the document type. This description is here for information purposes.
Definition Tab
21
Icon: The icon that will be displayed in the default list view. Note that you can upload new icons on the resources section.
Large Icon: The icon that will be displayed in the "Available document types" pop-up and the Icon view (view available up to Nuxeo
Platform 5.8). Note that you can upload new icons on the resources section.
Default view: The default JSF view. This is a technical attribute that you probably don't want to change (will be moved in an
advanced section in the future).
Lifecycle: the lifecycle the document will follow. The theoretical introduction gives more conceptual details about lifecycle. You can
use a lifecycle that you defined in Studio.
Container types: The document types selected here are the ones from which it will be possible to create the document type being
designed.
Accepted children types: The document types selected here will be creatable just under the document type being designed. This
attribute only appears for document types that have the "folderish" facet.
Document Facets: Read the theoretical introduction for better understanding of what facets are. If you don't find the facet you are
looking for, you can add it using the custom facet registry.
Inherited schemas: The schemas that are hold by the document type because the document type inherits another one. If you
change the "Extend" attribute, this list might be affected. You cannot modify directly the inherited schemas.
Add extra schemas: Use this selector to add schemas that are defined from the schema feature.
Deployment mode: This is particularly useful when you declare a document type that already exists in the default product from
Studio, for instance "Folder", or "File". When the contribution generated by Studio is deployed on Nuxeo DM (for instance when you
click on "Update" from Admin Center), either you want to delete the previous definition, and use only what was defined from Studio (o
verride), or you just want to "complete" the definition from what you configured in Studio ( merge). A concrete example is: by default,
an icon is defined for the Folder document type. If you redefine the folder document type from Studio and don't configure the Icon
and Big Icon attributes, then if you select "override" for Deployment mode, your folders won't have any icon, while if you select
"merge", they will keep the icon that was originally defined.
22
Schema Tab
This is where you can define a schema for your document type. This tab is provided for simplicity and a wizard-like approach. But it is
equivalent to defining the schema from the schema feature and assign it from the definition tab. Read the schema section for more
information on how to define your schema (same screen and buttons).
Documents in DM are displayed with a series of tabs to display all the actions that can be done on documents. By default, a new document
type will hold all the tabs. From this view in Studio, you can disable some of them, for the document type you are configuring. This is a binary
activation/inactivation. If you want to refine the tabs display rules, you can contribute XML extensions to the action service, so as to override
existing contributions (for advanced users).
23
Content view tabs are tabs that display a list of documents in a table, that is the result of an NXQL query (a content view). You can read more
about content views in the theoretical introduction to Studio. You configure the content view with the content view feature and just reference it
here.
Main content: you can choose which content view is used for the document you are configuring. This appears only for document
types that are folderish.
Trash content : you can choose which content view is used for the document that are displayed in the trash. This appears only for
document types that are folderish.
Additional tabs configuration:
Label: The name displayed for this new tab. Can be a translated key.
Content views: You can reference several content views that will be displayed one after the other.
Order: The place of the tab on the document . You can put numbers like 0, 5, 10, 40, 150, ...
Tab enablement: (TODO: a specific page for this screen that appears in many places on Studio).
Using the Tabs feature
Adding a tab that displays a content view using this feature is easy and straightforward, but you can also use the Tabs feature that
provides more refinements like the ability to add buttons, other information, wrappers, etc...
Related Howtos
How to Automatically Convert a Document to PDF
How to Automatically Convert a Document to PDF
Life cycle
Concept
A life cycle is a set of states and transitions that apply to a document. One of the states is marked as being the "initial state" and is the state of the
document when it is created. States that the document can hold depend on the transitions that are set between the states. Default life cycle in
Nuxeo contains following states: project, approved, obsolete. One could see life cycle just as yet another metadata with a controlled list of values,
but actually the framework provides API around life cycle management, such as ability to "reset" the life cycle of a document, and ability to " follow"
a transition..
24
Structure Templates
Concept
When thinking of the structure of your repository, you might identify block of structures that will always be the same. For instance, by default with
Nuxeo DM, when you create a Domain, you get subfolders Workspaces, Sections and Templates. You might also want such behavior when doing
case management, so as to organize the structure of your case, ... Structure templates are actually a way of defining an automated structure that
is bound to a folderish content type.
In simple words: "Each time I create a document of such type, I will also instanciate children documents of this type and this type... with this ACL
(security) configuration". With Studio, you can contribute several of such rules.
25
replace the one available in the Nuxeo Platform Search tab. The Advanced search menu item available for previous
versions of the platform enables to define a new Advanced search form.
Tabs
Virtual Navigations
Content Views
Content view is the Nuxeo technology used to define a list of documents to display. The Nuxeo Platform uses this technology in these following
cases:
Content tab Listing
Search
26
Search
Form definition:
27
Once you defined your content view, you can use it for these following cases:
as the Content tab of your document type
in another tab of your document type
28
Starting from Nuxeo Platform 6.0, Elasticsearch is embedded in the platform. Check this box to be able to use the Elasticsearch aggregates
widgets in the form definition.
Query Filter Field
Defining the query lets you define the list of documents you want to show in your content view if no information is set by the Nuxeo user.
The Nuxeo query system is based on our NXQL technology, which is very similar to SQL query expression. For those who know SQL, using
NXQL will be very easy. For those who are not familiar with SQL, you can read the NXQL dedicated documentation and look at some NXQL
examples .
You don't have to specify the SELECT * FROM Document part of the request that is automatically managed by the content view. If the Quer
y filter field is empty, then there is no restriction. So it displays all documents, including:
Deleted documents,
Versioned documents,
Technical Documents normally hidden from end users,
etc.
By default, Nuxeo Studio fills this field to filter out:
documents marked as hidden in navigation (ecm:mixinType != 'HiddenInNavigation')
documents that are not archived versions (ecm:isCheckedInVersion = 0)
and documents that are deleted (ecm:currentLifeCycleState != 'deleted')
29
The Query Filter field enables you to express the "where" clauses of your content view filter. The query parameters field lets you define a
"where" clause based on the execution context. For instance:
The current date (for instance documents issued before today)
The user that displays the content view (documents created by the current user or to which the current user has contributed)
The currently displayed document (its document children, descendants or documents linked to the current document)
To express a dynamic expression:
1. Write your where clause in the Query Filter field but with a question mark as the right value (for instance ecm:parentId = ?),
2. Define the dynamic value in the query parameters field.
Here are some examples.
Query filter
Query parameter
dc:creator = ?
#{currentUser.name}
ecm:parentId = ?
#{currentDocument.id}
ecm:path STARTSWITH ?
#{currentDocument.path}
dc:issued < ?
#{currentDate.toString()}
When your query filter has several ? parameters, you must add the query parameters in the same order as the criteria in the query filter.
More information on NXQL and examples are available on the dedicated page in the developer documentation.
Note to people familiar with Nuxeo products customization: The syntax that is to be used in those parameters is the same EL syntax as the
one used in XHTML files. You have access to the SEAM context. Other sample expressions:
#{currentDate.toString()}: that can be used with date properties, like dc:created > DATE ?
#{currentDocument.dc.rights}
#{empty currentDocument.getProperty("dublincore","subjects") ? '%' : currentDocument.getProperty(
("dublincore","subjects" )} for multivalued property
Default Sort Field
The Default Sort field lets you express the default sorting applied to the results list. The end user can choose the sorting in the UI based on
column actions. If you want more information about that look the Result tab documentation.
30
If you want to sort through multiple criteria, just repeat the steps above for each criterion.
Flags
This section explains the flags section and what the different flags enable.
Search content view: Since Nuxeo Platform 6.0. Enables to have your content view available in Search tab drop down list. Selecting
this flag makes the Search layout required so as to have a search form displayed in the Search tab. It also adds a tab Enablement on
the content view in Studio to define when the content view should be available in the Search tab.
Document content: Enables to use your content view on a custom tab, or to have it available in the local configuration of a
workspace.
DAM: Enables to display the content view in the DAM tab.
Since Nuxeo Platform 6.0, the flag is available when you select the target package Nuxeo DAM Compat.
Faceted search: Since Nuxeo Platform 5.7. Enables to display the content view in the Faceted search tab and have it available in
the local search configuration of a workspace.
Since Nuxeo Platform 6.0, this flag is available when you select the target package Faceted search.
Advanced search: Enables to have the content view available in the local search configuration of a workspace.
Since Nuxeo Platform 6.0, this flag is not available anymore. You should use the Search content view flag instead.
Check out the page Specific Upgrade Instructions migrate your content views to Nuxeo Platform 6.0.
Search Layout
This section is focused on the search layout definition:
31
This is where you define the form, by drag and dropping widgets from the right panel into the form.
In this section
Default Filtering
Definition
Use
Elasticsearc
h index
Query Filter
Field
Query
Parameters
Field
Default Sort
Field
Flags
Search Layout
General Configuration
The first section of the Results tab enables you to define some general configuration on the content view results.
Number of results per page: The default numbers of documents displayed by page
Enable the user to edit displayed column: Enables the user to edit the search results displayed
Enable spreadsheet action: Enables the user to use the Nuxeo Spreadsheet features from the content view results.
Enable common actions (copy, paste, delete...): Makes the generic bulk actions available when user selects one or several
documents
Enable additional actions: Makes it possible to use custom actions on documents displayed in the content view. Click on Create a
new action to create the action to use.
Results Columns
32
Advanced Configuration
You can set some advanced configuration on the content results. Click on the icon
a look at the technical documentation about Content Views.
of each field to know how to use it. You can also have
In this section
General
Configuration
Results Columns
Advanced
Configuration
You can report to the page Filtering Options Reference Page for more information about each of these options.
Form Layouts
Concept
The form layouts feature enables to design forms and data display screens that you can map to document properties. Read more about layou
ts. Forms configured on this feature can be referenced in various places:
On other layouts (the one you define directly on the document type)
From a layout widget
33
In this section:
Concept
Form Layout
Creation
Creation Layout Tab
The Layout
The
Widgets
Palette
Configuring
Widget
Properties
Configuring
Widgets of a
Complex
Property
Edition and View
Tabs
34
The right part of the screen is called the "widgets palette". The middle is the "layout" (the data grid or form). You can pick up widgets on the
right, drop them on the layout, and then edit the properties of the widget (they are documented inline).
The Layout
Add Row: The action to add a new row on the listing. The data and form components will be displayed following the grid. You can
also add a row in a specific place by right-clicking
Add Column: The action to add a column. You can also add a column in a specific place with the right-click.
Set Table Size: Specify rows and columns number.
Using this feature will overwrite what has already been configured.
Import Layout: Enables to literally "copy/paste" the configuration you did for other layouts (Edit, or View or Header). You want to use
this to gain time.
To Nuxeo Platform developers
Contrary to what can be done at lower level with the layout framework, you need to redefine the layout for each mode
(Nuxeo Studio actually doesn't leverage the layout mode). This was done for purpose of simplicity. In the future we might
propose a solution that enables to also leverage layout modes.
Style class: You can specify a class that will be applied to all the area surrounding the form. You can either use an existing class
that you will find on the style guide or contribute your own class on the Theme feature.
Widget Display: You can control whether you want the form label just on top of the input or on the left, or to remove the display of
the labels.
Layout Template: It is an advanced option, for Nuxeo Platform developers. The widgets are displayed using an XHTML template
(JSF Facelets template). You can upload your own templates if you want to do some deeper changes on the way the data/the fields
are displayed. We propose you to download the default one used so as not to start from zero.
If you use a custom layout template, you will then have to maintain this template when upgrading the Nuxeo Platform
version and make sure it is still compatible.
35
Layout: The layout widget can be used to reference a complete layout definition. All the widgets that were defined in the
referenced layout will be displayed where you drop the widget.
Template: The template widget is the most permissive widget: you choose the property (or properties) to which you want to
bind it, you choose the XHTML (JSF Facelet) you want to use, and you can value the properties that your template expect.
Custom templates can be uploaded in the resources feature. For more information, you can refer to the documentation about
custom widget templates.
When you dropped a widget, you will be able to configure the properties of your widget, the field mapping, the widget type, as well as some
custom properties if you want. Just let your mouse on the question mark icon to see what the property is about.
36
By default, Studio will organize all the sub properties with a simple input text widget or a date, or anything, depending on the sub-property
type. But you can re-arrange the widgets, or delete them and pickup again the sub-property on the widgets palette on the right, and also
insert some build-in widgets, like a header that produces a separation, or a template widget, etc.
Currently, complex properties configuration using schema feature limits the complexity at one level. You can go over this limitation
by importing your own XSD. The layout editor will know how to handle the multiple levels.
37
Related Howtos
How to Add a New Widget to the Default Summary Layout
How to Use a Generic Widget in Layouts
How to Use a Generic Widget in Layouts
How to Add a New Widget to the Default Summary Layout
How to Create a N-Level Select Widget
How to Customize the Versioning and Comment Widget on Document Edit Form
How to Add a New Action Category on a Document Tab
How to Customize the Versioning and Comment Widget on Document Edit Form
How to Create a N-Level Select Widget
How to Control the Display Mode of a Widget
How to Add a New Action Category on a Document Tab
How to Control the Display Mode of a Widget
How to Add Field Validation
How to Set a Default Date on a Field at Document Creation
How to Add Field Validation
38
Related Documentation
Content Views
Content View: Query & Form Tab
Content View: Results
How to Configure a New Search Tab
Tabs
(TODO: the format of this page should be updated to follow the same approach as with other feature)
Concept
When you create new document types, you often need to have specific tabs on these document types that display information relevant to
your users. A Tabs menu item enables you to create customized tabs on which you can define the elements you want to be displayed:
widgets, layouts, content views, actions bars. You can also define the conditions that should be met to display the tab (on which document
types the tab will be available, for which users, etc).
Definition tab
39
and select the wished option in the window that pops up.
Drag and drop widgets from the left box into a cell (see the main widgets below).
The widget editor window pops up.
Click on Save to save your modifications, both in the widget editor and in the main window.
Enablement tab
The enablement tab defines when the tab should be available.
1. In the form, select the conditions that must be met for the tab to be displayed. For instance:
In the Current user has one of the permissions multi-select box, select the permissions the user must have to be
displayed the tab;
In the Current document has one of the types multi-select box, choose the documents types on which the tab will be
displayed;
In the Current document has facet drop-down list, select the facet that the document must have for the tab to be displayed;
In the Current document has life cycle text box, type the lifecycle state the document must be in for the tab to be
displayed;
In the Document path starts with text box, type the path the document must be in for the tab to be displayed;
In the Current document is drop-down list, select the kind of document must be for the tab to be displayed;
In the Current user is member of text box, select the user group the user must be part of for the tab to be displayed;
Check the Current user isadministrator checkbox if you wish to restrict this tab to administrators group members only;
In the Custom EL expression text box, type an EL expression that should be evaluated for the tab to be displayed.
Keep in mind that requirements are cumulative; the tab will be displayed only if all previous conditions defined are met. You may
leave fields blank if you do not wish to apply some of the restrictions available.
2. Click on Save to save your modifications.
40
The "Tabs" widget type is configured as is (it uses the "MyTab sub tab" category):
41
Sub tabs can be defined as standard tabs, but using the "MyTab sub tab" category:
42
In this section
Concept
Creating a new tab
Definition tab
Enablement tab
Tab specific widget
types
Content
view widget
type
Toggleable
form widget
type
Form
action(s)
widget types
Toolbar
action(s)
widget types
Tabs widget
types
Related How-To's:
Add a new Permission in the UI
Content View: Query & Form Tab
Content View: Results
Content Views
Create a mail template
Override email notification templates
Search / Advanced Search
Specific Upgrade Instructions
Tabs
Virtual Navigations
The Virtual Navigations menu entry enables you to define new browsing trees based on document properties. You can install the Nuxeo Virtual
Navigation add-on to see how default virtual navigations based on the vocabularies Subject and Coverage work. This page explains the different
options available on the Nuxeo Studio configuration screens.
A virtual navigation is a content view whose filter is not displayed as a form but as a tree that shows the values of a vocabulary.
Definition Tab
43
Results Tab
The configuration of the content view results is the same as a regular content view. Please report to the page Content View: Results.
Workflow
The Nuxeo Enterprise Platform workflow engine, a.k.a. Content Routing, aims at providing a framework and tools for automatizing some
content-based organizational processes in a maintainable way. It can be used as soon as you have a multi-steps process that involves various
human actors and automated steps. It will accelerate the roll-out of your realization and make it easily understandable for future evolutions. Such
multi-steps process can be complex documents authoring and validation (purchase order validation, product sheet, ), form flow (such as
vacation request, training requests, expenses, travel authorization), and, of course, usual office document validation process.
You should first read the Workflow pages of the Customization and Development section of the technical documentation for knowing more about
workflows. On the Studio documentation area, you will find details about the Studio screens and a tutorial to start using the workflow engine.
Workflow screens
Node popup
Workflow screens
You will find here as many pages as you have screens on the Workflow feature. See also Node popup.
Workflow creation form
Definition tab
Variables tab
Availability tab
Graph tab
Feature ID: The id of the declared workflow template. Useful for starting a workflow with automation.
Label: The label that is displayed in Nuxeo in the drop down list that launches a workflow. Supports i18n.
Description: The description should be displayed beside the drop down list that launches a workflow, then the corresponding workflow is
selected.
Definition tab
44
Label: The label that is displayed in Nuxeo in the drop down list that launches a workflow. Supports i18n.
Icon: Currently not used.
Large Icon: Currently not used.
Description: The description should be displayed beside the drop down list that launches a workflow, when the corresponding workflow
is selected.
Variables tab
Variables at workflow level can be used to store information that can be accessed at any time during the workflow. Those variables will store data
that come from user forms or that are computed by automation chains, using from their the WorkflowVariables[] object.
Name and Prefix: You don't have to modify this.
Add variable: Adds a new row on the variables table.
Delete variable: Deletes selected variable. You can select only one variable at a time.
Table columns:
Name: Used to reference the variables later.
Type: The type of the value that is going to be stored. This type has an impact on the available widgets in the forms.
Multi-Valued: Check the box if we need to store multiple values of the same type on this field.
Default: The default value of the variable.
Availability tab
This screen controls when the workflow is displayed in the drop down list that allows to start a workflow on a document. The availability is
45
Graph tab
The Graph tab is where you define how steps of your workflow are ordered, by dropping nodes and pulling transitions between them. If you let the
mouse over a node, you will be displayed an Edit button, that allows to edit the properties of the node, in a multi-tab pop-up. There are two kinds
of nodes: one that creates task, one that is automatic (the workflow engine goes over it and immediately follows one the output transitions).
On the left side menu of the graph tab, you will find the items below:
Resize graph editor: It happens that your graph cannot fit in the default allocated design area. Clicking on this button will make it larger.
A "Reduce size" button will be added in a future version of Nuxeo Studio.
Clear graph: Beware, this button will delete all your graph after a warning.
Node library: Lists different pre-configured nodes. You can drag'n drop them in the design area.
Node popup
Node General tab
Node form tab
Node Transitions Tab
Node Variables Tab
Node Escalation Rules Tab
46
Title: The title of the task, displayed in tasks lists in the user interface as well as directly on top of the task form, where user processes
the task. Supports i18n.
NodeId: The node id is useful when you want to configure queues of tasks. This is currently limited to advanced users.
Exclusive Node: If checked, transitions can be ordered and only the first transition for which conditions are true will be followed. If not
checked and if several transitions are true, then they will all be followed corresponding to a fork in the workflow. (available from 5.7.2)
Directive: The directive is displayed on top of the submission form when the user processes the tasks. Supports i18n.
Due date expression: This is where you express what should the due date be on the task that is created by this node. It is usually set
relatively to the current date (the time when the task is created), but it can also be expressed leveraging the date at which the workflow
was started.
Assignees: You can add static assignees here, either users or groups, one per input field (click on "Add" to add more than one). You
need to prefix users by "user:" like user:jack and groups by "group:" like group:validators.
Compute additional assignees: You can set a scripted expression (MVEL syntax) here so as to determine where to lookup the
assignees of the task. You have access to some useful variables in the context, like the NodeVariables and WorkflowVariables (se
e Variables Available in the Automation Context for more information). A frequent pattern is to set a node variable from the input chain of
the node and reference it here.
47
Getting the first document of the document list in the automation chains ran from a workflow node
As we mentioned above, the workflow engine injects a document list in the automation chain, even when there is only one document.
You may have sometime a "Cannot find any valid path in operation chain" exception, because the operation you put in the chain
expects one document in input and the previous operation gives a list.
You can avoid this situation, when you know you have only one document, by fetching this document first. To do so, you can use:
Then, for the rest of the chain, you will have only one document in input transiting from one operation to the
other.
Here you can configure a form that will be displayed to the user for task processing. You can specify which fields have to filled (captured data will
be stored in workflow variables and node variables), and which buttons should be displayed.
Layout edition works as usual: you pickup the fields on the right. Here you have the choice between system properties, workflow variables and
48
When designing the graph, you cannot pull freely arrows from the output of a node to the next one. You first need to declare the transition in this
tab. Once you did it, you will see an endpoint on the graph with the name of the transition, from which you will be able to pull the arrow.
When adding a transition, you need to specify:
Name: The name is only displayed in the graph, and used by the engine. You won't have to explicitly use this value later.
Condition: This is the condition the workflow engine evaluates so as to know where to go after an node is executed. You have access to
all the workflow context variables. If you don't set any condition, it will always be "true". The workflow engine supports having several
conditions evaluated to true, in that case, you will have a "fork" on your workflow path.
Chain: The chain will be executed when the workflow engine goes into this transition. In the context of this chain, you will have access to
the Node Variables of the node on which it is declared. For instance, you would like to log in the audit that it was rejected, validated, or
requested for update, you could add chains that use the Log Event In Audit operation and set a different value on each chain. The list of
documents bound to the workflow instance will be the input of each chain. If there is only one document, it will still be a list, with one
element.
Node variables are useful for instance for capturing data from the user through the node form, and then do something with that data in the output
automation chain. You can edit those variables the same way you would edit a schema.
Name and Prefix: You don't have to modify this.
Add variable: Adds a new row on the variables table.
Delete variable: Deletes selected variable. You can select only one variable at a time.
Table columns:
Name: Used to reference the variables later.
Type: The type of the value that is going to be stored. This type has an impact on the available widgets in the forms.
49
Escalation rules allow to execute an automation chain, depending on a condition. A scheduler checks every five minutes the condition and
executes the chain if the condition is evaluated to true. Please read the escalation service page for more information and examples of rules.
Escalation rules and node types
Please note that although this tab appears on every node, escalation rules only apply to nodes awaiting for a user action to be executed
(corresponding to the suspended life cycle state).
Multiple escalation rules can be added using the Add escalation rule button.
Id: The unique id of the escalation rule.
Condition: An MVEL expression to state when the escalation rule should be run.
Chain: The automation chain to be executed. You may create a new chain or edit an existing one using the Create and Edit buttons.
Multiple execution: The automation chain is only executed once by default. If you check this box, the automation chain will be run every
time Nuxeo evaluates the condition to true.
Automation
Before starting your own content automation chains, we advise you to take a look at the concepts and tutorial parts to understand what Nuxeo
Content Automation chains are and find sample use cases like:
A validation chain
A metadata inheritance chain
A purge type of chain
A task assignment chain
Subpages of this section are:
User Actions
Automation Chains
Event Handlers
Filtering Options Reference Page
User Actions
Concept
User actions are meant to execute a predefined action or list of actions (namely an operation chain) when clicking on a link or button. You can
read more about them in the theorical presentation and in the developers section.
50
In this section
Concept
Creating a User
Action
Editing a User Action
Action
Definition
Action
Enablement
Action
Execution
Order : set a higher value to move the action further to the right. Default actions order starts at 10.
Immediate : checking this box will cause the action to be executed without prior validation. It is usually preferable to leave it
unchecked.
51
Action Enablement
Action Execution
Select an existing operation : the selected automation chain will be executed when the user clicks on the action defined in
the User Action definition section. The "Edit" button can be used in order to edit an existing automation chain, and the "Create" button
to create a new automation chain that will be associated to this user action.
Related pages
How to Let Users Set Rights on Non Folderish Documents (Nuxeo Platform Developer Documentation)
How to Add a Button in the Web UI (Nuxeo Platform Developer Documentation)
Actions Overview (Nuxeo Platform Developer Documentation)
Action How-To Index (Nuxeo Platform Developer Documentation)
Actions (Links, Buttons, Icons, Tabs and More) (Nuxeo Platform Developer Documentation)
How to Make the New Button Appear on a Custom Folderish Document (Nuxeo Platform Developer Documentation)
Standard Action Types (Nuxeo Platform Developer Documentation)
Custom Action Types (Nuxeo Platform Developer Documentation)
Actions Display (Nuxeo Platform Developer Documentation)
How to Hide a Tab, a Link or a Button for a Group or a User (Nuxeo Platform Developer Documentation)
How to Create an Automation Chain (Nuxeo Platform Developer Documentation)
How to Add a New Action Category on a Document Tab (Nuxeo Platform Developer Documentation)
52
CAP categories
These categories are available on all Nuxeo Platform modules.
Breadcrumbs
Clipboard
Contextual Tools
53
54
55
Folder Toolbar
Header Links
56
Footer Links
57
Worklist
58
59
DAM categories
DAM Asset view actions
60
61
62
In this section
CAP categories
Breadcrumb
s
Clipboard
Contextual
Tools
Document
Creation
Form
Document
Edition
Form
Document
Header
Actions
Document
List Toolbar
Document
Summary
Actions
Folder
Toolbar
Header
Links
Header
Main Tabs
Header
Search
Actions
Footer Links
User Menu
Actions
Worklist
CAP advanced
categories
Summary
Top Panel
Summary
Left Panel
Summary
Right Panel
Summary
Bottom
Panel
DAM categories
DAM Asset
view actions
DAM
Search
results
actions
DAM
Current
selection
lists
Automation Chains
Concept
Concepts about Automation are introduced in the developer documentation. You should read them before starting using this feature.
The Studio Automation Chain editor allows you to build the chains of operations and fill the necessary operation parameters.
63
In this section
Concept
Chain Editor
Principle
Detailed
Screen
Review
Chain Parameters
Switch Editor
Chain Editor
Principle
To edit a chain, you just need to select a category on the first column, then an operation on the second one, then drop the operation on the
right, fill its parameters, and save. You can use the parameter helper on each parameter of the operations to find specific Automation EL
expressions.
Chain Parameters
64
On this screen you can add new parameters. This can be useful when you want to write re-usable chains.
Add parameter: Adds a placeholder for a new parameter, for which you need to specify the name (used for referencing it after that
in the chain, using ChainParameters['parameterName']).
Type: For now always set to string, this may change in the future.
Switch Editor
The Studio Automation Chain integrates a new editor called YAML editor which enables you to edit your chain in plain text. You can click on
the button Switch editor to activate this feature. You can switch back to the visual editor whenever you want.
For more information on the Studio Automation Chains, see all the operations available.
65
Event Handlers
Concept
To let you understand what event handlers are we can do a parallel with:
Triggers in a database,
Events on event-based programming patterns like in VBA, JavaScript, ...
You'll read more about event handlers in the theoretical presentation and on the developer
documentation.
In this section
Concept
Creating an Event Handler
Editing an Event Handler
Event Handler Definition
Event Handler Enablement
Event Handler Execution
Feature ID: The id of the document type. Will be used as the technical Id at generation.
66
67
Current user has one of the permissions: The logged in user has one of the selected permissions on the document.
Current document has one of the types: The document must implement one of the selected types for the filter to be evaluated to true.
Current document has facet: The document must implement the selected facet to be evaluated to true. Note that it would make sense
that this field is changed to a multi-select one.
Current document has life cycle: The document must be in one of the given lifecycle states. You can separate the lifecycle states with
a comma. This is particularly useful when you want to filter some buttons or workflows that have a consequence on the document
lifecycle state: they can work only if the document is in a specific state.
68
Unfold the Roles and Permissions menu entry and click on Permissions.
Click on the New button.
On the window that pops up give your new permission an ID and click on the Next button.
Select where the permission should be displayed in the drop down menu and click on Add.
5. When you have chosen all the places where the permission should be displayed, click Save to save your modifications.
Don't forget to translate the permission label using an I18N translation file.
69
Related Tutorials
Implement the News "publishing" process
Implement the News "publishing" process
70
5. Edit the user's or group properties (see below for more details).
6. Click Save.
When you deploy your customizations, you will need to empty your database to enable the creation of these
users and groups. Until you do so, you will only have the users and groups of a default Nuxeo application.
If you choose a Creation Policy of "Always", then at each reload or restart the Studio-defined users and groups
will completely replace anything you may have changed from Nuxeo. Any updates, additions or removals done
from Nuxeo will be lost.
Users properties
Field
Description
Name
Password
First name
Last name
Optionally type an email address for the user, that will be used for
email alerts.
71
Groups
Use the > and < arrows to add or remove the user from one of the
predefined groups.
Groups properties
Field
Description
Name
Description
Users
Use the > and < arrows to add or remove predefined users from the
group by default.
Vocabularies Section
Vocabulary Screen All the elements of the main Vocabulary feature screen are reviewed on this page.
Vocabulary Screen
All the elements of the main Vocabulary feature screen are reviewed on this page.
This type enables you to create a simple one-level vocabulary. Make sure to fill in the fields Id and Label correctly, with no special characters
in the Id's name.
These fields are the same as those on the vocabularies management interface.
72
This type allows you to link vocabularies between them in order to have parent and child vocabularies.
You can't create a Child Vocabulary if you don't have a Parent Vocabulary already created to select. Once you Child Vocabulary is created,
you can add vocabulary entries and select a Parent for each of them
by clicking on Select button and choose a Parent in the drop down list.
Advanced Settings
Copyright 2010-2014 Nuxeo.
This documentation is published under Creative Common BY-SA license. More details on the Nuxeo Documentation License page.
73
Automated renaming
As you work on your Studio project, you may need to rename elements, that may be referenced by other features. A typical example would be if
you rename an automation chain. This chain can be used by user action, such as a button, or another chain.
In order to prevent inconsistencies and broken features, Nuxeo Studio automatically checks your project to find all the references to the element
and change the reference with the new name. A confirmation window indicates the result of the renaming on the whole project.
For instance, in the case of a renamed automation chain, Nuxeo Studio will automatically update the chain name in the "Select an existing
operation" drop down list of the User action that uses the chain.
However there are some cases where the renaming is not done by the system, for instance when the renamed chain is used in a function. In that
case, you are displayed a message indicating where the chain name was found but not updated. Copy the log displayed in order to be able to
check the places where the chain name was not automatically updated.
74
The goal of this section of Studio is to be able to complete Nuxeo Studio drop down lists and elements of the interface with additional elements
that come from another Studio project or an Eclipse-based customization. For example, if you declare a document type in the registries (following
the inline example syntax), you will be able to declare new document types from that type, you will be able to use it in Structure Templates, etc...
You can also use registries to declare new operations so that they appear in the Operations browser.
75
Upgrading to 6.0
Some packaging changes have occurred for Nuxeo Platform 6.0. For instance some default features are now available as add-ons, some
76
When you choose the target platform 6.0, the faceted search target package is selected by default: uncheck it. Your faceted searches will be
available in the Search tab as additional search filters.
In Studio your content views automatically gets a FACETED_SEARCH* flag. Uncheck it and check the Search flag.
Keeping Your Faceted Searches
If you want to keep your faceted search left tab in the Workspace main tab:
In Studio check the Faceted search target package in the Project settings.
The Faceted search flag is available and checked on your content views.
In your Nuxeo Platform instance, install the Faceted search add-on.
When you select the target platform 6.0, you need to:
1. Select the DAM target package in Studio.
2. Install the DAM add-on on your Nuxeo Platform.
This will bring you the DAM document types in Studio. Your DAM content views will be available in the Search tab of the Nuxeo Platform; in
Studio they automatically have a DAM* flag. Uncheck it and check the Search content view flag.
Keeping DAM Content Views in a DAM Dedicated Tab
If you want to keep your content views available in a DAM dedicated main tab:
1. In Studio, select the target packages DAM and DAM compat.
The DAM flag is available and checked on content views.
2. Install the DAM and DAM compat add-ons on your Nuxeo Platform instance.
77
In this section
78
79
Version Control
Nuxeo Studio provides project versioning capabilities by using GIT as the versioning control system. Each Studio project is providing a Project
Versioning view where you can track your changes history, tag or revert commits. Thus versioning is provided at the project level - each project
has its own GIT repository so that it is isolated from other projects.
The versioning repository is initialized when you create the project and will contain an initial commit with all the initial files required by a Studio
project.
Committing Changes
Working on a Studio project suppose creating, editing and removing objects or uploading and deleting resource files. Each time you do such an
operation, some files are modified in the directory corresponding to your project. If you want to be able to make a snapshot of your work so you
can revert to it later or release it, you need to commit your changes from time to time in the versioning repository. Your changes are not committe
d every time time you modify some resource in your project. You have to commit it explicitly or to use the automatic commit on build feature.
There are three commit styles available:
Automatic commit on build: this is the default commit style. If you have it enabled, then every time you do a project build any pending
change will first be committed into the versioning repository and then (if successful) the build is done and the jar downloaded. If you
prefer managing your commits by hand, then you change the commit style in the Project Settings page.
Manual commit: this mode allows you to commit the pending changes anytime you want by clicking on the commit icon
. There are
two commit buttons in Studio: one in the project tree toolbar located on top of the left menu and the other one in Project Versioning view
in Tags page.
Commit on save: this mode will commit changes done every time you click on the save button in a screen. If you choose this mode, you
will be able to indicate your commit message using a field located next to the save button.
Note that if a commit is done but no pending change exists, nothing will be done (i.e. empty commits are not created).
Also, each time you commit, you will be asked for a commit message. The message should be short and descriptive for your commit. For example
new Book document type added is a good commit message. When using the automatic commit on build an automatic message is proposed for
you (that you can overwrite with your own message if needed).
Changes History
In the Project Versioning > Changes view you can inspect your last 100 commits. The commit history list is ordered by date (the most recent on
top) and gives you minimal information about the commit - like commit date, author and commit message.
When you click on a commit, additional information about the commit are displayed below the list of commits. Here you can see the files that were
changed by the commit. You can also see the difference between two Studio objects (in diff format) if you click on the file that changed. Note that
the diff feature is available only for Studio objects and not for resource files.
80
The changed file are prepended by a bold character that marks the type of change made on the file. You can have the following change types:
M - modified - the object / file was modified
A - added - the object / file was added
R - removed - the object / file was removed
T - type changed - the file type changed
Managing Tags
Project Tags are read only snapshots (or versions) of the project. In the Project Versioning > Tags view you can:
1.
2.
3.
4.
5.
create new tags from a commit or from the current working version.
delete existing tags
rename (release) a tag.
commit pending changes
download tag JAR
Releasing tags
When you create a tag, test the tag JAR and find that this version is good enough to be put in production you can rename the TAG to have a
suitable name for a release. This operation is available by clicking on the Release button.
Let say for example that you created a tag named "1.0-rc1" and you decide that this version can be released as "1.0" version. In that case you
simply rename 1.0-rc1 as 1.0 using the Release button.
Reverting changes
Reverting changes means to replace your current working directory with the revision you want to revert from. A revision can be a tag or a commit.
So reverting can be done from both Tags and Changes views by clicking on the Revert button.
Be aware that a revert operation is not reversible. Any changes you've done between the reverted revision and your current working
version will be lost! It is recommended to first tag your working version before doing a revert. This way you can still restore later your
latest working version from the tag (by doing another revert).
Quick Summary
81
Naming Conventions
This page proposes naming conventions for Studio customization items in order to facilitate usage,
maintenance and support. Although not mandatory, we strongly encourage to follow these
conventions, especially if you are a beginner in Studio. For each rule, a example is provided.
General rules
In general, there are items that will be easily seen by end users (document types for instance) and
under the hood features (automation chains for instance). For very exposed items, words should be
separated by underscore and begin with a capital letter (Contract_Library) and for others we will
prefer compacity: capital letter for every words but no underscore between them (SendToValidation fo
r instance).
As Studio projects can be mixed together or involve many functionalities (ex: contract management,
holiday requests...), it is important that items coming from one project or another can be identified
easily. The solution is to prefix every item. For example every item that is about
contract_management will start with CM- and HR- will apply for holiday request: CM-SendToValidatio
n. Prefixing does not apply to document types, and life cycles (Content Model section in Studio). This
is particularly mandatory when you do a plugin that will become an Application Template that can be
imported into other projects.
On this page
General rules
Content Model
Search and Listings
Automation
Automation Chain
Workflow
User Actions
Event Handlers
Miscellaneous
Content Model
Document types - Document types are probably the main items and should be created first. Naming should start with a capital letter, and
if it needs several words, these one should be separated with an underscore: Contract_Library.
Schemas - Explicit name (the same as the document type if linked to one) with underscore separating words but all lower case: contract_l
ibrary. You should use a prefix that is either the name or a shorter prefix like dc for dublin_core.
Life Cycle - Upper case for each first letter, underscore to separate them. Most of the time a life cycle is only for one document type, in
that case, the life cycle should name after the doc type with Lifecycle at the end: Contract_Lifecycle.
Life Cycle State - all lower case, words separated by underscore. Transitional states and stable states should be distinguished, for
instance a document that requires to be corrected and then validated will have the states: correction > validation > validated
Automation
Automation Chain
Automation chain names should contain a verb to describe what they do.
82
Workflow
When automation chains are steps of a workflow, a good idea is to prefix them with a number so that they are displayed in the same order they
will be triggered. Example with a workflow on the life cycle [Draft <--> Validation --> Validated ]:
CM-01-UI-SendToValidation
CM-02-UI-SendToValidated
CM-03-UI-SendBackToDraft
Note that CM-02-UI-SendToValidated and CM-02-UI-SendBackToDraft have the same number as they can be triggered from the same state
(Validation).
User Actions
User actions should be named after the automation chain they trigger, adding UA- (User Action) after the project prefix (possibly adding the user
action category at the end as there can be several user action launching the automation chains).
Example of a user action to send a contract to validation: CM-UA-SendToValidation
Event Handlers
Same rule as user actions but with EH instead of UA: CM-EH-UpdateAclOnContractCreation
Miscellaneous
Every other item should follow the rules given at the top of this page.
Vocabularies should have a name shorter than 13 characters, otherwise, it may be too long for some databases
Most of the time, groups of users come from the AD or LDAP, but when created in Studio, it should reflect the role, in full lower case, with a "s" at
the end: members, redactors, purchasers...
Automated validation
Nuxeo Studio will perform some consistency check as soon as you configure some features, to be sure that, for instance, if it references another
one, that other one has already been created or referenced in the registries. This page aims at referencing all the checks that are performed. You
can add a comment at the end of this page for suggesting some additional checks.
Feature
Tab
Branding
Errors when...
Warnings when...
Comments
Content
Model/Documents
Definition
Definition
Definition
Definition
Definition
Definition
83
Search And
Listings/ContentViews
Search And
Listings/Virtual
Navigations
Search And
Listings/Advanced
Search
Automation/Event
Handlers
Definition
Creation layout
View layout
Edit layout
Header layout
Summmary layout
Results
Results
Virtual navigation
Virtual navigation
Virtual navigation
Results
Form
Results
Results
no selected operation
no selected operation
84
A
Context.RunDocumentOp
eration operation
reference an undefined
operation chain
A Workflow.CreateTask
operation reference an
undefined operation
chain
A
Document.GetPrincipalE
mails operation reference
an undefined permission
A
Document.GetUsersAnd
Groups operation
reference an undefined
permission
A Document.SetLifeCycle
operation reference an
undefined life cycle
transition
A Document.Create
operation reference an
undefined document type
A Document.GetParent
operation reference an
undefined document type
A
Seam.CreateDocumentF
orm operation reference
an undefined document
type
A Document.Update
operation reference
undefined schema fields
85
Roles and
Permissions/Permissions
Advanced Settings/Web
Services Filtering
Errors when...
Widget
Warnings when...
Comments
86
This is where you should select the modules that you have deployed or plan to deploy on your Nuxeo Platform server. The modules can be
chosen during the installation wizard as stated in the following page: Setup - Nuxeo Installation.
Tutorials
Welcome on the tutorials sections of Nuxeo Studio.
The goal of this section is to provide ready to use examples. They can be followed step by step to learn how to use Studio on practical use cases.
The section also aims at providing solutions to commonly encountered situations.
In complete project subsection, how-tos have been regrouped around different example subjects such as a "technical documentation project".
Each step of the project answers to one specific question and should be understandable independently but it's recommended to follow each
project step-by-step to get the full logic.
The configuration changes you will make in Nuxeo Studio require Development Mode to be enabled. Development Mode can be enabled on your
Nuxeo server by going to Admin Center > Update Center > Nuxeo Studio and clicking the Development mode Enable button.
Some how-tos do not fit into one example project and can be found under the how-tos subsection.
87
Related howtos:
Installing the Studio JAR Manually
Deploying Your Project in Dev Mode
Related howtos
Installing the Studio JAR Manually
Deploying Your Project in Dev Mode
88
What you need to do to declare a missing document type is insert a JSON declaration (written by yourself) in the Registries, that will provide the
following information on the document type:
parent,
schemas,
facets,
subtypes,
actions.
Note that the information given in the JSON declaration are used only by Studio, to complete its user interface: it has no influence at all
on the package/plugin generated by Studio or, as a consequence, on the behavior of your application. As a direct corollary, it is not
mandatory to give the exhaustive information on actions, schemas, facets, subtypes, ... Only those required by what you need in the
Studio interface.
Below are step-by-step instructions.
To declare a missing document type in Studio:
Here, we want to add the "Forum" in the built-in types of the content-template feature, and in the container list.
1.
2.
3.
4.
5.
Click on Settings & Versioning, at the bottom of the left column by default.
Click on Registries to unfold the Registries menu.
Click on Document Types to add a missing document type.
Copy-paste the example provided in Studio.
Change the ID "MyFile" by "Forum" and edit the information so you get this:
89
5.
{
doctypes: {
Forum: {
parent: "Document",
schemas: ["dummy_schema"],
facets: []
subtypes: [],
actions: []
}
}
}
If you want to edit some layouts (forms) on properties declared in existing externally defined schemas, you will have to contribute
schemas in registries.
Related topics
Referencing an Externally Defined Type
Referencing an Externally Defined Operation
How to Add a New Action Category on a Document Tab
How to Add a New Action Category on a Document Tab
90
You can get the full JSON definition of your operation on the operation documentation, on your deployment. Go to the following
URL: http://localhost:8080/nuxeo/site/automation/doc . The served page builds dynamically the operations
documentation. You will find your operation(s) there. Once on the documentation of the operation, in the "LINKS" section, click
on the JSON definition link. Note that this link is not available on Nuxeo DM 5.3.2 and previous versions.
4. Once the JSON is ok, save and you are done!
You should see the operation in its category.
Putting your logic inside operations is always better than directly in SEAM components or custom listeners because:
It forces you to think a bit generic and re-usable,
You produce easily configurable and maintainable code.
Related howtos
Referencing an Externally Defined Type
Referencing an Externally Defined Operation
How to Add a New Action Category on a Document Tab
How to Add a New Action Category on a Document Tab
How-tos
The Nuxeo Platform can be customized greatly, either by modifying existing interface and features or by adding new ones. This page focuses on
giving an entry on how to customize any existing area of the Document Management module of the Platform.
The logo and graphical appearance
File creation screen
Metadata view of a document on the summary screen
Document edit screen
Summary tab
Filtering tabs displayed on a document type
Advanced search screen
91
See the How to Brand Your Application page for a complete how-to.
92
93
Summary tab
See the How to Define a Document Type page for a complete how-to.
The "view layout" widget displays the metadata in view mode configured in the view layout tab.
94
The different tab customization how-tos explain how to disable or add tabs. If you want to do this on some built-in document types, you have to
redeclare them in Nuxeo Studio, paying attention to the How to Override Existing Document Types how-to.
You'll be able to configure the form, the query, the fields that can be additionally chosen and the default result table. The search screen is actually
95
You'll be able to configure the query that is done to display the content, the title of the columns, the default sort criteria, the data that is displayed,
the way it is displayed... This can be done for each container type, for the corresponding trash, and you can also add such a "content table" as a
new tab on any document type, with filtering options. More information on the how to. See also the "news" tutorial that shows how to create a new
container (news) with a completely custom content view.
96
The drop down lists are "vocabulary widgets" that display a vocabulary list for the purpose of selection. Lists can be on one or several levels, and
can accept a single value or several values. The Coverage list for instance is a 2 level list that accepts only one selected value.
You need to create a vocabulary, then, on your document type definition, in the layout tabs (edit, create, view), you can use a "vocabulary widget".
If you want to add a new drop-down list for a built-in types, you should override the definition of that built-in type.
Also, if you just want to change the values of existing "coverage" and "subjects" lists, you don't need to use Studio, you can do this directly with
the Administrator user in the user interface of the DM, DAM or CMF.
97
You can add new axis. See the following how to. You will probably have also to create a new vocabulary. A vocabulary is a list of
optionally hierarchical values that can be used in virtual navigation, but also on select boxes... See also how to create new vocabularies t
hat can be used with Virtual Navigation.
You can also disable existing By Coverage and By Subjects axis
98
4. In the text area, type the content of the mail. The content is usually composed of text and variables.
Related howtos
Create a mail template
Override email notification templates
In this section
Automation chain's "Notification > Send Email" operation context
Workflow task notification context
99
100
If you want to copy from the default content of the template, you can have a look at it from here.
3. Save.
Default notifications are created in the Application template that is automatically imported when you create a Studio project (since end
of December 2011). If you didn't import this template, you can import it from the Application Template Library in Studio, it is called
"Nuxeo DM Default Configuration".
Related pages
Recommended Configurations
How to setup a test SMTP server
Maven Integration
The project versions (i.e. tags - see Version Control) generated by Studio are automatically exposed as Maven artifacts in an online Maven
repository. This can be useful for developers who want to include their Studio project in their build process.
All projects exposed through Maven are protected so that only contributors on the project are able to access the project in the Studio Maven
repository.
101
This is how to setup the Maven client to be able to access Studio Maven artifacts:
1. First you need to tag your project from Studio Client - see Version Control.
This will generate a version of your project that can be accessed by Maven.
2. Then you need to configure your Maven client to use authentication when accessing the Studio Maven repository. For this,
edit (or create if it does not exist) the ~/.m2/settings.xml file and add the following entry under the settings tag:
<servers>
....
<server>
<id>nuxeo-studio</id>
<username>your_studio_username</username>
<password>your_studio_password</password>
</server>
...
</servers>
3. Then in the POM (or a parent POM) where you need to add the dependency to the Studio project you should declare the
Studio Maven repository like this:
<repositories>
...
<repository>
<id>nuxeo-studio</id>
<url>https://connect.nuxeo.com/nuxeo/site/studio/maven</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
...
</repositories>
You notice we used the same server ID than in the settings.xml file. The repository is located under the
same root as Studio client (but using the Maven relative path).
4. Now you need to declare the dependency in your POM to point to the desired version of your Studio project.
The project artifact key will be computed as follow: maven_group:project_id:version.
The maven_group defaults to nuxeo-studiobut can be changed from the Project Settings view in Studio
Client. It is recommended to use the pattern com.mycompany for commercial (closed source) projects and org.myc
ompany for Open Source projects.
The project_idis the ID of you project and is unique between all projects in Studio - you can get you project ID
from the Project Settings view in Studio Client - look after Project Id property.
The versionis the tag name of your project tag. Note that only tags and latest development code are accessible
through Maven.
Let say you created a project tag named 1.0 and your project ID is myproject and you are using the default nuxeostudio group. In that case your Maven dependency will be:
<dependency>
<groupId>nuxeo-studio</groupId>
<artifactId>myproject</artifactId>
<version>1.0</version>
</dependency>
102
https://connect.nuxeo.com/nuxeo/site/studio/projects/{PROJECT_ID}
or
https://connect.nuxeo.com/nuxeo/site/studio/maven/{MAVEN_GROUP}/{PROJECT_I
D}/
with MAVEN_GROUP=nuxeo-studio by default.
The list of available resources for a given project and tag (or version) is visible at the given URL:
https://connect.nuxeo.com/nuxeo/site/studio/maven/{MAVEN_GROUP}/{PROJECT_I
D}/{VERSION}/
with MAVEN_GROUP=nuxeo-studio by default and VERSION=0.0.0-SNAPSHOT for the
current development code.
Application Templates
Nuxeo Studio includes an Application Templates library composed of other Studio projects or samples that you can use as a basis for your own
project. This enables you to import new document types, lifecycles, workflows, features in your project as a template that you can edit to adapt it
to your project.
And to make Nuxeo Studio discovery easier, we automatically import the "Default configuration" template that correspond to your target
application when a Studio project is created. You can then see how the configuration is done and start your project from it.
In the Application Templates library, you will find very complex ready-to-use templates for complete function use cases (such as "Human
resources - Vacation request workflow") or some unitary cases, such as "Custom Doc ID generation" or "Nuxeo School Sending Emails".
You can start with the how to page about importing a template and then start importing some templates and refer to the following documentation
for each of them.
Templates reference
You'll find here a page per application template, so as to provide you main information to discover the Application Templates in the best
103
Configuration Management
This documentation describes how Nuxeo can be used to set up a Configuration Management System.
Configuration management process creates challenges an application like Nuxeo can help to handle. As stated by the CMMI approach, "The
purpose of Configuration Management (CM) is to establish and maintain the integrity of work products using configuration identification,
configuration control, configuration status accounting, and configuration audits."
The Studio application template called Configuration_management_nux focuses on configuration identification and control trough specific
document types. Although this first template is not a complete configuration management application, it shows how Nuxeo can be used to handle
concepts like Configuration, Configuration items, and Baselines from creation, manipulation, to audit and verification.
The best way to follow this documentation is to import the application template in your Studio project, find here the documentation on how to use
application templates in a Studio project.
Being already familiar to Studio main aspects is recommended to understand this documentation, if not the case, you can start by our how to get
started guide.
A resource section at the end links all the resources used in this documentation.
Configuration management
A documentation tree supposed to be managed by the application is called a Configuration. Every file and folder created in it will be under
configuration management control.
For that, they have specific metadata inherited from the schema "configuration_management". For example, every file is linked to its parent
configuration and has a unique reference given on creation. If a document is copied into another configuration, the parent configuration is
updated, but the reference stays the same. It enables to watch a file throughout its configurations and evolutions (a specific tab is added on the
type File to display every location and configuration of the file copies).
All references and links between a configuration item and its parent configuration are managed through Automation Chains launched by Event
Handlers.
This template has been created to be used with usual doc types like File, in that purpose, the default document type has
been overridden. The challenge is that the plugin should stay transparent if you work with a File that is not under configuration
management control, the consequent condition is that Automation Chains launched by Event Handler must be able to differentiate the
files that are under CM control and the file that are not. The solution was to use the operation Execution Flow > Run Document Chain
with a condition in the parameter.
For example "CM-OnConfDocumentCreation" is launched at every file and folder creation and tests that the parent is under
configuration control before launching the actual automation chain, the syntax for conditional operation is:
@{Document.parent["managed_in_configuration"]=='true'?'CM-OnConfDocumentCreationIfConfParent':'CM-Void'}
The versioning system of Nuxeo is used to manage and know which files are validated or working versions. By choice, every minor version is
know as a reviewing and working version whereas major version are used only for validated version of the document. Please note that no specific
validation process such as a RACI has been configured for this first version.
So working under configuration management with Nuxeo consists as creating a Configuration (one per project or product typically). Then creates
the project tree and the project files. These files can be new files or can be copied (forked) from other projects. The File minor and major versions
are used to know which are validated or not, and the Configuration tab on Files gives a look to all major version and copies of this file throughout
the system.
Baseline
One very important aspect of configuration management is being able to know in which state was the documentation set at key moments of the
project, for example at client releases. These snapshots of the configuration state are called Baselines : a baseline reflects the state of the
configuration at a specific moment, it's a view of latest validated versions of all documents of the configuration.
To manage baselines, a doc type Baseline can be created into a Baseline_library. By default, a Baseline is in pending state as the baseline can
be prepared and then generated only when needed. A user action is provided on the Baseline Folder Toolbar to actually baseline the
configuration.
It launches the baselineConfiguration automation chain which role is to set to the baseline to generated state and actually generate the baseline
using a specific automation operation.
104
Resources
The configuration management template consists in a studio project plus a specific automation operation.
They need to be both deployed on a server to work. To only deploy and test, you can use the marketplace package that regroups everything in
one package. If you prefer to see exactly what is included in the package and maybe customize it, you can import the Studio Application Template
and get the operation source code on github.
Configuration management marketplace package:
Configuration Management Marketplace package
Studio Configuration Management Application Template:
Can be found in Studio > Settings And Versioning > Application Template
Nuxeo Specific Baseline Configuration Operation Sources:
https://github.com/fvadon/nuxeo-configuration-management-poc
Nuxeo documentation on proxies:
Repository Concepts
Configuration Management on Wikipedia:
http://en.wikipedia.org/wiki/Configuration_management
CMMI for development:
http://www.sei.cmu.edu/library/abstracts/reports/10tr033.cfm
Contract management
This documentation describes how to manage contracts in Nuxeo with the application template Contract Management, available from Nuxeo
Studio.
The first parts of this page are a guide for functional user into the Contract Management application.
A more technical description is available at the end of this documentation for information on how the application template is designed with Nuxeo
Studio.
The different sections of this tutorial are:
Introduction
The content model
The workflow
Roles in the workflow
The workflow steps
Creation and Validation of Contracts
Automatic renewal management
105
Introduction
The application enables you to manage your contracts, by defining contract owners and letting the DMS manage for you their lifecycle, so as to be
able to stop them before their automatic renewal, or so as to know when to renegotiate the conditions... You should expect high ROI if you are not
accustomed to such practices!
Contract_Library:
The contract library is a folder designed to hold contracts. Each contract library has a specific metadata: person_in_charge, that will be inherited
by contracts inside the library. Permissions are set automatically to give Read and Write permission to the person in charge who should be a
purchaser. Other roles are available inside the application, see the roles section for more information. A contract library is owned by one user
only.
Inheritance to contracts is performed by the system to make sure the person in charge is always consistent between a contract library and its
children contracts. So it is very simple to change the person in charge on a whole set of contracts, just change the person in charge of the
contract library.
Contract:
Contract is the main document type. It has its own life cycle (see the Workflow section for more info on the contract life cycle) and its own
metadata set, specific to contract management, such as a starting and an expiring date. The system enables to deal with auto-renewal contracts
through a checkbox at the contract creation.
Contracts can only be created in a contract library.
Here is a screenshot of the creation page of a contract.
The reference of the contract is automatically created using the contract type filled in at the creation.
106
Contract_viewer:
This document type is a specific type dedicated to filtering and visualizing contracts depending on your role and the contract life cycle states. It
contains no data directly but several tabs that look for and display contracts wherever they are inside the real arborescence.
A use case example is: if I am a jurist and that I have contracts to validate, I do not want to look for them in every purchaser's library. So I can
create a contract viewer wherever I want, my personal workspace for instance, and it will display all the contracts waiting for a jurist validation.
This is also useful to provide a way to access contracts waiting for a jurist validation even if I do not have Read permission on a part of the
arborescence that leads to the contract.
The tabs of a contract viewer are:
- My contracts in validation and redaction: shown to purchasers only, to display their contracts in these two life cycle states in which they
should work on.
- My contracts and libraries: display all contracts and contracts libraries of the current user if he is a purchaser.
- Contracts to be verified: the tab of the jurists, displays all contract waiting for legal verification.
- Contracts waiting for signature: the tab for managers, displays all contracts that should be signed.
- Auto-renewal contracts expiring soon: displays all contracts that are about to auto-renew in case an action should be done on it by
managers.
- Content: the default tab; it displays all contracts and contract libraries of the repository (if you have at least Read permission on them), it comes
with a filter to easily and quickly find contracts on info like their life cycle state, the person in charge, etc...
The workflow
Roles in the workflow
In the example of contract management, 3 roles are available: a purchaser who creates the contract and starts the workflow, a jurist who does the
legal validation of the contract and finally a manager who signs the contract.
There should be 3 groups of users to use the contract management application:
purchasers
jurists
managers
107
Verification (legal)
When a contract is sent to verification by a purchaser, the system automatically updates the status logging date and the permissions to allow a
jurist to modify the contract, whereas the purchaser can now only see it. A jurist can quickly find any contract waiting for legal verification by using
the document type "Contract_Viewer":
When the jurist has verified the contract he can send it back to the purchaser in charge by clicking on the action "Send To validation":
Validation
At this step, the jurist cannot modify the document anymore but he can still read it. The purchaser can do the final validation before sending it to a
manager for signature:
SentWaitingForSignature
When a contract is sent for signature, nobody can edit it anymore but managers. A manager can easily find all contracts waiting for signature
through a contract viewer.
108
Signed
The signed state is a temporary stage where the contract is ready to start, and will start automatically when the starting date is reached. A
contract has to be signed before it can goes to "OnGoing".
OnGoing
At this stage the contract is active, the next step will depend on whether the contract has automatic renewal or not.
Version Management
At each step of the workflow the version of a contract will be incremented automatically on a minor or a major version (depending on the step) so
that every changes on a contract are stored, and each version of the contract are always available. However, it is always possible for each
contributor of the workflow to increment version manually.
Batch
As seen before, several events happen automatically such as the auto-renewal of contracts. All these actions are done by a batch operation. On a
final application, this batch should be run automatically every night for example. In this demo case, the batch operation has to be launch manually
by the user action "Batch Contract State", this action is available in the user menu and will update all contracts inside Nuxeo that should be
109
Technical description
Here are a few tips about the Contract management application template. You can import this project directly in your Studio project and deploy it
to your server. Once you are familiar with it, you can start customizing it if necessary. You can read the documentation on how to use application
templates in a Studio project.
This template is a complete use case of using Nuxeo Studio to implement a Business Case. You will find custom life cycles, content views,
document types, notifications, actions ... It is designed to provide a ready-to-use template for contract management workflows, especially to deal
with automatic renewal contracts and specific views and reminders.
Being already familiar with Studio main aspects is recommended to understand the template, if not the case, you can start by our how to get
started guide.
Naming
As the contract management template is supposed to be imported into other projects, it is very important that every item is easily recognizable.
This is the reason why item names are prefixed with CM as contract management.
Automation chains are named after the user action or the event handler that triggers them, for instance:"CM-SendToValidation" is triggered by
"CM-UA-Send_To_Validation_customActions", which is a user action (UA) displayed in the document summary action (_customActions).
Event handlers and their corresponding automation chains are name like "OnXXXXtion", for instance the event handler that captures the creation
of a contract is named "CM-OnContractCreation".
Automation chains are named depending on what they are supposed to do, for instance, if they start with "SendTo", it means that the document
will change of life cycle state during this chain, the final state is the end of the chain name: "CM-SendToValidation" sends the contract the
validation state. The prefix Ac means a simple action in which the state of a document is not changed like the creation of a document for instance
("CM-AcCreateCMLibrary").
And finally, a few automation chains are launched only from other automation chains using the operation Execution Chain>Run Document chain.
These chains are prefixed with "Sys" as System
Custom contract ID
At the contract creation, the contract type can be chosen. The contract type is used to create an automatic reference. This feature uses the logic
of the template: Custom Doc ID Generation
System metadata
Several metadata are never seen by users. These metadata are used in different ways by the system, for instance "recall_renewal_date" is the
date used to know if the contract will expire soon. It corresponds to the expiring_date_updated minus 3 months. These metadata are very
important for the system but are invisible to user. They are managed by event handlers and system automation chain (prefixed with Sys).
They are 2 recall dates:
"recall_renewal_date": Used in the content view "CM-AutoRenewalContractsSoon" to display all auto-renewal contracts expiring in less
than three months
"recall_signature_date": Corresponds to the signature date plus 15 days. It is not used, but could be consumed in a content view all
contracts waiting for a signature for more than two weeks.
Others date that are not filled in by the user are:
"expiring_date_updated": It is first a simple copy of "expiring_date_initial", but then this the actual expiring date, "expiring_date_initial" is
never modified.
"sent_date", "signed_date", "to_validation_date", "to_verification_date": these dates are only used for logging purpose, to remember
110
111
5.
Be Careful
In the Schema tab, do not try to define already used schemas' names such as "file", it will lead to errors.
For step by step guidance on how to edit forms, check the how-to How to Define a Document Type.
Now, we need to create the vocabularies used to populate the type list and to compose the ID.
Declaring Vocabularies
Now that the "File" document type has been overridden with our new file that has AdditionalInfo schema, we need to create the vocabularies
used to select the document type and generate the first part of the document's ID.
See how to add a new vocabulary.
1. Create a simple vocabulary "TypeLabel" with the values below, that will fill the drop-down list to edit the "type" metadata.
ID
Label
proposal
Proposal
invoice
Invoice
law_act
Law act
advertisement
Advertisement
2. Create a simple vocabulary "TypePrefix", that will give the corresponding prefix for UID generation, depending on the selected "type".
ID
Label
proposal
Prop
invoice
Inv
law_act
LA
112
Ad
Operation
Parameter 1
Parameter 2
Name: typeValue
Value: @{Document["additio
nalInfo:type"]}
Name: prefixValue
Value: @{Fn.getVocabularyL
abel("TypePrefixVocabula
ry", typeValue)}
Name: idValue
Value: @{prefixValue}-@{Fn
.getNextId(prefixValue)}
Value: @{idValue}
xpath: uid:uid
If you use the editor, be careful to remove the key's double quotes in functions.
The goal of this tutorial is to explain the Studio application template : Human resources - Vacation request workflow.
This template is a complete use case of using Nuxeo Studio to implement a Business Case. You will find custom lifecycles, content views,
document types, notifications, actions ... so as to provide a ready-to-use template for HR workflows.
113
You can see here that some fields are already predefined with 0 values.
114
The zeros are filled in by the Automation Chain "HRHolidayRequestDefaultValuesChain". This chain is launched by the event handler
"HRHolidayRequestDefaultValuesEventListener" triggered on a empty HRHolidayRequest created event.
The workflow
Roles in the workflow
In the process of validating a holiday request, 3 persons are involved : the request creator who starts the workflow, the user operational manager
who validates the request and finally the HR manager who confirms the request validation. Two groups are predefined : hr_operational_managers
and hr_manager.
During the validation workflow, tasks are assigned and emails are sent to the different people involved, so it is necessary to get their names and
emails at some points. It is easy to know who is the request creator as it is stored in the "dc:creator" field. The HR manager is also no very difficult
as we will send tasks and emails to the whole HR Manager group. But getting the user operational manager is a little more tricky.
The solution is to use a vocabulary and the fonction @{Fn.getVocabularyLabel("Vocabulary","id"}. The vocabulary is used to store the operational
manager of each user, the id will be the user, and the label will be operational manager.
In our case, it is mandatory to populate the vocabulary "EmployeeManagerMapping" either in your Studio project, or in Nuxeo as it will be used in
every automation chain where the operational manager is required.
Here is an exemple where jack is the operational manager of john :
Permissions
During the different steps of the workflow, people have different needs of accessing the requests, those needs change with life cycle states. For
example, operational manager does not need the write permission when the request is in draft state.
115
Display
Content views :
When going the human ressource folder, each user has access to different views depending on his role. For example, an operational manager
can see all pending request of his team.
This view are defined in the search and listing section of Nuxeo studio and are displayed in additional tabs of the human ressources folder
depending once again on user role.
116
Troubleshooting
A little bit of configuration is required to make the workflow works properly, please feel free to check the following items in case you encounter
problems when testing the project.
E-mail configuration :
In almost each steps of the workflow, e-mails are sent, so make sure your email configuration is correct (mail.smtp.host, mail.smtp.port) in your
configuration file. The configuration file may be situated in various places depending on your OS, the installation type... Here is a link to find it on
Windows
EmployeeManagerMapping vocabulary :
As explain in the first part of the Workflow section of this tutorial, users are linked to their operational manager thanks to
the EmployeeManagerMapping vocabulary, so make sure this vocabulary is populated before fulfilling a holiday request.
117
5. Click on OK.
The icon
is displayed next to the imported template, indicating that this template has been imported.
Your project is reloaded with all the template's features. You can now browse your project with the new imported features and edit them.
If you modify something, Studio will tell you that you broke some other configuration by displaying the errors, and you'll be able to adapt
every dependent thing. Also you'll be able to rename the imported features if you need.
Using several application templates
Some templates declare the same object. For instance two templates can declare the "Folder" document type. In that case, Nuxeo
Studio will refuse to import the second template until you rename the previous object, to avoid collision.
118
If there are other reasons why you would want to import the project into Eclipse, share it in the comment section of this page!
119
Security
Nuxeo Connect defines ComputedGroups and SecurityPolicies that enforce security logic :
a user can have access only to project he is member of
Marketplace download is checked against security policies
Access to a Studio Project is checked against security policies
Download of a Studio project via Maven Servlet is checked against security policies
There is no direct access to the data, all access have to go throught Nuxeo Platform that enforce the secutiry checks.
Architecture :
Connect architcture is currently composed of :
ELB with https endpoint that manages LoadBalancing with affinity:
affinity on JSessionID
affinity on Studio projectID
2 Nuxeo Tomcat VM (Nuxeo 5.7 at this time)
1 VM with PGSQL, VertX and the NFS export
Monitoring
Since Connect was aligned on Nuxeo 5.7, it is now using Graphite to report Nuxeo and system metrics.
Logs are centralized using Logstash, ElasticSearch and Kibana.
Collaboration Mode
It is possible to activate a collaborative mode on Nuxeo Studio, so as to let several people work together on the same project. This page
provides some details about this feature.
120
In this section
Enabling
Collaboration Mode
Seeing Connected
Users
Locking a Feature
Browsing a Feature
That Is Not
up-to-Date
Committing on Save:
Providing Better
Visibility to Who
Modified What
Locking a Feature
On the screenshot above, we see the user aescaffre is browsing a feature which the user sguitter is already editing. Nuxeo Studio alerts
aescaffre that the feature is locked and also disables the "Save" button which is greyed. Studio did lock the feature automatically, sguitter
didn't have to lock it on purpose: everywhere sguitter goes in Studio, the corresponding feature is locked in real time on aescaffre 's browser,
and vice versa.
Note that aescaffre can steal the lock so as to prevent situations where sguitter has gone to lunch and stayed on the feature, preventing
aescaffre from being productive
121
Because Studio works completely client side, you would need to always fully refresh your page to make sure you have the latest state
server-side. Fortunately, with the collaboration mode, Studio alerts you in real time that the page you are browsing is not up-to-date: someone
has pushed a more recent version on the server. That way, you never override someone else's work. You just need to click on the "reload"
button before starting working on the feature instance.
As you can see, it is possible to enable the "commit on save" mode, from your project preferences. That way, each time you save, you do a c
ommit. This is very useful when you are several persons working at the same time on a project, to understand what modifications where
done, by whom.
The changes view gives you the history of the commits, and for each selected commit the changed files (at the bottom). Then, you can even
have the detailed diff for each of the files:
122
Roadmap
Nuxeo Studio is shipped in the Software as a Service style (SaaS), from your Connect account. This enables us to frequently update Studio,
without disturbing your development cycle. We leverage this capability to continuously update the software so as to fix identified bugs, and will at
the same time communicate a very clear and discrete roadmap for main evolutions and features.
What Is Keeping Us Busy: main coming features.
Releases History: See the content of all previous major releases of Nuxeo Studio
123
20
Release Notes - Nuxeo Studio - Version 20
Sub-task
[NXS-1553] - Remove references to refId in target platform contributions
[NXS-1794] - Expose DEV target platform for Nuxeo developers
[NXS-2132] - Minimize codemirror resources for Studio
Bug
[NXS-2050] - Fix Preview tab enablement on documents
[NXS-2079] - Improve UmbrellaException stack traces
[NXS-2100] - Fix release script tag and dry run
[NXS-2102] - Fix display of the "Path tree" widget type
[NXS-2103] - Fix available operators for a generic search widget
[NXS-2107] - Fix default value init on XSD import
[NXS-2110] - Dropping an operation should make it editable
[NXS-2112] - Fix Query filter formatting after save
[NXS-2114] - Fix Read/Edit toggle mode on code mirror editor in automation chain
[NXS-2115] - Fix issues in YAML editor
[NXS-2117] - Fix "foldable" property label on toggleable form widget type
[NXS-2118] - Fix container widget behaviour in tabs
[NXS-2134] - Fix incorrect verification of the target platform when migrating section tab
[NXS-2135] - Fix unknown target platform message
[NXS-2139] - Cursor is not aligned with text lines in query filters text area
[NXS-2140] - When clicking on "Switch editor" there is a bug
Improvement
[NXS-1923] - Handle administrators on Studio
[NXS-2109] - Make it possible to scroll down the chain while dropping an operation
[NXS-2111] - Improve appearance of nxql completion
[NXS-2113] - Improve UX of nxql auto-completion
[NXS-2127] - Add nxql auto-completion on multi-valued where clause when possible
New Feature
[NXS-1998] - Add hint for NXQL on code mirror integration
[NXS-2028] - Integrate new target platform module in Studio
[NXS-2053] - Allow edit of automation chain in plain text
[NXS-2092] - Add the "Collection Search" widget to the content view search screen
Task
[NXS-2097] - Remove the loading of olark
[NXS-2120] - Synchronize widget types definitions for 5.9.5
[NXS-2129] - Release Studio 20
[NXS-2130] - Add target platform 5.9.5
19
Release Notes - Nuxeo Studio - Version 19
Sub-task
[NXS-2015] - Upgrade dev launcher to Nuxeo 5.9.3
[NXS-2016] - Add the deployAtEnd configuration to the maven deploy plugin
Bug
124
Clean up
[NXS-2076] - Clean up tests output and some error logs
Improvement
[NXS-1604] - Labels of checkboxes and radiobuttons should be clickable
[NXS-1939] - Enable CSV export on DAM standard listing
[NXS-2081] - Make text/select inputs larger on project editor
[NXS-2088] - Display a confirmation dialog before deleting an operation
[NXS-2096] - Rename Input Parameters tab on automation feature
New Feature
[NXS-2070] - Make it possible to set input parameters on an automation chain
Task
[NXS-2014] - Align Studio on Nuxeo 5.9.3
[NXS-2060] - Synchronize widget types definitions for 5.9.4
[NXS-2073] - Add 5.9.4 target Platform
[NXS-2075] - Release Studio 19
[NXS-2087] - Add collectionMember schema for filtering in content views
[NXS-2098] - Update Chain parameter tab help text
[NXS-2099] - Set string as a readonly choice for the type of parameter on chain parameter tab
User story
[NXS-2071] - Automation screen > Update styles
[NXS-2086] - Nuxeo Identity > Nuxeo Studio
18
Release Notes - Nuxeo Studio - Version 18
Sub-task
[NXS-1699] - Display the "Extra schemas" in document types
Bug
[NXS-1851] - Fix nested complex types generation in schemas
[NXS-1991] - Fix wrong chain directory widgets
[NXS-1995] - Fix exception on Transitions tab of a workflow node
[NXS-2000] - Fix declaration of facets
[NXS-2002] - Fix validation on complex fields search like complexSchema/*1/item
[NXS-2003] - XSD generator fails to properly generate the nested complex types
[NXS-2006] - Fix generated layouts when using nested complex types
[NXS-2013] - Fix studio-web module pom declaration for release scripts
[NXS-2027] - Fix layout tooltips after ajax re-render
[NXS-2031] - Re-Enable the possibility to add default values in schemas for multi-valued fields
[NXS-2046] - Fix functional tests on 5.9.3-SNAPSHOT due to changes on user creation form
[NXS-2048] - Fix typo in content view flags validation error
125
Improvement
[NXS-1996] - Syntax highlight > Review styles
[NXS-2004] - Add more lines by default to the codemirror editor on XML extension and css views
[NXS-2043] - Reference new automation doc in Studio
[NXS-2044] - Remove "new" marker on Nuxeo 5.8
New Feature
[NXS-1928] - Allow copy/pasting a Studio project
[NXS-1934] - Add new mvel functions for escalation rules
Task
[NXS-1948] - Change the marketing tracker
[NXS-1963] - Specify a dedicated "target platform information management" service
[NXS-1969] - Test the 5.9.2 release in integration tests
[NXS-1999] - Synchronize widget types definitions for 5.9.3
[NXS-2020] - Switch Studio on going versionning to main digit upgrade.
[NXS-2032] - Release Studio 18
[NXS-2034] - Tooltips > Replace jquery tooltips by tipsy tooltips
[NXS-2037] - Add 5.9.3 target platform and remove 5.9.1
[NXS-2040] - Synchronize operations for 5.8 and 5.9.3
[NXS-2045] - Synchronize branding changes for 5.9.3
2.17
Release Notes - Nuxeo Studio - Version 2.17
Bugs
[NXS-1363] - Workflow editor is marked as dirty after navigating to the graph editor without modifying it
[NXS-1378] - Document types are created twice with using the keyboard to create it
[NXS-1447] - bug in content view filter configuration with complex property
[NXS-1684] - Validating a user action creation with the keyboard creates the action twice
[NXS-1790] - Life cycle uses old icons
[NXS-1801] - Disable olark rules request in dev launcher and tests
[NXS-1831] - Fix builtin Directory operations
[NXS-1885] - Fix styling of the features tree in "new" popup
[NXS-1919] - Update login.jsp templates with proper escaping
[NXS-1922] - Add validation warning when using a messages_fr.properties file instead of messages_fr_FR.properties on 5.8
[NXS-1926] - Fix duplicate Yes (default value) option in text widget (view mode)
[NXS-1929] - Fix crash on select2 widgets having already a value set for the 'width' property before 2.16
[NXS-1936] - Make sure the 5.9.1 release is tested
[NXS-1937] - Fix loading of some projects
[NXS-1946] - Fix access key CTRL+Space on XML Extension editor
[NXS-1952] - Optimize xstream parsing
[NXS-1960] - Don't add empty assignee to task
[NXS-1973] - Fix error popup when saving subwidget
[NXS-1976] - Input editor is not enabled at first on the CSS integration of CodeMirror
[NXS-1982] - Error when I click on a saved studio faceted search from my Home
Improvements
[NXS-398] - Avoid saving the popup when pressing the enter key on a textarea
[NXS-1724] - Automation Chain specific documentation should be unfolded when not empty
[NXS-1796] - Unblock select2 suggestion widget in subwidgets for complex fields for target platform >= 5.7.3
[NXS-1800] - Expose PublishSpace and MasterPublishSpace facets
[NXS-1870] - Review style of help messages
[NXS-1886] - Improve "resize graph" action on workflow
[NXS-1895] - Add validation for MVEL expressions
[NXS-1918] - Update widget types definitions
[NXS-1951] - Allow referencing large CSV files in vocabularies
[NXS-1953] - Implement lazy loading of large features
[NXS-1974] - Add minor improvement of the import CSV popup
[NXS-1980] - Branding: make "Background covers all the screen" checked by default
[NXS-1981] - Show a "new" sticker next to new boolean "Background covers all the screen" in branding
Tasks
[NXS-1842] - Specify and prototype autosuggest
126
User stories
[NXS-1966] - Vocabularies: review CSV import screen
2.15
In a Nutshell
In the latest release of Nuxeo Studio we have exposed some of the latest capabilities in the Nuxeo Platform v5.8, offering more configurability.
Heres whats new:
DAM widgets are now available in Studio. Widgets such as Video Storyboard, Video Reader, Picture Web View and more can be used in
your tabs.
All Select2.js widgets have been exposed in Studio, with all their options. Select2.js widgets are the suggestion widgets in the platform.
Use suggestion widgets in simple selection and multi-selection controls for users (silently replacing the previous implementation),
directories, documents (silently replacing the previous implementation). For advanced integration a widget is also available to support any
operation which will return some correctly formatted JSON, .
These widgets offer new and interesting possibilities, such as being able to define the NXQL query used inline, or being able to format a
value displayed in a list, thus making it possible to display multiple fields of a document in each drop-down item.
New categories of actions were added in the header and the footer. In particular, you can use the "Main Tabs" category to add new
navigation links to some strategic locations in your repository (links will appear beside the Home and Document Management tabs).
New operations are exposed.
Some additional noteworthy improvements include:
The faceted search configured with Studio that uses full text search is now compliant with the top-right suggestion box. If you click on the
full-text search from the suggestion box (provided you have a full text search field on your faceted search) everything will work smoothly.
Default application templates for DM and DAM have been updated.
A new parameter in the flavors has been added: if you don't want the default "blue" that appears on the selected main tab, you'll have to
set a new color.
Sub-task
[NXS-1439] - Summary widgets handling their labels
[NXS-1633] - Add DAM widget types
[NXS-1736] - Expose new operations in Studio
Bug
[NXS-826] - Manage problem of the modal pane actions
[NXS-1668] - Deprecate facet HiddenInFacetedSearch and remove Indexable facet
[NXS-1737] - Remove chain select widget types from Studio contributions
[NXS-1766] - Fix removal of selected packages when switching target platform
[NXS-1773] - Fix content view cache default values when using the DAM flag
[NXS-1775] - Setting Vocabulary Widget doesn't work
127
Improvement
[NXS-1680] - Selecting "Foldable = Yes" in a Container widget's properties doesn't make it foldable
[NXS-1726] - Workflow transitions should have different colors
[NXS-1771] - Remove "section content" default tab from 5.8 contributions
[NXS-1780] - Improve presentation of deprecated target platforms
[NXS-1784] - Add suggest box configuration for faceted search content views
[NXS-1809] - Add a direct download link of Nuxeo next to target platform
New Feature
[NXS-1683] - Add a chat feature on Studio using quick integration component Olark
[NXS-1767] - Add new action categories for header and footer
Task
[NXS-1519] - Branding > Update header styles and values
[NXS-1652] - Remove dataTableNoBorder class on widgetTable
[NXS-1735] - Update widget types that will be based on Select2
[NXS-1740] - Upgrade layout-api to benefit from new json features
[NXS-1752] - Release Studio 2.15
[NXS-1754] - Change available fast tracks for 5.8 release
[NXS-1759] - Test the 5.7.3 release
[NXS-1761] - Update widget types definitions
[NXS-1774] - Add olark json file rules on connect-test
[NXS-1778] - Update available operations for 5.8
[NXS-1783] - Upgrade default application templates for 5.8
[NXS-1811] - Branding > Update default values
[NXS-1813] - Login > Allow users to remove the background-cover rules
[NXS-1814] - Remove "new" markers on workflows and tabs features
User story
[NXS-1455] - Configure DAM with Studio
2.14
In a Nutshell
This time, we put the emphasis on stabilizing/improving what exists and taking feedback of our dear users, more than on adding new features:
5 evolutions/new features, 15 improvements and 19 bug fixes!
Some of the new features in this version include:
A new "Tabs" widget, compatible with Nuxeo Platform 5.7.3, that enables the display of tabs in the location of your choice. Previously,
display options for tabs were limited to matching the default UI. Rendering options will be coming next.
New workflow features available with Nuxeo Platform 5.7.3 have been integrated in Studio: multi-task node, re-assignment support,
new workflow events, new Automation scripting objects.
Some noteworthy improvements:
Your project name and the feature you are working on are now displayed as the title of your browser tab or window.
Different colors are used on workflow transitions to improve readability of the graph.
The scripting assistant no longer improperly nests the @{} markers in the expression. It now tries to understand the position in the
existing expression.
128
Detailed List
Release Notes - Nuxeo Studio - Version 2.14
Bugs
[NXS-1149] - Select All short cut in Studio doesn't work when using webkit based browsers
[NXS-1172] - Long transition name breaks the connection line between two tasks
[NXS-1391] - Workflow node recursive loop in graph doesn't show up with Chrome browser
[NXS-1413] - Cannot select system properties in Advanced Search edition screen for Path widget
[NXS-1443] - Allow schema field name "content" for type "blob"
[NXS-1536] - Life cycle error message on initial state is not accurate
[NXS-1539] - class cast exception error while editing operation parameters
[NXS-1552] - Fix grid layout when hiding some widgets
[NXS-1630] - Workflow editor crashes when trying to clear graph if a graph contains a loop on one node
[NXS-1632] - Welcome page: window does not show scroll if content is high
[NXS-1634] - Target info display problem for studio projects still having "dm" as a target platform
[NXS-1667] - Fix DM contributions holding DAM contributions
[NXS-1694] - Sub-workflow node and escalations rules shouldn't be availabe in the graph editor for a target platform before 5.7.2
[NXS-1695] - Typo in sub-workflow variables tooltip
[NXS-1705] - Fix error when target version is unknown
[NXS-1707] - Fix the widget generated for the task layout when using a workflow/node variable of type 'blob' and a widget of type "File"
[NXS-1712] - Add back functional tests on 5.4.2
[NXS-1715] - Fix migration of inverted event handler condition
[NXS-1716] - Fix custom EL expression sample on workflow availability tag
[NXS-1729] - Studio fails to build the JAR when a subworkflow id is not provided
[NXS-1743] - marketplace package not compatible with HF distribution
[NXS-1751] - Fix JS error when loading a Studio project
[NXS-1755] - Fix random error on test StudioTargetPlatformITCase
Improvements
[NXS-655] - Label changes
[NXS-1357] - Upgrade jsPlumb to 1.5.1
[NXS-1441] - Add current object name to window/tab title
[NXS-1445] - Scripting assistant shouldn't nest @{ } instructions
[NXS-1651] - Label homogeneity > Review Labels of document definition
[NXS-1692] - Display target packages on Studio project in back office
[NXS-1708] - Show warning when declaring a workflow and a node variable with the same name
[NXS-1709] - Change error message when there is no stop node in the graph to use 'stop' instead of 'end'
[NXS-1723] - Add new workflow events
[NXS-1727] - Add workflow related expressions in the EL builder
[NXS-1728] - Add validation error if no workflow is set on a node of type sub-workflow
[NXS-1731] - Add "Resume workflow" operation to Studio
[NXS-1738] - Remove warning regarding the fact that no file widget is used while the document type has a binary property
[NXS-1748] - Use different colors to draw transitions on a node with more than one outgoing transition
[NXS-1749] - Add a "soon deprecated" marker for the last fast track
[NXS-1750] - Change order of target platforms
New Features
[NXS-1612] - Add n-tasks node support
[NXS-1683] - Add a chat feature on Studio using quick integration component Olark
[NXS-1721] - Add support of task re-assignment
[NXS-1732] - Allow task reassignment
[NXS-1747] - Make the new "Tabs" widget available on Studio
[NXS-1758] - Allow configuring subtabs
Tasks
[NXS-1195] - Add non-regression tests for chain creation from action feature
[NXS-1395] - Allow "startswith" operator on content views and searches for system properties from 5.7
[NXS-1466] - Update login screen configuration for 5.7
[NXS-1576] - Labels > Homogenize Life cycle label
129
Summary Table
Guideline
Applicable
Compliance
Applicable
Applicable
Not Applicable
Not Applicable
Not Applicable
Not Applicable
Applicable
Applicable
Supporting Features
Remarks
Supports
130
Supports
Supports
Supports
Supports
Not applicable
Supports
Supporting Features
Remarks
Supports
131
Not applicable
Not applicable
Supports
Not applicable
Supports
Supports
Not applicable
Not applicable
Supports
132
Supporting Features
Remarks
Supports
Supports
Supports
Supports
Supporting Features
Remarks
Supports
133
134