9yahds
9yahds es un proveedor de software de automatización de procesos como servicio que permite construir, utilizar y realizar un seguimiento de los procesos empresariales en la nube.
Todos los clientesCódigo base heredado
9yahds acudió a nosotros con un producto Python ya desarrollado para su uso en una sola instancia y un importante requisito de negocio para convertirlo en un SaaS multi-tenant a gran escala. Trabajamos por proyectos con control total del presupuesto por parte del cliente.
Más informaciónAutomatización empresarial
Recuperación de desastres, seguimiento del tiempo y generación de facturas con flujos de trabajo muy específicos para cada empresa. Podemos entender su negocio y automatizarlo por usted.
Más informaciónDesafío
Redwerk, con su sólida experiencia en la prestación de servicios de desarrollo en Python, se enfrentó al reto de modificar los módulos existentes del sistema y añadir nuevas funcionalidades:
Convertir una aplicación de una instancia en SaaS
La aplicación inicial es un producto de una sola instancia en el que todos los usuarios trabajan con un único conjunto de datos. Tuvimos que convertirla en SaaS introduciendo la multitenencia: el contexto de los datos cambia en función del usuario conectado. Tuvimos que modificar grupos de usuarios llamados empresas. Cada empresa debía tener acceso a su propio conjunto de datos, incluidos procesos, incidencias, episodios, etc., pero, sobre todo, usuarios. La sección de usuarios debía contener únicamente usuarios de la empresa real a la que pertenece el usuario conectado en ese momento. La gestión de las empresas debía realizarse a través del nuevo elemento de navegación denominado “Empresas”, donde debía ser posible crear y eliminar empresas, así como gestionar los usuarios de las mismas.
Interfaz de administración
También tuvimos que crear una interfaz para el superusuario con funcionalidad CRUD para nuevos usuarios y otros objetos. Sólo el usuario especial del sistema y los usuarios con determinados derechos, los llamados superusuarios, podían acceder a ella. La interfaz de administración debía constar de dos elementos: Empresas y Superusuarios. La sección Empresas debía incluir la funcionalidad CRUD relativa a las empresas y la sección Superusuarios debía permitir gestionar los Superusuarios de la aplicación.
Modelado de la organización
Tuvimos que reorganizar fundamentalmente un componente funcional existente denominado Modelado de la organización. La organización es una agrupación lógica de equipos y funciones respaldados por recursos. El modelado de organizaciones permite gestionar organizaciones.
Debido a que se añadieron nuevas entidades lógicas a la aplicación, tuvimos que crear una representación visual para ellas. Todo ello se reflejó en el módulo Modelado de organizaciones. Los diálogos habituales utilizados para crear elementos debían sustituirse por la tecnología de arrastrar y soltar. Es mucho más cómodo para crear elementos complejos del sistema con una estructura jerárquica (por ejemplo, usuarios que pertenecen a la empresa, etc.). Como resultado, el módulo debería contener una representación jerárquica de los elementos (árbol) con la posibilidad de arrastrar&soltar y el formulario que daría la posibilidad de visualizar y editar las propiedades del elemento seleccionado en el árbol.
Espacio de trabajo
Un proceso es una colección de tareas. La página “Modelador de procesos” permite gestionar los procesos. El espacio de trabajo tenía que cambiar la forma de presentar la información en el producto. La incorporación del “espacio de trabajo” tuvo que realizarse en la página “Modelador de procesos”. Tuvimos que rediseñar el flujo existente de creación, ejecución y gestión de procesos. Tuvimos que añadir la lista de los procesos existentes a la página del Modelador de procesos separados por categorías:
- Procesos de equipo: Procesos que pertenecen al equipo del que es miembro el usuario actual.
- Procesos de empresa: Procesos que pertenecen a los equipos de la empresa, de la que es miembro el usuario conectado.
- Procesos Públicos: una lista de procesos que se han hecho públicos, sin importar por quién y de qué empresa.
Los procesos de equipo pueden editarse directamente. Además, este proceso se puede poner “en vivo”, y entonces estará disponible para todos los miembros de la empresa. Los procesos de la empresa y públicos sólo se pueden copiar en los procesos del equipo, y sólo entonces se pueden editar.
La edición de procesos tuvo que modificarse: hubo que añadir la función de arrastrar y soltar. Esto mejora significativamente la facilidad de uso de la edición de procesos. El proceso se representa como un árbol de tareas y es muy cómodo arrastrar y soltar la tarea en el lugar correcto del árbol. También es posible crear una tarea arrastrando el icono de la nueva tarea al lugar deseado del árbol. Para cada tarea seleccionada hay una vista de tarea, donde se pueden editar todas las propiedades de la tarea. Además de las vistas de árbol y de tarea, la jerarquía de las tareas y sus propiedades pueden editarse en la vista de tabla.
Secuenciación
A veces, un grupo de tareas debe ejecutarse al mismo tiempo y sin ningún orden en particular; lo más importante es que se ejecuten antes de delegar otras tareas. La secuencia en la que se ejecutan no es importante, pero sí lo es que todas deban completarse antes de la siguiente tarea. La aplicación inicial permitía a los usuarios simplemente dar a esas tareas el mismo ID de secuencia.
Se nos pidió que permitiéramos a los usuarios seleccionar varias tareas, hacer clic con el botón derecho sobre ellas y elegir “simultánea” para que el software cambiara los ID de secuencia de todas esas tareas al mismo número.
El intervalo de ID de secuencia en la aplicación inicial era +1. Se nos pidió que lo cambiáramos a +10 para poder añadir nuevas tareas a la secuencia sin tener que volver a secuenciar las siguientes.
Procesos Múltiples
Una vez que las Entidades, Procesos y Tareas necesarias han sido creadas, los usuarios pueden comenzar a usar 9yahds para probar y ejecutar los procesos que han sido creados en el sistema. En 9yahds la Ejecución de Procesos típicamente comienza con el Reporte de Problemas por Usuarios o aplicaciones integradas (por ejemplo, HelpDesk, sistemas de tickets, etc.). Una vez que se ingresa un problema en 9yahds, los equipos evalúan cada problema para determinar su gravedad. Si se justifica, los equipos crean episodios (es decir, eventos de interrupción) con incidencias asociadas. Los Episodios se asignan a Equipos para su Resolución, y el Equipo asignado ejecuta los Procesos necesarios para abordar y resolver con éxito el Episodio.
Cuando se invita a un equipo a unirse a un episodio, actualmente sólo pueden elegir un proceso para comenzar. El equipo de outsourcing de desarrollo de software de Redwerk tuvo que cambiar la lógica para que los jefes de equipo pudieran seleccionar múltiples procesos para iniciar.
Vinculación de documentos
El sistema permite a las empresas almacenar documentos en la base de conocimientos. Cuando los usuarios creaban tareas, tenían que introducir manualmente el hipervínculo al documento. Tuvimos que añadir el botón “vincular documento” en la creación de tareas que debería permitir a los usuarios elegir un documento o documentos para vincular y debería crear el hipervínculo en la tarea para ellos.
Actualización de la consola de trabajo
La Consola de Trabajo es donde están todas las notificaciones de las tareas que aún deben completarse. Nos enfrentamos al reto de implementar el comportamiento para que las tareas aparezcan en la consola de trabajo de forma automática sin tener que pulsar el botón de actualización.
Registro
También debíamos desarrollar la página de inicio de sesión e implementar la lógica de registro. Los usuarios debían navegar hasta ella a través de la página de inicio de sesión actual pulsando Registrarse.
La aplicación actualizada debía desplegarse en el servidor activo.
Solución
El equipo de desarrollo de Redwerk asumió este reto y modificó los módulos existentes del sistema y añadió nuevas funcionalidades.
Convertir una aplicación de una instancia en SaaS
Una de las formas de implementar multi-tenancy era crear una instancia de DB separada para cada usuario. En este caso las instancias deberían haber sido creadas y soportadas dinámicamente. Pero hemos decidido dejar una instancia DB, que han requerido cambios significativos de código. El uso de varias instancias habría hecho más complicado añadir nuevas funcionalidades debido a la complicada estructura de la base de datos.
La consistencia de los datos para el usuario se proporciona a nivel de esquema de datos y a nivel de código.
Hemos utilizado métodos y eventos estándar de extjs para implementar Drag&Drop, pero para los eventos hemos creado manejadores propios.
Hemos añadido una nueva entidad “Compañía” a la aplicación, conectándola con las entidades existentes. También se han añadido nuevos roles (admin, company admin y user) que han extendido la estructura de roles existente en la aplicación.
Interfaz de administración
La interfaz de administración se ha implementado de forma muy similar a la interfaz de usuario general. Los menús y las pestañas están situados en los mismos lugares. Por lo tanto, el usuario, familiarizado con la interfaz general, puede manejar fácilmente la parte de administración. La interfaz de administración tuvo que ser creada debido al hecho de que una aplicación ha sido modificada para ser SaaS, y hay una necesidad de administrar todas las instancias.
Modelado de la organización
Hemos ampliado la unidad de organización con las entidades y relaciones que faltaban y hemos añadido representación gráfica al árbol. Se ha implementado la función de arrastrar y soltar. También se corrigieron los errores existentes en el Modelado de la organización.
Espacio de trabajo
También había que implementar la función de arrastrar y soltar en la interfaz de modelado de procesos para crear y reorganizar tareas.
Hemos resuelto con éxito el problema de guardar los datos mezclados de la vista de tabla. Se añadió al proyecto el autoguardado, que se requería indirectamente. Eso también fue útil en el Modelado de la Organización.
Secuenciación
Añadir un botón “Simultáneo” no era la mejor solución. Además, su presencia podría confundir a los usuarios, ya que no se puede ordenar la ejecución simultánea de los distintos niveles de tareas. Por lo tanto, hemos propuesto otra solución: permitir seleccionar algunas de las tareas y asignarles el id de secuencia deseado. Así, ahora es posible crear dos grupos de tareas simultáneas incluso en el mismo nivel del árbol. También se puede seguir editando el identificador de secuencia en la vista de tabla del proceso.
Procesos múltiples
Hemos añadido la posibilidad de seleccionar múltiples procesos usando shift / ctrl. Después de seleccionar múltiples procesos se pueden ejecutar tareas de todos ellos.
Vinculación de documentos
Hemos añadido con éxito la pestaña de documentos a la interfaz. Se ha introducido armoniosamente en el diseño del modelado de Procesos. Los enlaces a los documentos ahora se pueden ver al ejecutar una tarea y llegan en las notificaciones de correo.
Actualización de la consola de trabajo
Hemos eliminado la necesidad de actualizaciones manuales, ahora los elementos asignados y las tareas activas siempre muestran la información más reciente.
Registro
Hemos añadido la lógica de registro y la página de registro en sí. La página está implementada en el estilo corporativo de 9yahds.
Resultado
Se satisfizo la necesidad del cliente de una aplicación actualizada con la funcionalidad ampliada y la aplicación actualizada se desplegó en el servidor activo. Nuestros ingenieros también aportaron ideas al diseño y la arquitectura del producto. Algunos de los errores presentes en la aplicación inicial se solucionaron durante el desarrollo.
¿Necesita un equipo con el que sea agradable trabajar?
ContactoTecnologías
¿Impresionado?
ContrátenosOtros casos prácticos
US Local Media SaaS
Refactorización de SaaS heredado para canales de televisión locales vistos por la mayoría de los hogares de EE.UU.
Advanced Consultancy ERP
Rutina automatizada de gestión de servicios con un ERP personalizado con arquitectura multicapa