Presentacion y dudas sobre metadatos

cancel
Showing results for 
Search instead for 
Did you mean: 
jbermudez
Member II

Presentacion y dudas sobre metadatos

Buenas, antes de nada presentarme ya que soy nuevo en este foro.

Acabo de instalar Alfresco Community 2.1.0 y ya ando cacharreando con el, pero me surge una duda:

Cuando añado contenido a un espacio, este solo me deja especificar unos pocos metadatos, tales como 'Autor', 'Nombre', 'Descripcion', ademas del tipo de archivo, que el propio Alfresco lo detecta automaticamente.

La pregunta es, como puedo especificar mas metadatos? Y ya para rizar el rizo.. como podria automatizar que dichos campos se autorrellenaran cuando añado mucho contenido via zip, por ejemplo?

Me disculpo anticipadamente si estos temas se han tratado anteriormente, pero he hecho una busqueda y no he visto nada.

Gracias y espero participar activamente en la comunidad Smiley Happy
16 Replies
ajv
Member II

Re: Presentacion y dudas sobre metadatos

Hola JoJo!

Bienvenido al foro  :mrgreen:
Alfresco está pensado para que puedas extenderlo según tus necesidades.
Básicamente tienes 2 formas de extender el modelo de contenido (en cuanto a metadatos): Mediante tipos de contenidos o mediante aspectos.
- Un tipo de contenido es similar al concepto de clase en Java: Encapsula un conjunto de propiedades (metadatos), asociaciones hacia otros nodos y pueden heredar de otro tipo base (para tener por defecto las propiedades, y asociaciones del tipo padre). Por eso, si te creas tipos de contenido que hereden del cm:content podrás distinguir mucho mejor tus contenidos (por ejemplo, un tipo de contenido que sea Factura podría tener unas propiedades específicas como el número de factura, el cliente, etc.).
A la hora de crear un contenido o subir un contenido al repositorio de Alfresco, se puede escoger el tipo de contenido como propiedad general (cuando se especifica el nombre, también se puede indicar el "tipo", que por defecto si no me equivoco sale Contenido o Content).

- Un aspecto lo puedes ver como un encapsulador de metadatos. Así como el tipo de contenido define la estructura fundamental de un contenido, los aspectos puedes añadirse a cualquier tipo de contenido que nos interese para que disponga de esos metadatos. La ventaja de trabajar con aspectos es que es más flexible y eficiente (en el sentido de que, por ejemplo, no todos los elementos de tipo de contenido "Factura" están obligados a tener el aspecto  "Imprimible" sino que añadiríamos el aspecto a las facturas que realmente sean imprimibles….estas tendrían más metadatos…por ejemplo, la fecha de impresión, la persona que mandó a imprimir, etc. etc.)

Entonces, tendrías que crearte tipos de contenido y aspectos según tus necesidades. Cómo? Pues existe una guía de referencia de Jeff Potts (en inglés) muy buena: http://ecmarchitect.com/images/articles/alfresco-content/content-article.pdf También puedes echarle un vistazo a la miniguía de creación de tipos de contenidos de este foro: http://forums.alfresco.com/es/viewtopic.php?f=11&t=641

Y sobre la automatización, pues efectivamente es posible realizar una automatización, pero es necesario disponer de reglas para saber cómo rellenar esos datos.
Se me ocurre por ejemplo, algo de este tipo: Si la extensión es un *.doc pues le asigno el aspecto "Factura" y relleno el metadato fecha con la fecha de hoy y el cliente con "Fulanito"…Cosas de este tipo es posible automatizarlas. Por ejemplo, los comportamientos (behaviours) permiten cotnrolar cosas de este tipo.

Bueno, espero que con estas pinceladas sepas más o menos por donde ir.

Saludos!
jbermudez
Member II

Re: Presentacion y dudas sobre metadatos

Muchas gracias por responder tan rapido Smiley Happy

He seguido el tutorial en ingles que me has pasado, y tambien el tuyo en este foro, y no hay manera de dar con la tecla. En cuando añado algo que se salga de la configuracion estandar a mi alfresco, este deja de funcionar.

Por ejemplo, ahora mismo, en una instalacion limpia, he añadido dos ficheros xml a /opt/alfresco/WEB­INF/classes/alfresco/extension, los que vienen en el ejemplo, someco­model­context.xml y scModel.xml, copiados literalmente del tutorial.

Es añadirlos, reiniciar alfresco y dejar de funcionar:

HTTP Status 404 - /alfresco/
type Status report
message /alfresco/
description The requested resource (/alfresco/) is not available.

Esto me ha pasado tambien tratando de añadir otras extensiones ademas de las de este tutorial.

Hay que hacer algo mas para modificar alfresco? Estoy saltandome algo?

Gracias Smiley Happy
jbermudez
Member II

Re: Presentacion y dudas sobre metadatos

Bueno, no se porque mi mensaje anterior sale en negrita y encima no me deja editarlo. En cualquier caso queria añadir que acabo de probar el mismo tutorial que comentaba en el anterior post, siguiendolo paso a paso, en este caso con Alfresco Enterprise, y el resultado es el mismo.

Cuando añado un custom type, alfresco sencillamente deja de funcionar.

Agradeceria cualquier apunte Smiley Happy
pjcaracuel_2349
Active Member II

Re: Presentacion y dudas sobre metadatos

Puedes poner el contenido del fichero alfresco.log? Seguro que nos da alguna pista de lo que pasa

Saludos
jbermudez
Member II

Re: Presentacion y dudas sobre metadatos

