Está en la página 1de 129

Curso Introducción a

Alfresco

Guillermo Rodríguez
I. Introducción
I. Introducción
Índice
¿Qué es un gestor documental?

Introducción a Alfresco (qué es y un poco de


historia...)

Características de Alfresco

Licencia
I. Introducción
¿Qué es un gestor documental?
Un Gestor Documental (Document Management System)
es un programa que permite gestionar grandes
cantidades de documentos electrónicos.

Los sistemas de gestión documental normalmente


proporcionan almacenaje, seguridad, flujos de trabajo,
versionado, así como capacidades de recuperación e
indexación.

El concepto de Gestor Documental a diferencia de un


Gestor de Contenidos (Content Management System) se
centra en los documentos.
I. Introducción
Introducción a Alfresco
¿Qué es Alfresco?
Sistema de gestión documental libre basado en
estándares abiertos.

Un poco de historia...
Fundado en 2005 por John Newton, cofundador de
Documentum y John Powell, ex COO de Business
Objects.
Sus principales inversores son Accel Partners, Mayfield
Fund y SAP.
El staff técnico original estaba compuesto por ingenieros
provenientes de Documentum y Oracle.
I. Introducción
Características de Alfresco I
Desde el punto de vista del usuario:
Interfaz web
Unidad compartida
Control de versiones
Búsquedas
Integración con portales existentes
Integración con Office
Reglas de contenidos
Etiquetado
Flujos de trabajo
I. Introducción
Características de Alfresco II
Desde el punto de vista del desarrollador/admin:
Basado en estándares abiertos
Programado en Java
Scripts ligeros (JavaScript y Freemarker)
Arquitectura REST
Motor de indexación Lucene
Motor de flujos de trabajo jBPM
Sin instalación en el cliente
Interfaces CIFS, WebDAV, FTP, IMAP
Seguridad (usuarios, grupos, roles, integración
LDAP/AD)
Motor de transformación de datos (OpenOffice y
SWFTools)
I. Introducción
Licencia
Versiones
Existen dos versiones de Alfresco:
Community
Soportada por la comunidad
Enterprise
Suscripción
Certificado
Asistencia técnica
Alfresco Network
II. Alfresco Web Content
Management
II. Alfresco Web Content Management
Pantalla inicial
II. Alfresco Web Content Management
Pantalla inicio sesión
II. Alfresco Web Content Management
My Alfresco
II. Alfresco Web Content Management
Company Home
II. Alfresco Web Content Management
My Home
II. Alfresco Web Content Management
Guest Home
II. Alfresco Web Content Management
Configuración pantalla inicial I
II. Alfresco Web Content Management
Configuración pantalla inicial II
II. Alfresco Web Content Management
Configuración pantalla inicial III
II. Alfresco Web Content Management
Consola de administración
II. Alfresco Web Content Management
Administración de usuarios
II. Alfresco Web Content Management
Creación de usuarios I
II. Alfresco Web Content Management
Creación de usuarios II
II. Alfresco Web Content Management
Creación de usuarios III
II. Alfresco Web Content Management
Prueba login nuevo usuario
II. Alfresco Web Content Management
Creación de espacios I
II. Alfresco Web Content Management
Creación de espacios II
II. Alfresco Web Content Management
Creación de contenidos I
II. Alfresco Web Content Management
Creación de contenidos II
II. Alfresco Web Content Management
Creación de contenidos III
II. Alfresco Web Content Management
Creación de contenidos IV
II. Alfresco Web Content Management
Propiedades de los contenidos I
II. Alfresco Web Content Management
Propiedades de los contenidos II
II. Alfresco Web Content Management
Flujos de trabajo I
II. Alfresco Web Content Management
Flujos de trabajo II
II. Alfresco Web Content Management
Flujos de trabajo III
II. Alfresco Web Content Management
Flujos de trabajo IV
II. Alfresco Web Content Management
Flujos de trabajo VI
II. Alfresco Web Content Management
Flujos de trabajo VII
II. Alfresco Web Content Management
Invitar usuarios a un espacio I
II. Alfresco Web Content Management
Invitar usuarios a un espacio II
II. Alfresco Web Content Management
Administrar usuarios de un espacio
II. Alfresco Web Content Management
Crear reglas en un espacio I
II. Alfresco Web Content Management
Crear reglas en un espacio II
II. Alfresco Web Content Management
Crear reglas en un espacio III
II. Alfresco Web Content Management
Crear reglas en un espacio IV
II. Alfresco Web Content Management
Administrar reglas de un espacio
II. Alfresco Web Content Management
Búsqueda Avanzada
III. Alfresco Share
III. Alfresco Share
Introducción
Pantalla inicial
Consola de administración
Crear sitio nuevo
Configuración del sitio
Funcionalidades (wiki, blog, bibiloteca de
documentos, calendario, enlaces, foro)
III. Alfresco Share
Inicio de sesión
III. Alfresco Share
Pantalla inicial
III. Alfresco Share
Consola de administración
III. Alfresco Share
Configurar pantalla inicial
III. Alfresco Share
Crear sitio nuevo I
III. Alfresco Share
Crear sitio nuevo II
III. Alfresco Share
Pantalla inicial de un sitio
III. Alfresco Share
Configuración de un sitio
III. Alfresco Share
Invitar a un usuario a un sitio
III. Alfresco Share
Wiki
III. Alfresco Share
Blog
III. Alfresco Share
Biblioteca de documentos
III. Alfresco Share
Calendario
III. Alfresco Share
Enlaces
III. Alfresco Share
Foro
III. Alfresco Share
Listados de datos
III. Alfresco Share
Usuarios del sitio
IV. Instalación y
Configuración
IV. Instalación y Configuración
Introducción
Obtener Alfresco
Antes de empezar
Ejecutar el instalador
Configuración
Instalar SWFTools
Buscar programas (SWFTools, OpenOffice)
Archivo alfresco-global.properties
Notificaciones por correo electrónico
Traducir interfaz
Varios...
IV. Instalación y Configuración
Obtener Alfresco
Página de descarga:
http://wiki.alfresco.com/wiki/Download_and_Insta
ll_Alfresco

