07-02-2009 03:53 AM
<config>
<actions>
<!– Launch Add Aspect Dialog –>
<action id="custodia">
<label>Custodia</label>
<image>/images/icons/add.gif</image>
<tooltip>Envia el documento a custodia</tooltip>
</action>
<!– Add action to more actions menu for each space –>
<action-group id="document_browse_menu">
<action idref="add_aspect" />
</action-group>
</actions>
</config>
07-09-2009 07:09 AM
07-10-2009 07:03 AM
<config>
<actions>
<action id="copia">
<label>Copia</label>
<image>/images/icons/add.gif</image>
<tooltip>Crea una copia local del documento</tooltip>
<action-listener>#{copia.crearCopiaLocal}</action-listener>
<params>
<param name="id">#{actionContext.id}</param>
<param name="name">#{actionContext.properties['cm:name']}</param>
<param name="url">#{actionContext.properties['cm:url']}</param>
<param name="nodeRef">#{actionContext.nodeRef}</param>
</params>
</action>
<!– Add action to more actions menu for each space –>
<action-group id="document_browse_menu">
<action idref="custodia" />
</action-group>
</actions>
</config>
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<bean id="copia"
class="es.alfresco.action.executer.CopiaActionExecuter"
parent="action-executer">
<property name="nodeService">
<ref bean="NodeService" />
</property>
<property name="fileFolderService">
<ref bean="FileFolderService" />
</property>
</bean>
<bean id="extension.actionResourceBundles" parent="actionResourceBundles">
<property name="resourceBundles">
<list>
<value>alfresco.extension.custodiaactionmessages</value>
</list>
</property>
</bean>
</beans>
public class es.alfresco.action.executer.CopiaActionExecuter extends ActionExecuterAbstractBase{
/**
* Referencia al interfaz que tiene acceso a los nodos de Alfresco.
* Para tener este referencia es necesario declarar un parametro
* con el mismo nombre en la declaracion del bean de la accion
*/
private NodeService nodeService;
/**
* Referencia al interfaz que tiene acceso a los ficheros(contenidos)
* y a los directorios(spaces) de alfresco.
* Para tener este referencia es necesario declarar un parametro
* con el mismo nombre en la declaracion del bean de la accion
*/
private FileFolderService fileFolderService;
/**
* Constructor de la clase
*/
public CustodiaSIAVALActionExecuter(){
super();
}
/**
* Obtiene referencia al Node Service
* @return referencia al NodeService
*/
public NodeService getNodeService() {
return nodeService;
}
/**
* Da valor a la referencia al nodeService de la clase.
* Este metodo se lanza por el hecho de tener definido
* el parametro nodeService en la declaracion del bean de la accion
* @param nodeService referencia al nodeService
*/
public void setNodeService(NodeService nodeService){
this.nodeService = nodeService;
}
/**
* Da valor a la referencia al fileFolderService de la clase.
* Este metodo se lanza por el hecho de tener definido
* el parametro fileFolderService en la declaracion del bean de la accion
* @param fileFolderService referencia al fileFolderService
*/
public void setFileFolderService(FileFolderService fileFolderService){
this.fileFolderService = fileFolderService;
}
/**
* Crea una copìa local del documento que lanza el evento en la unidad C. El nombre de la copia
* siuue el siguiente patron: "Copia_<nombre_doc_original>.<ext_doc_original>"
* @param e referencia al evento que lanza la accion
*/
public void crearCopiaLocal(ActionEvent e){
try {
// obtengo los parámetros recibidos
UIActionLink link = (UIActionLink)e.getComponent();
Map params = link.getParameterMap();
// obtengo instancia del noderef
String nodeRefStr = (String) params.get("nodeRef");
NodeRef nodeRef = new NodeRef(nodeRefStr);
if (fileFolderService==null){
// otra forma de obtener el filefolderservice
fileFolderService = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getFileFolderService();
}
if (fileFolderService!=null){
// obtengo el reader a partir del filefolderservice
ContentReader reader = fileFolderService.getReader(nodeRef);
InputStream is = reader.getContentInputStream();
// obtengo el nombre que le pondremos a la copia
String nombreCopia = getNombreCopia(nodeRef);
// creo un outputstream, ubicare el fichero en la unidad C:
OutputStream os = new FileOutputStream(new File("c:\\"+nombreCopia));
byte[] bytes = new byte[4096];
int len;
// copio el fichero en bloques de 4k
while ((len = is.read(bytes)) >= 0) {
os.write(bytes, 0, len);
}
os.close();
System.out.println("fin de la copia");
}else{
System.out.println("el FileFolder es null");
}
} catch (ContentIOException e1) {
e1.printStackTrace();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
private String getNombreCopia(NodeRef nodeRef){
Map propiedades = nodeService.getProperties(nodeRef);
QName qName = QName.createQName("{http://www.alfresco.org/model/content/1.0}name");
String nombre = (String)propiedades.get(qName);
int indicePunto = nombre.indexOf(".");
String nombreSinExt = nombre.substring(0,indicePunto);
String nombreCopia = "Copia_" + nombreSinExt +"." + nombre.substring(indicePunto+1);
return nombreCopia;
}
protected void executeImpl(Action arg0, NodeRef arg1) {
}
protected void addParameterDefinitions(List arg0) {
}
}
07-10-2009 07:07 AM
03-26-2010 03:48 AM
04-01-2010 08:46 PM
<action id="mi_accion">
<label-id>miaccion</label-id>
<image>/image/icons/miaccion.gif</image>
<action>dialog:miaction</action> <!– esta es la parte importante ya que llamara un dialogo–>
</action>
<action-group id="browse_actions_menu">
<action idref="mi_accion"/><!– aca agregaras el link de la accion.–>
</action-group>
<dialog name="miaccion" page="/jsp/extension/miaccion.jsp" managed-bean="si es que tengo"
icon="/images/icons/miaccion.gif" title-id="mi-accion" />
<navigation-rule>
<from-view-id>/jsp/*</from-view-id>
<navigation-case>
<from-outcome>miaccion</from-outcome>
<to-view-id>/jsp/extension/miaccion.jsp</to-view-id>
</navigation-case>
</navigation-rule>
04-05-2010 11:18 AM
06-23-2017 07:21 AM
Buenas tardes, me gustaría retomar este hilo porque tengo que hacer algo parecido, lo que quiero es llamar a una aplicación que tengo desplegada en tomcat (el mismo donde está mi Alfresco que por cierto es el 3.4.d) he seguido todos los pasos pero lo que no sé es cómo implementar el método dentro del actionexecuter.java para que llame a otra aplicación, ya que en el código de showbiz_ lo que hace es una copia del documento. gracias de antemano por cualquier ayuda que puedan prestarme. un saludo.
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.