Posts de Ernesto Jiménez:

Nueva funcionalidad en Tractis: Configuración de certificados permitidos

Si eres de los usuarios que necesita restringir con qué certificados electrónicos se pueden firmar sus contratos, ya puedes hacerlo. Hoy hemos lanzado una nueva funcionalidad para permitirte configurar que certificados quieres permitir para firmar de entre la lista de certificados aceptados en Tractis. De esta forma, podrás configurar si quieres que un contrato solo se pueda firmar con uno o varios certificados concretos, o solo con certificados de una o varias autoridades de certificación, o solo con certificados de uno o varios países, o una combinación de todas las anteriores.

La configuración de certificados permitidos se puede hacer a tres niveles:

  • A nivel de contrato: Especificando qué certificados se podrán usar para firmar un contrato en concreto.
  • A nivel de plantilla: Especificando los certificados permitidos por defecto para firmar los contratos creados a partir de dicha plantilla.
  • A nivel de Cuenta Business: Especificando qué certificados se permiten utilizar para firmar los contratos de esa Cuenta Business.

A continuación podéis ver un pequeño vídeo (5 min.) explicando como funciona esta nueva funcionalidad:

Por Ernesto Jiménez
Guardado en: Anuncios, Tractis | Sin comentarios » | 29 de Abril de 2009

Nueva funcionalidad en Tractis: Subdominios para cuentas business

Desde hoy todos los usuarios de Cuentas Business de Tractis pueden configurar su dirección web personalizada para acceder al servicio.

subdominio

Más personalización

A partir de ahora puedes, de forma gratuita, crear tu Cuenta Business y personalizar tu dirección web y la Apariencia de Tractis.

Una vez tengas tu Cuenta Business lista, cualquier persona que acceda a Tractis a través de tu dirección verá la aplicación con tu logotipo y tus colores.

Además, cuando invites a algún cliente a un contrato la dirección que éste recibirá en su e-mail será la tuya, con lo que toda la experiencia que tenga en Tractis a partir de tu invitación será con tu personalización.

Podéis ver un ejemplo en https://acme-inc.tractis.com

login-acme

Cómo configurar el subdominio

Dos sencillos pasos: Crea tu Cuenta Business y configura tu subdominio. Eso es todo :)

Por Ernesto Jiménez
Guardado en: Anuncios, Tractis | Sin comentarios » | 22 de Abril de 2009

Nueva funcionalidad: Workflows de contratos

Tal y como comentábamos hace unas semanas, estamos trabajando en facilitar la integración con Tractis a aquellas personas sin recursos para integrarse con nuestra API. Con esta intención desarrollamos los botones HTML, para que vuestros clientes puedan crear contratos de forma desatendida, y las plantillas con detalles por defecto para sus contratos que os permiten especificar cuáles serán los detalles de los contratos creados a partir de un botón HTML.

En esta misma línea de trabajo os presentamos hoy los workflows de contratos.

workflows

¿Qué son los workflows de contratos?

Los workflows os permiten especificar qué acciones se llevarán a cabo cuando sucedan determinados eventos claves en un contrato.

En esta implementación inicial de los workflows tenemos los siguientes eventos:

  • Se crea el contrato
  • Algún usuario firma el contrato (algún participante firma)
  • El contrato cambia de estado de “Borrador” a “Firmado” (se han recogido todas las firmas del contrato)

Y podemos configurar los contratos para que se realicen las siguientes acciones:

  • Se envíe un e-mail
  • Se invite a un nuevo participante al contrato
  • El usuario que ha disparado el evento sea redirigido a una página web. Esta última es solo para cuando algún usuario firma el contrato.

Dados estos eventos y acciones podremos configurar nuestros contratos para que se comporten como creamos oportuno, a saber: invitar a ciertos participantes conforme se crea el contrato, enviar e-mails para avisar de que un contrato ya ha sido firmado y se puede descargar o redirigir a los firmantes del contrato a una página web de agradecimiento cuando realizan su firma.

¿Qué aporta esta funcionalidad para las integraciones?