Desde luego, y una vez mas, muchisimas gracias por responder tan rapido. Ahi va:


13:51:34,518 INFO  [org.alfresco.mbeans.VirtServerRegistry] Creating VirtServerRegistry MBean
13:51:34,566 WARN  [org.springframework.remoting.rmi.RmiRegistryFactoryBean] Could not detect RMI registry - creating new one
13:51:34,795 INFO  [org.alfresco.mbeans.VirtServerRegistry] Created JMX serverConnector
13:51:38,707 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webClientConfigService' defined in class path resource [alfresco/web-client-application-context.xml]: Invocation of init method failed; nested exception is org.alfresco.config.ConfigException: Failed to parse config stream
Caused by:
org.alfresco.config.ConfigException: Failed to parse config stream
        at org.alfresco.config.xml.XMLConfigService.parse(XMLConfigService.java:125)
        at org.alfresco.config.BaseConfigService.parse(BaseConfigService.java:221)
        at org.alfresco.config.xml.XMLConfigService.init(XMLConfigService.java:78)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1160)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1122)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1085)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:429)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:250)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:247)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
        at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
        at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: org.dom4j.DocumentException: Error on line 129 of document  : Comment must start with "<!–". Nested exception: Comment must start with "<!–".
        at org.dom4j.io.SAXReader.read(SAXReader.java:482)
        at org.dom4j.io.SAXReader.read(SAXReader.java:343)
        at org.alfresco.config.xml.XMLConfigService.parse(XMLConfigService.java:99)
        … 44 more
13:51:38,710 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/alfresco]] Excepción enviando evento inicializado de contexto a instancia de escuchador de clase org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webClientConfigService' defined in class path resource [alfresco/web-client-application-context.xml]: Invocation of init method failed; nested exception is org.alfresco.config.ConfigException: Failed to parse config stream
Caused by:
org.alfresco.config.ConfigException: Failed to parse config stream
        at org.alfresco.config.xml.XMLConfigService.parse(XMLConfigService.java:125)
        at org.alfresco.config.BaseConfigService.parse(BaseConfigService.java:221)
        at org.alfresco.config.xml.XMLConfigService.init(XMLConfigService.java:78)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1160)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1122)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1085)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:429)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:250)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:247)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
        at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
        at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: org.dom4j.DocumentException: Error on line 129 of document  : Comment must start with "<!–". Nested exception: Comment must start with "<!–".
        at org.dom4j.io.SAXReader.read(SAXReader.java:482)
        at org.dom4j.io.SAXReader.read(SAXReader.java:343)
        at org.alfresco.config.xml.XMLConfigService.parse(XMLConfigService.java:99)
        … 44 more
13:51:38,714 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/alfresco]] Excepción enviando evento inicializado de contexto a instancia de escuchador de clase org.alfresco.web.app.ContextListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webClientConfigService' defined in class path resource [alfresco/web-client-application-context.xml]: Invocation of init method failed; nested exception is org.alfresco.config.ConfigException: Failed to parse config stream
Caused by:
org.alfresco.config.ConfigException: Failed to parse config stream
        at org.alfresco.config.xml.XMLConfigService.parse(XMLConfigService.java:125)
        at org.alfresco.config.BaseConfigService.parse(BaseConfigService.java:221)
        at org.alfresco.config.xml.XMLConfigService.init(XMLConfigService.java:78)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1160)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1122)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1085)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:429)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:250)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:247)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
        at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
        at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: org.dom4j.DocumentException: Error on line 129 of document  : Comment must start with "<!–". Nested exception: Comment must start with "<!–".
        at org.dom4j.io.SAXReader.read(SAXReader.java:482)
        at org.dom4j.io.SAXReader.read(SAXReader.java:343)
        at org.alfresco.config.xml.XMLConfigService.parse(XMLConfigService.java:99)
        … 44 more
pjcaracuel_2349
Active Member II

Re: Presentacion y dudas sobre metadatos

Buenas,

REvisa los xml que has añadido porque aparentemente no estan bien formados.

Caused by: org.dom4j.DocumentException: Error on line 129 of document  : Comment must start with "<!–". Nested exception: Comment must start with "<!–".

Saludos
jbermudez
Member II

Re: Presentacion y dudas sobre metadatos

Bien, en ese caso si era un error de codificacion de caracteres que ha hecho que al pegar del tutorial a la consola salieran caracteres raros. Ahora, ya comprobado que todo aparece tal y como en el tutorial, me dice el siguente error.

].[/alfresco]] Excepción enviando evento inicializado de contexto a instancia de escuchador de clase org.alfresco.web.app.ContextListener
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 1 in XML document from file [/opt/alfresco/tomcat/shared/classes/alfresco/extension/someco-model-context.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Invalid encoding name "UTF­8".
Caused by:
org.xml.sax.SAXParseException: Invalid encoding name "UTF­8".

Concretamente el fichero que da el error, someco-model.context.xml, tiene este contenido:

<?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/scModel.xml</value>
            </list>
        </property>
    </bean>
</beans>

Es decir, tal y como viene literalmente en el tutorial… alguna idea ?
pjcaracuel_2349
Active Member II

Re: Presentacion y dudas sobre metadatos

Buenas,

Una cosa que veo mal en el xml, creo:

depends­on en lugar de depends-on

Yo he arrancado alfresco sin problemas poniendo el siguiente fichero someco-model.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/scModel.xml</value>
            </list>
        </property>
    </bean>
</beans>
jbermudez
Member II

Re: Presentacion y dudas sobre metadatos

Lo he cambiado y sigue dando el mismo fallo….