
Continuamos hablando sobre cómo mejoramos la vida no solo de nuestros clientes y socios, sino también de los empleados de la empresa. Se tratará de la implementación del sistema de armonización. No indiqué conscientemente la coordinación de "qué", ya que en el futuro quedará claro que, puramente teóricamente, la coordinación de "todo".
Reflexiones sobre el sistema de aprobación.
Inicialmente, en nuestra empresa, así como en muchas otras, en las que tenía que trabajar, y en las que era un "invitado" o que acababa de escuchar de mis amigos, se negociaron acuerdos (y al momento de escribir el artículo todavía está en progreso), por medio de correspondencia regular en correo. Naturalmente, esto se adapta a empresas con un pequeño número de personal y contratistas. No hay una necesidad particular de crear e implementar sistemas debido a la firma de uno o dos contratos por mes (o incluso un año) con solo el CEO tomando la decisión de firmar. Una situación similar se observó con el pago de facturas. Cada empleado que interactúa con las contrapartes y necesita pagar algo, solicita una factura y la envía al departamento de contabilidad por correo con una solicitud de "pago". Al mismo tiempo, la contabilidad no siempre paga facturas sin la aprobación previa del pago con el supervisor inmediato del empleado y / o la gerencia de la compañía. Bajo ciertas condiciones, la cadena de aprobaciones puede ser "acortada" o viceversa "alargada".
Hasta ahora no hay muchos empleados y todos conocen a todos sus colegas quién es quién y quién es el líder; no hay problemas especiales. En modo manual y bajo ciertas condiciones, las solicitudes de pago se negocian en modo de correspondencia y se pagan (o rechazan). Pero nuestra empresa está creciendo y desde cierto momento cruzamos esa línea invisible, después de lo cual es necesario pensar en la automatización de estos procesos y la necesidad de introducir algo nuevo.
Nuestra lista de deseos
Teníamos nuestros propios requisitos mínimos del sistema:
- Interfaz fácil de usar y altamente deseable orientada a la web (sin la necesidad de instalar clientes)
- Flexibilidad de configuración
- Aunque no somos clínicos, somos paranoicos. Por lo tanto, queremos mantener los servicios en los que puede aparecer información confidencial en nuestro perímetro cerrado
Inicialmente, analizamos los productos de la familia del "sistema de gestión de documentos electrónicos" que están en el mercado. Analizamos los sistemas más conocidos: 1C: Gestión de documentos, "NEGOCIOS", "TESIS". También analizamos los sistemas que se crearon a pedido para otras compañías, así como también nuevos productos como Allware.
No puedo decir que los sistemas son malos. De hecho, casi todos los sistemas nos permiten cumplir con nuestra lista de deseos principal e incluso más de lo que necesitamos. Pero, como siempre, el diablo está en los detalles.
En primer lugar, la interfaz. No estamos acostumbrados a utilizar la interfaz de estilo "1C". Necesitamos una interfaz simple e intuitiva en la que realizaremos un mínimo de acciones para obtener el máximo resultado (¿y quién no quiere?).
En segundo lugar, el precio (pagado al mismo tiempo y luego el costo de propiedad del producto en su conjunto). No necesitamos todo en los sistemas que se ofrecen de fábrica. Pero al mismo tiempo hay que pagar de inmediato por todo. Y dado que muchos ahora están cambiando a un sistema de suscripción, debe pagar constantemente y la cantidad, como de costumbre, depende de muchas condiciones (número de usuarios / conexiones, la capacidad de trabajar en la nube, opciones adicionales, módulos, etc.). Y "saltar" del sistema, si de repente el precio ha dejado de adaptarse, es problemático.
En tercer lugar, no hay forma de "administrar" su "Lista de deseos".
Implementación
No escribiré durante mucho tiempo sobre cómo y por qué al final decidimos “inventar una bicicleta” y escribir nuestro propio sistema de gestión de documentos electrónicos. La decisión está tomada, debe hacerlo. Ya hemos pasado por la enfermedad de tratar de implementar el producto sin requisitos, por lo que el proceso de escribir TK y su armonización se inició por primera vez. Afortunadamente, ante nuestros ojos tuvimos ejemplos de implementaciones, por lo que la formación fue bastante sencilla.
Lo único de lo que tuvimos que aplastar las lanzas fue que en el proceso de desarrollo de la arquitectura no deberíamos sucumbir a la tentación de satisfacer los requisitos "tal cual", en detrimento de la flexibilidad y una mayor facilidad de uso. La tentación fue grande, especialmente para el cliente principal, ya que el período de implementación e implementación se reduciría en 2 veces. Pero logramos convencer tanto a la gerencia como a nosotros mismos de que "es mejor perder un día y luego volar en 5 minutos". Y creo que tomamos la decisión correcta.
Es mejor perder un día, luego volar en 5 minutos.
La pila "estándar" es .Net Core 2 y EntityFramework, Angular 4, MS SQL, ya que tenemos una gran experiencia en la aplicación de herramientas y tecnologías. Aunque el DBMS realmente no nos importa por razones obvias. Si es necesario, pasemos a lo que queramos.
El resultado es un producto que cumple con los requisitos importantes para nosotros:
- Un flujo de trabajo: diferentes partes del acuerdo (asociado con el siguiente párrafo)
- Condiciones para omitir la etapa de aprobación bajo condiciones especificadas (cualquier campo en la aplicación se puede agregar a la condición con una verificación determinada y, en función de la validez de la condición, se determina la necesidad de pasar al siguiente paso de aprobación o su "omisión")
- Nuestra interfaz "propietaria"
Funciones convenientes y útiles como:
- Establecer valores predeterminados para directorios (tanto de usuario como de sistema). Una guía de usuario es una entidad que permite a los usuarios establecer elementos por su cuenta. Los artículos creados estarán disponibles solo para él. Al mismo tiempo, en dicho directorio, el administrador del sistema puede ingresar elementos comunes que estarán disponibles para todos los usuarios del sistema.
- Determinar los elementos de directorios utilizados con más frecuencia para cada usuario y formar listas en la interfaz en función de estas estadísticas (clasificación)
- Totalmente personalizable desde los diagramas del panel de administración (estructura y propiedades de los campos para rellenar) y vistas (disposición de elementos en el formulario) de cada tipo de solicitud de aprobación
- ACL flexible
- Cada usuario puede personalizar la búsqueda de aplicaciones por varios conjuntos de parámetros. Los parámetros pueden ser cualquier propiedad de las plantillas de aplicación con la capacidad de seleccionar la condición que debe imponerse en este campo durante el filtrado. En este caso, puede crear tantos conjuntos para filtrar. Conveniente para la búsqueda rápida en diferentes secciones.
- Validación de los valores ingresados en base a una plantilla dada para un campo de aplicación específico
Por supuesto, también hubo algunas "curiosidades". En primer lugar, estamos hablando de configurar el flujo de trabajo. Inicialmente decidimos que necesitábamos la capacidad de configurar el diagrama de árbol del proceso comercial. Que desde un punto (etapa) de coordinación era posible ir a diferentes ramas, dependiendo de la elección del usuario (Coordinador). Lógico y flexible. Pero después de que nos dimos cuenta de esta oportunidad y lanzamos el sistema en producción, nos pareció que, de hecho, no necesitábamos darle al usuario el derecho a elegir (oportunidad de pensar). Para él, todo debería suceder al nivel de "De acuerdo", "Rechazar". De lo contrario, no podremos alejarnos del principio de comprender las sutilezas de interacción de los empleados en la empresa. Y para satisfacer esta condición, el flujo de trabajo debe ser
lineal .
Por supuesto, también hubo algunas "curiosidades".
Como resultado, encontramos un compromiso: la arquitectura de la solución y la implementación del flujo de trabajo se dejaron en forma de árbol, pero el uso desde el punto de vista de la configuración se fijó en el nivel de "acuerdo". Y lo hicieron bien. Desde ahora, al analizar las tareas asociadas con el lanzamiento de nuevos tipos de aprobaciones, quedó claro que, en algunas etapas, para tipos específicos de aplicaciones, debemos brindar una oportunidad para que el coordinador elija diversas acciones.
Ahora un poco sobre nuestro "know-how" (al menos creemos en él). Para lograr la linealidad y al mismo tiempo poder usar un flujo de trabajo para un esquema de aprobación (por el esquema me refiero a entidades que requieren participación y el orden de diferentes roles: un contrato, una cuenta de pago, etc.), hemos pensado e implementado un mecanismo de condiciones omitiendo las siguientes etapas de aprobación. Al crear las condiciones, podemos usar cualquier entidad de la tarjeta de reconciliación y compararla con "cualquier cosa".
Por ejemplo, tenemos las siguientes entidades: Iniciador, Cantidad, Moneda, Contraparte. Y necesitamos eso con una cantidad inferior a 100,000 rublos. la coordinación no pasó por el empleado A; en los pagos en moneda extranjera, estaba necesariamente conectada a la coordinación B, y si el iniciador es el empleado C, es necesaria una coordinación adicional del empleado D. Además, por empleados nos referimos tanto a individuos como a cierto grupo. Para implementar estos puntos, agregamos todos los puntos coincidentes "en línea". Es decir: Iniciador-> A-> B-> D-> ...
A continuación, se forman las condiciones para una transición de "pasar" a cada uno de los puntos de coordinación. Por ejemplo, en el Iniciador de transición-> A, se configura la condición “Cantidad <100,000”, en (Iniciador) A-> B - Moneda = “Rublo”, (Iniciador, A, B) -> D - ¡Iniciador! = C.
¿Por qué se indican las transiciones entre paréntesis? Debido a que las condiciones se pueden cumplir de manera compleja y “bajo el capó”, si formamos una condición para una transición a un punto de coordinación, generamos automáticamente una transición del sistema que “pasa por alto” este punto (aquí, nuestra arquitectura de flujo de trabajo similar a un árbol nos ayudó y nada "Muleta").Bueno, una pequeña mosca en la pomada. No hemos podido implementar un mecanismo de administración de alertas configurable. Aunque inicialmente se estableció en la arquitectura del proyecto. Como de costumbre, para acelerar el proceso de inicio, tuve que "codificar temporalmente" un poco, y en este momento este código permanece. Y la idea era crear un mecanismo similar a jira, que le permite crear su propio esquema de notificación, en el que puede establecer desencadenantes (eventos) y asociarlos con grupos o empleados específicos y poder "adjuntarlo" a cualquier tipo de aplicación.
Para acelerar el proceso de lanzamiento, tuve que "codificar temporalmente" un poco.
Interfaces
Algunas interfaces de nuestro sistema, para que haya una comprensión de lo que generalmente se discutió
Tablero de instrumentos
Lo primero que ve el usuario del sistema cuando se abre (si no tiene en cuenta el proceso de autenticación) es un panel de control. Solo muestra aprobaciones activas (incompletas). Además, las aplicaciones se dividen en 2 segmentos:
- Aplicaciones que requieren la aprobación del usuario (soy el artista intérprete o ejecutante)
- Aplicaciones iniciadas por el usuario (soy el autor)
Crea una nueva aplicación
La interfaz para crear una nueva aplicación puede tener una representación (el número y la disposición de los elementos) absolutamente cualquiera. Aquí hay una interfaz simple que demuestra la capacidad de ingresar números, seleccionar de la lista, marcar (casilla de verificación), fecha, archivos adjuntos.
Lo único a lo que puede prestarle atención es a la opción "Crear más". Cuando se activa, después de crear la aplicación actual, no estamos en el tablero ni en la tarjeta de la aplicación recién creada, sino que se abre de inmediato el formulario para crear una nueva aplicación del mismo tipo que la que acaba de crear. Se implementó a pedido de nuestros empleados, quienes deben "agrupar" para crear el mismo tipo de aplicación.
Etapa de aprobación
Esta interfaz no es muy diferente del formulario de creación de la aplicación. Pero tiene una serie de características funcionales fundamentales:
- En lugar de los botones de creación, aparecen botones, clics en los que se transfiere la aplicación a uno de los estados del proceso empresarial. En el caso degenerado, como se describió anteriormente, es "Rechazar" y "Acepto"
- Los archivos adjuntos, comentarios y una nueva entidad de diario (historial de acciones) se colocan en pestañas separadas
- Por defecto, todos los campos de la aplicación, excepto el comentario, no son editables. Al mismo tiempo, establecimos la funcionalidad que nos permite proporcionar en cualquier paso particular de la coordinación la capacidad de ajustar solo un conjunto dado de campos.
- Si usted es el iniciador de la aplicación (siempre puede ir a la tarjeta de aprobación) y tiene la opción "Crear un duplicado", cuando hace clic en él, se abre el formulario de creación de la aplicación, cuyos valores de campo (excepto los archivos adjuntos) duplican los valores de campo de la aplicación actual.
Si observa detenidamente, notará un elemento naranja con un signo más dentro del campo de selección de Contador. Esta es la funcionalidad de administrar un directorio personal. Cuando hace clic en este elemento, se abre el formulario para agregar un elemento de directorio.
Dado que en este caso es la Contraparte, el elemento de directorio en nosotros contiene dos detalles: Nombre y TIN. Después de la creación, el usuario puede seleccionar inmediatamente este elemento de la lista desplegable.
Buscar
En la búsqueda de aplicaciones, se muestra un conjunto de propiedades en la parte superior para los valores que debe seleccionar. Los usuarios pueden configurar los conjuntos según sus necesidades con la capacidad de cambiar rápidamente entre ellos.
Administración de Procesos de Negocio
Como parte de la gestión de un proceso comercial, podemos crear cualquier número de puntos de referencia e indicar transiciones. Como resultado, se forma un gráfico de transición. Y para cada punto de coordinación podemos establecer:
- Quién coincide en un punto dado
- Permisos para realizar acciones en un punto determinado de la ruta
- Condiciones para omitir este punto (etapa de aprobación)
A juego
En la pestaña "Coordinadores", puede agregar grupos, agregar usuarios a los que pueden llevar a cabo el proceso de coordinación en este punto del proceso comercial.
Permisos de acción
En permisos, puede detenerse un poco más. Para limitar las acciones de los coordinadores relacionadas con el cambio de los valores de los campos (entidades) en la aplicación, se ha introducido un mecanismo de permiso. Actualmente, hemos ingresado 4 permisos:
- Descargar archivos adjuntos
- Ver archivos adjuntos
- Comentando
- Cambiar los valores de los campos de la aplicación.
Si los tres primeros son más o menos claros, entonces debe comentarse el permiso para cambiar los campos disponibles. Por defecto, los negociadores no pueden cambiar ningún valor de campo en la aplicación. Solo el modo de visualización está disponible. Si es necesario permitir el cambio de campos de aplicación individuales en un punto de aprobación específico, esta opción se activa y es posible seleccionar de la lista de campos de aplicación solo aquellos cuyos valores se pueden cambiar por el correspondiente.
Aunque es un poco exagerado, pero por ejemplo, esto puede ser necesario si tiene una posición separada "un verificador de la exactitud de llenar la cantidad", y luego darle la oportunidad de cambiar solo la cantidad en la solicitud y nada más.
Condiciones de omisión
Saltar condiciones que describí anteriormente. La funcionalidad es necesaria para formar un único proceso de negocio lineal para todos los usuarios del sistema, y al mismo tiempo para llevar a cabo el movimiento de la aplicación a lo largo de la ruta de diferentes maneras, dependiendo de la condición dada y sin intervención del usuario.
En la pantalla, se prepara una configuración que le permitirá omitir este punto de ruta si el iniciador está en ciertos grupos y la moneda es equivalente al rublo ruso.
En lugar de una conclusión
Actualmente, nuestra empresa ha lanzado solo un tipo de aprobación. Pero con la flexibilidad de personalización, que está integrada en el sistema, tenemos herramientas que le permiten configurar cualquier tarjeta de aplicación, donde puede especificar cualquier número de campos, cualquier representación de la tarjeta de aplicación y cualquier ruta para la coordinación con diversas condiciones.
Lo único que se requiere es trabajar con los análisis para recopilar los requisitos y luego transferirlos al sistema a través de la interfaz de administración. ¿Qué estamos haciendo ahora?
El producto está vivo, periódicamente realizamos cambios a pedido de nuestros empleados, como resultado de lo cual crece su poder y usabilidad, y las funciones implementadas cumplen con la tarea que enfrenta nuestro negocio, y siempre podemos decir con confianza que la funcionalidad solicitada se implementará en caso de si es posible