Esta nueva funcionalidad es un engranaje más para integrar Tractis en vuestros flujos de contratación sin necesidad de programación. Con esta nueva pieza podemos crear una plantilla que, además del cuerpo del contrato, especifique los detalles de los contratos creados a partir de la misma, incluyendo el workflow del contrato. Esto, unido a los botones HTML nos permite colocar en nuestra web un botón que dispare un proceso de contratación adaptado a nuestras necesidades.

Entre otras cosas podríamos:

  • Permitir al usuario firmar varios contratos en cadena. Para ello, cada vez que el usuario firme un contrato, le redirigimos a la dirección web del siguiente botón HTML.
  • Invitar automáticamente a todos los miembros de nuestro equipo en el momento en que se crea el contrato.
  • Invitar a la persona que tiene que revisar el contrato únicamente cuando nuestro cliente lo ha firmado. Así evitamos llenar la bandeja de entrada del revisor con invitaciones a contratos que todavía están sin firmar.
  • Enviar avisos por e-mail informando de eventos que se producen el contrato a gente que no participa en el contrato.
  • etc…

Creemos que esta herramienta puede dar mucho juego a la hora de automatizar la parte más tediosa de los procesos de contratación y ahorraros trabajo. Es por esto que planeamos seguir trabajando en ella para incluir nuevos eventos y acciones que os permitan integraciones más potentes. Estad atentos :)

Por Ernesto Jiménez
Guardado en: Anuncios, Tractis | Sin comentarios » | 6 de Marzo de 2009

Nueva funcionalidad: Plantillas con detalles por defecto para los contratos

Una de las últimas novedades en Tractis es la posibilidad de especificar los detalles por defecto de los contratos creados a partir de una plantilla.

Hasta ahora cuando se usaba una plantilla el contrato solo tomaba el cuerpo de la misma. Sin embargo, con esta nueva funcionalidad, las plantillas también recogen información sobre los detalles de los contratos que las usan: título, notas, etiquetas, permisos, etc.

¿Cuál es la ventaja de esta funcionalidad?

Si eres de los que apenas usa las plantillas esta incorporación no te supondrá mucho beneficio. Por contra, si eres de los que usa Tractis basándote una y otra vez en las mismas plantillas y rellenando el formulario de creación del contrato con los mismos detalles de siempre… Entonces este es tu día de suerte :)

Con esta nueva adición no tendrás que repasar el formulario de creación del contrato cada vez que quieras usar una de tus plantillas. Simplemente rellena los detalles de contrato en la plantilla y, cuando vayas a usarla, el formulario ya estará prepopulado con tu configuración deseada.

Más potencia para los botones HTML

Hace unas semanas os presentamos la posibilidad de integrar Tractis en vuestras webs mediante botones HTML. Esta nueva funcionalidad dota de potencia extra a los botones permitiéndote especificar todos los detalles de los contratos que se creen con botones HTML.

Ahora, al integrarte con botones HTML, podrás concretar el título del contrato creado (que no tiene que ser el de la plantilla), con qué etiquetas clasificarlo, las notas para tus clientes, etc. De esta forma tienes mucho más control sobre cómo quieres que se creen tus contratos sin necesidad de hacer una integración con la API.

detalles-de-contrato

Por Ernesto Jiménez
Guardado en: Anuncios, Tractis | 1 comentario » | 4 de Marzo de 2009

Integra Tractis en tu web en menos de 5 minutos

Estos días estamos trabajando en facilitar la integración con Tractis a aquellas personas sin conocimientos de programación. Fruto de este trabajo hoy presentamos una nueva herramienta de integración: los botones HTML para creación de contratos.

¿Cómo funcionan los botones HTML?

La idea de esta herramienta es que puedas poner un botón en tu página web que permita a tus clientes crear un contrato basado en una de tus plantillas y firmarlo.

Para usar los botones HTML solo tienes que seguir tres sencillos pasos:

  1. Activar los botones para la plantilla con la que quieres que se creen los contratos: Para ello no tienes más que ir a tu plantilla y en los enlaces de la misma verás que aparece “Botones” junto a “Detalles”. En el apartado de “Botones” podrás activar los botones para esa plantilla.
  2. Decidir el botón que quieres usar en tu página web: Una vez activados verás los distintos tipos de botones que puedes usar en tu página web. Piensa cuál es el que más te gusta para tu página :)
  3. Copiar el código HTML del botón escogido y pegarlo en tu página web.