En este curso de utilizará la versión Alfresco


Community 3.3:
http://www.alfresco.com/elqNow/elqRedir.htm?
ref=http://dl.alfresco.com/release/community/buil
d-2860/Alfresco-Community-3.3g-Linux-x86-
Install?dl_file=release/community/build-
2860/Alfresco-Community-3.3g-Linux-x86-Install
IV. Instalación y Configuración
Antes de empezar
Instalar:
$ sudo aptitude install sun-java6-jdk
imagemagick libjpeg-dev

Arrancar OpenOffice en modo headless :


$ /usr/lib/openoffice/program/soffice "-
accept=socket,host=localhost,port=8100;urp;S
tarOffice.ServiceManager" -nologo -headless
-nofirststartwizard
IV. Instalación y Configuración
Ejecutar el instalador
Dar permisos de ejecución:
$ chmod +x Alfresco-Community-3.3g-Linux-
x86-Install

Ejecutar:
$ ./Alfresco-Community-3.3g-Linux-x86-Install
IV. Instalación y Configuración
Instalación I
IV. Instalación y Configuración
Instalación II
IV. Instalación y Configuración
Instalación III
IV. Instalación y Configuración
Instalación IV
IV. Instalación y Configuración
Instalación V
IV. Instalación y Configuración
Instalación VI
IV. Instalación y Configuración
Instalación VII
IV. Instalación y Configuración
Instalación VIII
IV. Instalación y Configuración
Instalación IX
IV. Instalación y Configuración
Instalación X
IV. Instalación y Configuración
Instalación XI
IV. Instalación y Configuración
Instalación XII
IV. Instalación y Configuración
Instalación XIII
IV. Instalación y Configuración
Instalación XIV
IV. Instalación y Configuración
Instalación XV
IV. Instalación y Configuración
Instalar SWFTools
Obtener SWFTools:
http://www.swftools.org/download.html
(descargar versión 0.9 o superior)

