Alfresco Share 5, using “authority.ftl” form control

Last week I was designing an Alfresco Content Model including a property to gather a set of Alfresco users to be sent to an external service.

I remembered about authority.ftl form control, which is a picker that could fit fine with my requirements.

I searched about the control at official documentation

… and also in the Community.

After some research inspecting Alfresco source code, I realised that this control is auto-configured depending on the definition of the property to be rendered.


   picker.setOptions(
   {
      itemType: "${field.endpointType}",
      multipleSelectMode: ${field.endpointMany?string},
      itemFamily: "authority"
   });

So to include a form control to select MANY USERS following content model should be declared in Repository part.

<aspect name="ks:defaultSigners">
	<associations>
		<association name="ks:alfrescoUser">
			<source>
				<mandatory>false</mandatory>
				<many>true</many>
			</source>
			<target>
				<class>cm:person</class>
				<mandatory>false</mandatory>
				<many>true</many>
			</target>
		</association>
	</associations>
</aspect>

And a simple form control association in Share part makes the work.

<field id="ks:alfrescoUser">
    <control template="/org/alfresco/components/form/controls/authority.ftl"/>
</field>

Also relevant for this use case the addon provided by Douglas C. R. Paes at Alfresco Colleagues Picker Form.

Sometimes a small investigation before developing your tasks will save you many time and will produce an easier solution.

Anuncios

How to develop a SOAP client from Alfresco Repository

Due to integration requirements with legacy old systems, it happens that Alfresco Repository must invoke an external SOAP endpoint. As Alfresco Repository web application includes a changing JAR Library catalog, using an out-of-the-box implementation to build SOAP clients is advisable.

The target scenario

I selected a sample Global Weather SOAP Web Service endpoint available at

http://www.webservicex.net/globalweather.asmx?WSDL 

Starting from WSDL is always a must when build a SOAP Web Service for both client and server parts.

Alfresco repository will invoke this endpoint from a Web Script to proxy parameters and results in a REST invocation.

Creating an standard JAXWS client project

Source code available at https://github.com/angelborroy/alfresco-soap-client/tree/master/global-weather-wsdl-client

Once the project is compiled with Maven, client Java classes are packaged into the target JAR. In order to use this client, simple invocations can be done.

GlobalWeather service = new GlobalWeather(new URL("http://www.webservicex.com/globalweather.asmx?WSDL"));
String cities = service.getGlobalWeatherSoap().getCitiesByCountry("Spain");

In order to make the JAR available to Maven for next step, an installation is required.

$ mvn clean install

Creating an Alfresco Repository Module for Web Scripts

Source code available at https://github.com/angelborroy/alfresco-soap-client/tree/master/soap-client-repo

As JAXWS client does not include any external dependency, the library can be included directly in pom.xml file.

Web Scripts are defined in a standard way:

SOAP Endpoint URL has been declared as property in alfresco-global.properties to make easier changes in the configuration.

Inside Java controller implementation, SOAP JAXWS standard client is invoked:

String country = req.getServiceMatch().getTemplateVars().get("country");

GlobalWeather service = new GlobalWeather(new URL(url));
String cities = service.getGlobalWeatherSoap().getCitiesByCountry(country);

Map<String, Object> model = new HashMap<String, Object>();
model.put("cities", cities);
return model;

Testing

Once the project is deployed or even using run.sh script from Maven project, SOAP services can be accessed by using Alfresco REST API.

http://localhost:8080/alfresco/s/globalweather/Spain/getcities

http://localhost:8080/alfresco/s/globalweather/Spain/Zaragoza/getweather

Including new features inside Alfresco Repository is not a complex project, but using the simplest way is always worthy: upgrading and updating processes will be as safe as the are!

 

El ridículo proceso de compra de una placa de inducción en elcorteingles.es

Hace unos días nos decidimos a cambiar nuestra placa vitrocerámica de obra, que cuenta con 15 años de antigüedad y algunas averías derivadas del paso del tiempo. Nos dirigimos a elcorteingles.es pensando que el proceso sería tan sencillo y satisfactorio como la compra de la lavadora que realizamos hace un par de años.

Buscamos una placa de la misma marca (Balay) para no tener problemas y seleccionamos retirada de la placa antigua. Tras recibir una llamada y acordar la fecha de recepción, esperábamos que un técnico realizase la instalación de la nueva placa y retirase la vieja. Algo muy sencillo y que cualquier comprador espera de una empresa como El Corte Inglés.

Sin embargo, el proceso real ha sido algo más complejo. Dejadme que os muestre un pequeño diagrama…

Si no os queréis entretener en este vaivén de mensajes y departamentos, podéis omitir la lectura de los siguientes puntos:

  • El repartidor informa al cliente de que la entrega no incluye montaje y deja la caja en el pasillo sin desembalar
  • El usuario llama a reclamaciones para exponer su disconformidad
  • Reclamaciones llama a un centro local de El Corte Inglés para informar del caso
  • El centro local de El Corte Inglés llama al cliente para indicarle que no puede gestionar el montaje de la placa sin que el cliente se persone presencialmente en el centro para realizar la firma y el pago de la instalación
  • El cliente se desplaza en coche al centro local de El Corte Inglés y realiza la firma y el pago del montaje
  • El montador llama al cliente para pactar la fecha de montaje
  • El montador realiza el montaje en casa del cliente

Algunas consecuencias de este disparate:

  • El cliente ha tenido que desplazarse físicamente a un centro local de El Corte Inglés (un contrasentido para una compra por Internet)
  • Entre la fecha prevista por el usuario y la fecha real, ha pasado más de una semana
  • El importe total de la operación se ha visto incrementado en un 20%

Mensajes inapropiados de los empleados de El Corte Inglés:

  • Sonrisa del repartidor ante la pregunta: “¿no vas a montar la placa?”
  • Sonrisa de la empleada de El Corte Inglés ante la afirmación: “esto no es la primera vez que os pasa”
  • Diferentes interlocutores durante el proceso: “El problema es que elcorteingles.es  y El Corte Inglés no son la misma empresa, así que no podemos realizar lo que nos pide”

Mi conclusión personal es que no volveré a comprar en elcorteingles.es, pero la conclusión de elcorteingles.es  y El Corte Inglés debería ser que tienen un problema grave.

En ocasiones, si no se puede prestar el servicio de una manera adecuada, es mejor no ofrecerlo hasta que se creen las infraestructuras necesarias para ofrecerlo como es esperado.