Una vez en tu web, cuando uno de tus clientes haga click en el botón se creará en tu cuenta Tractis un contrato basado en la plantilla escogida y con tu cliente como participante con permisos de firma. Al crearse el contrato en tu cuenta tú tienes todo el control sobre el mismo y el cliente, salvo que le cambies los permisos, lo único que podrá hacer es firmarlo.

¿Qué pasa si el contrato requiere datos del cliente?

En la mayoría de los casos los contratos con tus clientes requieren información específica de cada cliente como sus datos personales o algún detalle sobre qué quiere contratar exactamente.

Normalmente los contratos con tus clientes requieren información específica de cada cliente como sus datos personales o algún dato sobre lo que quiere contratar exactamente. Para facilitar la creación de este tipo de contratos puedes introducir variables en la plantilla. Cuando la plantilla tenga variables el cliente tendrá la oportunidad de rellenarlas en un formulario previo a la creación del contrato.

¿Cuáles son los beneficios de esta integración?

Los botones HTML te permiten delegar en tus clientes (actuales o potenciales) el crear el contrato, cumplimentarlo y firmarlo. Es una herramienta ideal para agilizar procesos de contratación no negociables ya que nos evita pedir los datos al cliente y crear el contrato personalmente: menos tiempo dedicado a trámites mecánicos y más para atender las cosas importantes.

Además, no requiere de ningún tipo de programación y podemos ponerlo en marcha en menos de 5 minutos. Integrar Tractis en tus procesos de contratación ya no es más difícil que poner un vídeo en tu blog o recibir donaciones de paypal.

Un ejemplo

Puedes utilizar el siguiente botón para ver un ejemplo de cómo podría usarse esta funcionalidad para ofrecer a tus clientes ejercer el derecho de oposición de sus datos personales usando Tractis:

Aquí podéis ver un par de capturas del proceso:

Formulario de captación de datos previo a la creación del contrato
Formulario de captación de datos previo a la creación del contrato (variables)

Contrato personalizado
Contrato personalizado

Para más información sobre cómo integrar Tractis en tus procesos puedes consultar nuestra ayuda.

Por Ernesto Jiménez
Guardado en: Anuncios, Tractis | 9 comentarios » | 27 de Enero de 2009

Nueva documentación de la API de Tractis

Tal y como comentamos hace algún tiempo, una de las peticiones más recurrentes por parte de los usuarios era la mejora de la Ayuda de Tractis. En este sentido, estrenamos una nueva sección de ayuda que estamos mejorando continuamente. Estos días, aprovechando que estamos trabajando activamente en la mejora de los servicios integración de Tractis, hemos actualizado la documentación de la API.

Podéis ver la Lista de acciones REST de la API, donde podréis encontrar todas las acciones disponibles y ejemplos de invocación para facilitaros la integración. Además, te recordamos que tienes online un ejemplo de integración por si quieres ver algo simple funcionando.

Como siempre, estamos a tu disposición para cualquier tipo de duda o sugerencia. Si estás interesado en desarrollar alguna librería para la API o alguna aplicación que la use ponte en contacto con nosotros y te ayudaremos en todo lo que podamos.

Por Ernesto Jiménez
Guardado en: Anuncios, Tractis | Sin comentarios » | 25 de Noviembre de 2008

Añade tu certificado electrónico a la lista de certificados aceptados en Tractis

Como ya hemos comentado en otras ocasiones, Tractis no permite que los usuarios firmen con cualquier certificado. Esto es así porque sometemos los certificados a un proceso de validación completo que nos permite descartar cualquier firma que no cuente con unas fuertes garantías. Estas garantías son la base de nuestro servicio: Firmas online con plena validez en el mundo real.

¿Qué implican estas garantías?

Someter las firmas a un proceso de validación completo implica que hemos de integrar Tractis con cada Autoridad de Certificación. Es por esto que en Tractis no puedes usar cualquier certificado para firmar un contrato: hemos de integrarnos con todas las Autoridades de Certificación, una a una, con tal de poder validar las firmas realizadas con sus certificados en tiempo real.

Para integrarnos con una nueva Autoridad de Certificación necesitamos certificados de ejemplo de cada una de ellas para poder probar la integración.

El antes y el después