Instalar
$ tar xzf swftools-0.9.1.tar.gz
$ cd swftools-0.9.1/
$ ./configure
$ make
$ sudo make install
IV. Instalación y Configuración
Buscar programas
Buscar comandos de SWFTools:
$ whereis pdf2swf
pdf2swf: /usr/local/bin/pdf2swf
(Hay que poner la ruta completa)
$ whereis convert
Convert:
/usr/bin/convert/usr/share/man/man1/convert.1.gz
(Hay que poner la carpeta root, donde se encuentra la
carpeta bin)
Buscar comando OpenOffice
$ whereis soffice
soffice: /usr/bin/soffice
(Hay que poner la ruta completa y tener cuidad con la ruta a
ooo.user, ya que hay un bug en el instalador para Debian)
IV. Instalación y Configuración
Archivo alfresco-global.properties I
El archivo alfresco-global.properties es el
principal archivo de configuración de Alfresco.

Los elementos básicos de configuración son:


Directorio con los datos (alf_data)
Configuración de la conexión a la B.D.
Programas externos
Correo electrónico
IV. Instalación y Configuración
Archivo alfresco-global.properties II
Configuración de los programas externos:
$ vim tomcat/shared/classes/alfresco-global.properties
#
# External locations
# -----------------------
ooo.exe=/usr/bin/soffice

ooo.user=/home/willy/trabajo/charlas/alfresco_eghost_2010/alfresco33c/alf_data
/oouser

jodconverter.officeHome=/home/willy/trabajo/charlas/alfresco_eghost_2010/alfre
sco33c
jodconverter.portNumbers=8101
#ooo.enabled=false
#jodconverter.enabled=true
img.root=/usr
swf.exe=/usr/local/bin/pdf2swf
IV. Instalación y Configuración
Notificaciones por correo electrónico
Configuración de envío de notificaciones:
$ vim tomcat/shared/classes/alfresco-global.properties
#
# Sample Gmail settings
# ------------------------------------
mail.host=smtp.gmail.com
mail.port=465
mail.protocol=smtps
mail.username=micorreo@gmail.com
mail.password=miconstraseña

# New Properties
mail.smtps.starttls.enable=true
mail.smtps.auth=true
IV. Instalación y Configuración
Traducir el interfaz
Descargar archivo de traducciones:
http://forge.alfresco.com/projects/alfrescoeses/

Descomprimir:
alfresco_3.2_ES-beta1/messages en
tomcat/shared/classes/alfresco/messages
alfresco_3.2_ES-beta1/web-extension en
tomcat/shared/classes/alfresco/web-extension
IV. Instalación y Configuración
Varios
Archivo de log:
$ vim alfresco.log

Cambiar el modo de ejecución para que se muestre en la consola en la que lo


ejecutamos:
$ vim tomcat/bin/startup.sh

Al final del archivo cambiar:


exec "$PRGDIR"/"$EXECUTABLE" start "$@"
Por:
exec "$PRGDIR"/"$EXECUTABLE" run "$@"

PermGenSizeError
$ vim tomcat/bin/startup.sh
Añadir al principio la linea:
JAVA_OPTS = "${JAVA_OPTS} -XX:PermSize=512m
-XX:MaxPermSize=512m"
V. Desarrollo sobre
Alfresco
V. Desarrollo sobre Alfresco
Introducción
Instalación Alfresco SDK
Integración con Eclipse
Definición de un modelo de datos
Visualización del modelo de datos
Acciones
Flujos de trabajo
V. Desarrollo sobre Alfresco
Instalación Alfresco SDK
Prerequisitos:
JDK 1.6.x
Eclipse IDE 3.2+
MySql 1.5.0.67

Descargar:
http://sourceforge.net/projects/alfresco/files/SDK/

Descomprimirlo (no requiere más instalación)