Hasta hoy, para conseguir los certificados con los que probar la integración necesitábamos ponernos en contacto con la Autoridad de Certificación para que nos proporcionase certificados de prueba.

Además, podíamos recoger los certificados que los usuarios queríais que diéramos soporte, pero la opción estaba escondida en el proceso de firma, cuando avisábamos de que un certificado no estaba soportado. Esto suponía que para que un usuario puediese contribuir su certificado hacía falta empezar un proceso de firma, lo que requería una cuenta en Tractis con crédito.

En ambos casos, el proceso nos parece que estaba demasiado alejado.

¿Cómo puedo contribuir mi certificado?

Tanto si eres usuario de Tractis como si no, desde hoy puedes enviarnos un certificado al que te gustaría que diéramos soporte. Sin necesidad de cargar crédito ni crear un contrato. Es más, hemos querido facilitar tanto las cosas que no es necesario ni que te registres.

Para aportar tu certificado no tienes más que completar un sencillo de proceso de solicitud, Dicho proceso creará una firma de prueba de la que Tractis extraerá el certificado.

¿Para qué utilizareis la información obtenida?

Con los certificados que nos mandéis podremos extraer información sobre qué Autoridad de Certificación queréis que soportemos y, una vez integrados con la autoridad podremos emplear el certificado para comprobar que todo funciona a la perfección.

Además, hay que aclarar que la información que nos envías no sirve para realizar firmas en tu nombre. Es solo una firma de prueba y lo único que podemos hacer con ella es extraer la información necesaria para soportar ese certificado en Tractis y realizar las pruebas de integración.

¿Quieres poder utilizar tu certificado electrónico en Tractis?. Solicita su incorporación a la lista de certificados soportados en Tractis.

Por Ernesto Jiménez
Guardado en: Anuncios, Tractis | Sin comentarios » | 20 de Noviembre de 2008

Nueva funcionalidad en Tractis: Contratos y plantillas destacados

Una de las novedades introducidas en Tractis durante la última semana es la posibilidad de marcar contratos y plantillas como destacados. Esta funcionalidad te ofrece una forma fácil de obtener un acceso rápido para aquellos documentos que consideres importantes: contratos en los que estás trabajando, plantillas públicas a las que no quieres perderles la pista, contratos firmados que quieres tener bien localizados…

¿Cómo utilizo los destacados?

En los listados de contratos y plantillas aparecen iconos para representar el tipo de documento en la columna de la izquierda. Con solo hacer click en el icono este cambiará para mostrar una estrella y el documento quedará marcado como destacado.

Plantillas destacadas

Cuando ya tengas tus destacados podrás acceder rápidamente a ellos a través de los botones que aparecen en las páginas en de contratos y plantillas.

Botones destacados

Mantente al día sobre tus destacados

Para completar la funcionalidad, te permitimos configurar tu página de alertas de forma que puedas estar al día sobre lo que sucede en tus contratos y plantillas destacados.

Como siempre, aceptamos comentarios, sugerencias y críticas :)

Por Ernesto Jiménez
Guardado en: Anuncios, Tractis | Sin comentarios » | 14 de Mayo de 2008

Nuevo sistema de Alertas en Tractis: Ahora también por SMS

El viernes pasado sacamos a producción el nuevo sistema de alertas de Tractis. Este sistema te permite configurar qué eventos quieres se te notifiquen: nuevos comentarios en tus plantillas, nuevas firmas en un contrato importante, avisos de crédito bajo, etc.

Además, como principal novedad de el sistema, también podrás recibir las notificaciones por SMS, además de por e-mail y RSS.

Configuración de alertas

Configurar tus alertas es muy sencillo. Puedes especificar alertas a nivel de contrato, pudiendo especificar para cada contrato qué alertas recibir y cómo. Para ello no tienes más que ir a la sección de Alertas de ese contrato y hacer tu selección.

Alertas de contrato

Aparte de configurar tus alertas contrato a contrato también puedes suscribirte a ellas a nivel general: nuevos comentarios en mis plantillas, nuevas firmas en mis contratos, etc. Para suscribirte a estas alertas no tienes más que acceder a tu página de Alertas del apartado de configuración.

Alertas generales

Al final de esta página también podrás encontrar tendrás una lista con todas las alertas a las que te has suscrito en contratos específicos, pudiendo repasar todas tus suscripciones en un único sitio, sin necesidad de andar paseando por todos tus contratos.

Alertas de contratos

Ventajas de las alertas por SMS

Los SMS son una buena vía para recibir alertas de forma rápida sin que necesites estar pendiente de otra cosa que no sea tener el móvil a mano. Se acabó el quedarse atado al ordenador pendiente de si la otra parte firma un contrato, o el comprobar el e-mail cada cinco minutos. Deja que Tractis te avise cuando las cosas estén listas y aprovecha mejor tu tiempo.

Esto está muy bien pero ¿cuánto cuestan los SMSs?

Hemos decidido lanzar el servicio sin ningún coste. Todo lo que necesitas es tener un teléfono móvil y completar el sencillo proceso de configuración

Configura SMS

Una vez completado el proceso podrás empezar a recibir alertas por SMS.

Ahora mismo el servicio solo está disponible para teléfonos móviles en España (Telefónica, Vodafone y Orange), pero esperamos poder ampliarlo en el futuro a otros países.

Como siempre, estamos encantados de saber qué opináis sobre esta nueva funcionalidad.

Por Ernesto Jiménez
Guardado en: Anuncios, Tractis | 5 comentarios » | 7 de Mayo de 2008

Gestión de eventos en Rails: Observers

Todos los desarrolladores Rails utilizamos los callbacks de ActiveRecord. El uso de estos callbacks da mucho juego a nuestros modelos: validaciones, tratamiento de datos, operaciones sobre modelos relacionados, envío de e-mails automáticos…

Al principio, cuando uno empieza a desarrollar en Rails, todas esas operaciones que comentaba solemos realizarlas en el controllador. Sin embargo, a medida que vamos aligerando nuestros controladores y engordando nuestros modelos la cantidad de callbacks que empleamos en nuestros modelos va aumentando. Esto es algo bueno, pero en ocasiones acabamos con un montón de callbacks en el modelo que no tienen que ver con el modelo en si.

Para extraer de los modelos todo ese código disparado por callbacks que no tiene que ver directamente con el modelo Rails proporciona los observers.

Los observers por dentro

En este post vamos a ver cómo funcionan los observers de rails por dentro. Para ello es necesario saber cómo se emplean así que, si no los has usado nunca, deberías echarle un vistazo a la documentación :)

El módulo Observable en Ruby

Ruby implementa su librería estándar algunos módulos sobre patrones de diseño habituales. Uno de estos módulos es Observable.

El módulo Observable implementa el patrón Observer también llamado Publicador-Sucriptor. En este patrón un objeto (el publicador o la fuente) informa a un conjunto de objetos interesados (los suscriptores) cuando su estado cambia. Para ello nos proporciona una serie de métodos para registrar suscriptores y para notificarles los cambios de estado.

Veamos un ejemplo de uso del módulo Observable:

require 'observer'

class MonitorSistema
  include Observable

  def run
    ultimo_espacio_libre = nil
    loop do
      espacio_libre = Disco.espacio_libre
      puts "Espacio libre en disco: #{espacio_libre}MB"
      if espacio_libre != ultimo_espacio_libre
        changed
        notify_observers(espacio_libre)
        ultimo_espacio_libre = espacio_libre
      end
      sleep(60)
    end
  end
end

class MantenimientoDisco
  def initialize(limite)
    @limite = limite
  end

  def update(espacio_libre)
    if espacio_libre < @limite
      puts "-- Limpiando archivos temporales. #{espacio_libre}MB de espacio libre"
    end
  end
end

class AlertaPocoEspacio
  def initialize(limite, email)
    @limite = limite
    @email = email
  end

  def update(espacio_libre)
    if espacio_libre < @limite
      puts "-- Notificando a #{@email}. #{espacio_libre}MB de espacio libre"
    end
  end
end

monitor = MonitorSistema.new
monitor.add_observer(MantenimientoDisco.new(700))
monitor.add_observer(AlertaPocoEspacio.new(700, 'pedro@ejemplo.com'))
monitor.add_observer(AlertaPocoEspacio.new(600, 'antonio@ejemplo.com'))
monitor.run

El ejemplo me parece que es bastante ilustrativo, pero mejor aclararlo algunos detalles :)