V. Desarrollo sobre Alfresco
Integración con Eclipse I
Utilizar Eclipse con Java 6
Menú: Window -> Preferences
En el árbol: Java -> Compiler
Seleccionar 1.6 en la opción Compiler
compliance level y dar a OK
Importar los proyectos de Alfresco en Eclipse
Menú: File -> Import
Seleccionar: General -> Exisiting projects into
workspace
Seleccionar el directiorio donde está el SDK de
Alfresco
V. Desarrollo sobre Alfresco
Integración con Eclipse II
V. Desarrollo sobre Alfresco
Integración con Eclipse III
V. Desarrollo sobre Alfresco
Definición de un modelo de datos I
Entorno de extensión de Alfresco WCM:
tomcat/shared/classes/alfresco/extension

Hay que crear un archivo mi-modelo-context.xml


que Alfresco lee al iniciar (Spring) en
omcat/shared/classes/alfresco/. En dicho archivo
hay que indicar qué fichero contendrá el modelo
de datos.
V. Desarrollo sobre Alfresco
Definición de un modelo de datos II
$ vim tomcat/shared/classes/alfresco/extension/mi-modelo-
context.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN'
'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- Registration of new models -->
<bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap"
depends-on="dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/extension/customModel.xml</value>
</list>
</property>
</bean>
</beans>
V. Desarrollo sobre Alfresco
Definición de un modelo de datos III
Para definir el modelo:
Editar el archivo customModel.xml
Indicar nombre del modelo
Definir Imports
Definir namespaces
Definir tipos de contenido con sus propiedades
V. Desarrollo sobre Alfresco
Definición de un modelo de datos IV
<?xml version="1.0" encoding="UTF-8"?>
<!-- Custom Model -->
<!-- Note: This model is pre-configured to load at startup of the Repository. So,
all custom -->
<!-- types and aspects added here will automatically be registered -->
<model name="custom:customModel"
xmlns="http://www.alfresco.org/model/dictionary/1.0">
<!-- Optional meta-data about the model -->
<description>Custom Model</description>
<author>Guillermo</author>
<version>1.0</version>
<imports>
<!-- Import Alfresco Dictionary Definitions -->
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<!-- Import Alfresco Content Domain Model Definitions -->
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
</imports>
(...)
V. Desarrollo sobre Alfresco
Definición de un modelo de datos V
(…)
<!-- Introduction of new namespaces defined by this model -->
<!-- NOTE: The following namespace custom.model should be changed to reflect your own namespace -->
<namespaces>
<namespace uri="custom.model" prefix="custom"/>
</namespaces>

<!-- Type and Aspect definitions go here -->


<types>
<type name="custom:ejemplo">
<title>Expediente</title>
<parent>cm:content</parent>
<properties>
<property name="custom:codigo">
<type>d:text</type>
</property>
<property name="custom:relacionados">
<type>d:text</type>
<multiple>true</multiple>
</property>
</properties>
</type>
</types>
</model>
V. Desarrollo sobre Alfresco
Visualización del modelo de datos I
Se ha definido el modelo de datos, pero hay que
indicar cómo se debe mostrar ese modelo.

Para hacerlo, hay que editar el archivo web-client-


config-custom.xml:

$ vim tomcat/shared/classes/alfresco/extension/web-client-
config-custom.xml
V. Desarrollo sobre Alfresco
Visualización del modelo de datos I
<alfresco-config>
<!-- Para que se muestre el tipo al crear un contenido nuevo -->
<config evaluator="string-compare" condition="Content Wizards">
<content-types>
<type name="custom:ejemplo" display-label="Expediente"/>
</content-types>
</config>
<!-- Para que se muestren los campos al editar los metadatos del
contenido -->
<config evaluator="node-type" condition="custom:ejemplo">
<property-sheet>
<show-property name="custom:codigo"/>
<show-property name="custom:relacionados"/>
</property-sheet>
</config>
(...)
V. Desarrollo sobre Alfresco
Visualización del modelo de datos II
(…)

<!-- Para que al hacer la búsqueda simple se busque por esos datos -->
<config>
<client>
<simple-search-additional-attributes>
<qname>{custom.model}codigo</qname>
<qname>{custom.model}relacionados</qname>
</simple-search-additional-attributes>
</client>
</config>