El módulo Observable define una serie de métodos que podéis consultar en la documentación del módulo. En nuestro ejemplo usamos tres de ellos:

  • changed(state=true): cambia el estado del objeto.
  • notify_observers(*args): si el estado es true, invoca al método update de cada suscriptor con los mismos argumentos.
  • add_observer(observer): registra un nuevo suscriptor.

Veamos una ejecución de ejemplo del script anterior:

Espacio libre en disco: 1011MB
Espacio libre en disco: 821MB
Espacio libre en disco: 880MB
Espacio libre en disco: 625MB
-- Limpiando archivos temporales. 625MB de espacio libre
-- Notificando a pedro@ejemplo.com. 625MB de espacio libre
Espacio libre en disco: 730MB
Espacio libre en disco: 570MB
-- Limpiando archivos temporales. 570MB de espacio libre
-- Notificando a pedro@ejemplo.com. 570MB de espacio libre
-- Notificando a antonio@ejemplo.com. 570MB de espacio libre
Espacio libre en disco: 716MB
Espacio libre en disco: 841MB
Espacio libre en disco: 1016MB
ActiveRecord: Publicador y suscriptor

ActiveRecord tiene dos clases involucradas en la gestión de eventos:

  • ActiveRecord::Base: incluye el módulo Observable de Ruby y notifica a los suscriptores todos los eventos a los que se pueden asociar callbacks.
  • ActiveRecord::Observer: es la clase base para todos los observers y define el método update.

Cuando un modelo (como sabemos, subclase de ActiveRecord::Base :) ) cambia de estado invoca a, además de los callbacks dentro de la propia clase, el método notify_observers con los siguientes argumentos:

  • El nombre del evento: before_validation, after_save, after_destroy…
  • El objeto ActiveRecord.

Tal y como hemos visto, al invocar notify_observers en el modelo se invoca update en todos los observers suscritos a dicho modelo. En los observers de rails el método update invocará a su vez, en caso de que exista, al método de la clase que tenga el nombre del evento notificado y le pasará como argumento el objeto que ha cambiado de estado.

    # Send observed_method(object) if the method exists.
    def update(observed_method, object) #:nodoc:
      send(observed_method, object) if respond_to?(observed_method)
    end
Inicialización de observers en Rails

Ya hemos visto cómo notifica ActiveRecord::Base los eventos a los observers. No obstante, no hemos visto cómo se suscriben los observers (ya sabéis, la llamada al método add_observer del módulo Observable).

En el caso de los observers de rails la llamada a add_observer se realiza en el constructor de ActiveRecord::Observer:

    # Start observing the declared classes and their subclasses.
    def initialize
      Set.new(observed_classes + observed_subclasses).each { |klass| add_observer! klass }
    end

Sin embargo, tal y como dice la documentación, para utilizar los observers no instanciamos objetos, sino que los configuramos en el archivo environment.rb (config.activerecord.observers_). Esto es así para delegar en Rails la responsabilidad sobre cuándo inicializar los observers.

No vamos a entrar en cuándo los inicializa, sin embargo sí que diremos cómo lo hace.

La clase ActiveRecord::Observer sigue un patrón Singleton. Este patrón garantiza que como máximo habrá una instancia de una clase. Para ello se cambia la visibilidad del constructor para que sea privado y se define un método que cree devuelva el único objeto que instancia la clase.

Este patrón también viene en la librería estándar de Ruby con el módulo Singleton. Este módulo cambia la visibilidad del constructor y define el método instance.

Por lo tanto, Rails emplea el método instance para suscribir los observers a los modelos correspondientes.

Sabiendo esto…

Sabiendo estos detalles sobre la implementación del patrón Publicador-Suscriptor en ActiveRecord y su inicialización de Rails tenemos los conocimientos técnicos necesarios para desarrollar nuestros propios observers.

Nosotros tuvimos la necesidad de desarrollar nuestros propios observers al querer tener una única clase que se suscribiese varios modelos, pero atendiendo a eventos distintos según el modelo.

En un post próximo, aprovecharemos lo que hemos explicado aquí para ver los detalles de nuestros observers.

Happy Hacking! :)

Por Ernesto Jiménez
Guardado en: Programación, Rails, Ruby | 2 comentarios » | 3 de Marzo de 2008