(...)
V. Desarrollo sobre Alfresco
Visualización del modelo de datos II
(...)
<!-- Para que los datos aparezcan en la búsqueda avanzada, tanto el
tipo como los campos -->
<config evaluator="string-compare" condition="Advanced Search">
<advanced-search>
<content-types>
<type name="custom:ejemplo" />
</content-types>
<custom-properties>
<meta-data type="custom:ejemplo" property="custom:codigo" />
<meta-data type="custom:ejemplo" property="custom:relacionados" />
</custom-properties>
</advanced-search>
</config>
</alfresco-config>
V. Desarrollo sobre Alfresco
Acciones I
Para crear una acción se toma como referencia el
proyecto SDK CustomAction.

El proyecto contiene:
archivo xml que define qué clase implementa la
acción (logger-action-context.xml)
la propia clase (LoggerActionExecuter.java)
se puden añadir archivos de propiedades con las
cadenas de texto (logger-action-
messages.properties)
V. Desarrollo sobre Alfresco
Acciones II
hello-world-action-context.xml:
<beans>
<!-- Logger Action Bean -->
<bean id="hello-world-action"
class="org.alfresco.sample.HelloWorldActionExecuter" parent="action-
executer"/>
<!-- Load the Logger Action Messages -->
<bean id="hello-world-action-messages"
class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
<property name="resourceBundles">
<list>
<value>org.alfresco.sample.hello-world-action-messages</value>
</list>
</property>
</bean>
</beans>
V. Desarrollo sobre Alfresco
Acciones III
HelloWorldActionExecuter.java:
public class HelloWorldActionExecuter extends ActionExecuterAbstractBase
{
/** The name of the action */
public static final String NAME = "hello-world-action";

@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef)
{
System.out.println("Hello World!!!");
}

@Override
protected void addParameterDefinitions(List<ParameterDefinition> paramList)
{
}
}
V. Desarrollo sobre Alfresco
Acciones IV
hello-world-action-messages.properties:
# Action title and description
hello-world-action.title=Hello World Action
hello-world-action.description=This action says hello to the world.

Despligue de la acción:

El archivo hello-world-action-context.xml se debe pegar en


la carpeta tomcat/shared/classes/alfresco/extension
El jar que contiene tanto la clase de Java compilada como el
archivo de propiedades hay que copiarlo en
tomcat/webapps/alfresco/WEB-INF/lib
V. Desarrollo sobre Alfresco
Flujos de trabajo I
Alfresco utiliza el motor jBMP.

Existe un plugin para Eclipse.


Descargar jbpm-jpdl-3.2.3 de:
http://sourceforge.net/projects/jbpm/files/

Descomprimir el contenido de la carpeta


designer/eclipse en la raíz de Eclipse y arrancar
Ecplise.

Se podrán crear proyectos de tipo JbossJBPM.


V. Desarrollo sobre Alfresco
Flujos de trabajo II
Crear el proyecto: Nuevo -> Proyecto -> JBoss
JBPM -> Process Project
Hay que darle un nombre y asignarle un motor
jBPM (seleccionando la carpeta donde se ha
descomprimido el archivo jbpm-jpdl).
Para poder desplegarlo directamente hay que
editar el archivo processdefinition.xml. En la
pestaña deployment hay que introducir los datos
de conexión del servidor poniendo
/alfresco/jbpm/deployprocess en la opción Server
Deployer.
V. Desarrollo sobre Alfresco
Flujos de trabajo III
Pestañas del archivo processdefinition.xml:
Diagram: representación gráfica del flujo de
trabajo, se pueden crear acciones y transiciones
visualmente (bastante útil aunque tiene algunos
fallos)
Deployment: se puede utilizar para desplegar
directamente el workflow en el servidor
Design: vista del archivo xml en árbol
Source: archivo xml
V. Desarrollo sobre Alfresco
Definición de un flujo de trabajo I
Elementos destacados de un flujo de trabajo:
Estados: existirá un estado inicial (start-state) y
otro final (end-state), así como los estados
intermedios. Los estados se componen de
tareas (task) y transiciones (transition).
Actores (swimlane): los flujos de trabajo pueden
ser asignados, tanto a usuarios como a grupos.
Eventos: pueden realizarse acciones cuando se
den ciertos eventos.
V. Desarrollo sobre Alfresco
Definición de un flujo de trabajo II
<?xml version="1.0" encoding="UTF-8"?>
<!-- Damos nombre al workflow -->
<process-definition xmlns="urn:jbpm.org:jpdl-3.2"
name="workflowejemplo">
<!-- Declaramos que hay un actor que es el que inicia el workflow -->
<swimlane name="initiator" />
<!-- Hay que definir un estao inicial -->
<start-state name="inicio">
<!-- La tarea que inicia el workflow se ejecuta por "initiator" -->
<task name="wfl:submitWorkflowEjemploTask" swimlane="initiator" />
<!-- Este estado conduce al primer estado -->
<transition name="" to="Estado1">
<!-- Al pasar de este estao al siguiente se ejecuta esta acción, en este caso
solamente se escribe un mensaje -->
<action name="action" class="com.sample.action.MessageActionHandler">
<message>Going to the first state!</message>
</action>
</transition>
</start-state>
(...)
V. Desarrollo sobre Alfresco
Definición de un flujo de trabajo III
(…)
<!-- Definimos otro actor que es la persona a la que se le asigna la tarea,
de la clase AlfrescoAssignment -->
<swimlane name="assignee">
<assignment
class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
<!-- Se mapea la asignación con el usuario elegido en el interfaz
-->
<actor>#{bpm_assignee}</actor>
</assignment>
</swimlane>

(...)
V. Desarrollo sobre Alfresco
Definición de un flujo de trabajo IV
(...)
<!-- La siguiente tarea es Estado1 -->
<task-node name="Estado1">
<!-- Esta tarea se asiganará al usuario definido previamente para ello -->
<task name="wfl:tarea1Task" swimlane="assignee">
<event type="task-create">
<!-- Al crear la tarea se le asignan prioridad y fecha para la que debería estar -->
<script>
if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate;
if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority;
</script>
</event>
</task>
<!-- De este estado se va a Estado2 -->
<transition to="Estado2" name="">
<action name="action" class="com.sample.action.MessageActionHandler">
<message>Going to the second state!</message>
</action>
</transition>
</task-node>
(...)
V. Desarrollo sobre Alfresco
Definición de un flujo de trabajo VI
(...)
<!-- Estado2 -->
<task-node name="Estado2">
<!-- Desde aquí se va a al estado final -->
<transition to="fin" name="">
<action name="action" class="com.sample.action.MessageActionHandler">
<message>Going to the last state!</message>
</action>
</transition>
</task-node>

<!-- Estado final -->


<end-state name="fin"></end-state>
<!-- Acción que se ejecuta al finalizar -->
<event type="process-end">
<action name="action" class="com.sample.action.MessageActionHandler">
<message>The End!!!</message>
</action>
</event>
</process-definition>
V. Desarrollo sobre Alfresco
Modelo de datos I
Además de crear el flujo de trabajo en formato BPM, es
necesario mapear los estados que estemos usando en dicho
workflow con un modelo de datos de Alfresco.

Hay que editar el archivo mi-modelo-context.xml incliur el


nuevo modelo:

$ vim tomcat/shared/classes/alfresco/extension/mi-modelo-
context.xml

Añadimos:
<list>
<value>alfresco/extension/workflowModel.xml</value>
</list>
V. Desarrollo sobre Alfresco
Modelo de datos II
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN'
'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- Registration of new models -->
<bean id="extension.dictionaryBootstrap"
parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/extension/customModel.xml</value>
<value>alfresco/extension/workflowModel.xml</value>
</list>
</property>
</bean>
</beans>
V. Desarrollo sobre Alfresco
Modelo de datos III
$ vim tomcat/shared/classes/alfresco/extension/workflowModel.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Custom Model -->
<model name="wfl:customModel"
xmlns="http://www.alfresco.org/model/dictionary/1.0">
<!-- Optional meta-data about the model -->
<description>Workflow Model</description>
<author>Guillermo</author>
<version>1.0</version>
<imports>
<!-- Import Alfresco Dictionary Definitions -->
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<!-- Import Alfresco Content Domain Model Definitions -->
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
<!-- Import Alfresco jBPM Definitions -->
<import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/>
</imports>
(...)
V. Desarrollo sobre Alfresco
Modelo de datos IV
(...)
<namespaces>
<namespace uri="wfl.model" prefix="wfl"/>
</namespaces>

<!-- Type and Aspect definitions go here -->


<types>
<!-- Ejemplo workflow -->
<!-- Estado inicial -->
<type name="wfl:submitWorkflowEjemploTask">
<!-- Al ser el primero, debe extender de bpm:startTask -->
<parent>bpm:startTask</parent>
<!-- Como aspecto obligatorio, se define que se va asignar a un usuario, si se quiere
que sea más de uno habría que usar bpm:assignees, para un grupo bpm:groupAssignee
y para varios grupos bpm:groupAssignees-->
<mandatory-aspects>
<aspect>bpm:assignee</aspect>
</mandatory-aspects>
</type>
(...)
V. Desarrollo sobre Alfresco
Modelo de datos V
(...)
<!-- Estado1 -->
<type name="wfl:estado1Task">
<!-- Debe extender de bpm:workflowTask -->
<parent>bpm:workflowTask</parent>
<!-- Aquí se definen los permisos que tendrá el usuario, lo que podrá hacer en este
estado -->
<overrides>
<!-- Permiso para añadir más ficheros en el workflow -->
<property name="bpm:packageActionGroup">
<default>add_package_item_actions</default>
</property>

<!-- Para que se muestren las acciones de edición -->


<property name="bpm:packageItemActionGroup">
<default>edit_package_item_actions</default>
</property>
</overrides>
</type>
(...)
V. Desarrollo sobre Alfresco
Modelo de datos VI
(...)
<!-- Estado2 -->
<type name="wfl:traducidoTask">
<parent>bpm:workflowTask</parent>
</type>
</types>
</model>

Además, hay que reflejarlo en el archivo web-client-config-


custom.xml
$ vim tomcat/shared/classes/alfresco/extension/web-client-
config-custom.xml
V. Desarrollo sobre Alfresco
Viusalización del modelo de datos I
<alfresco-config>
<!-- Workflow -->
<!-- Mapeamos con el estado inicial -->
<config evaluator="node-type" condition="wfl:submitWorkflowEjemploTask" replace="true">
<!-- Aquí se definen las propiedades que se van a mostrar en el detalle de la tarea -->
<property-sheet>
<separator name="sep1" display-label-id="general" component-
generator="HeaderSeparatorGenerator" />
<!-- Descripcion -->
<show-property name="bpm:workflowDescription" component-generator="TextAreaGenerator" />
<!-- Prioridad -->
<show-property name="bpm:workflowPriority" />
<!-- Fecha estimada -->
<show-property name="bpm:workflowDueDate" />
<separator name="sep2" display-label-id="users_and_roles" component-
generator="HeaderSeparatorGenerator" />
<!-- Cuadro para que se pueda seleccionar a quién se asigna -->
<show-association name="bpm:assignee" />
</property-sheet>
</config>

(...)
V. Desarrollo sobre Alfresco
Viusalización del modelo de datos II
(...)
<config evaluator="node-type" condition="wfl:tarea1Task" replace="true">
<property-sheet>
<separator name="sep1" display-label-id="general" component-
generator="HeaderSeparatorGenerator" />
<show-property name="bpm:taskId" />
<show-property name="bpm:workflowDescription" component-
generator="TextAreaGenerator" />
<show-property name="bpm:status" />
<show-property name="bpm:dueDate" />
<show-property name="bpm:priority" />
</property-sheet>
</config>
</alfresco-config>
Anexo
Enlaces
Alfresco
http://www.alfresco.com
Gestor Documental en Wikipedia:
http://es.wikipedia.org/wiki/Software_de_gestión_documental

También podría gustarte