Flowable en acción (5) Variables de forma y proceso
Cuando una instancia de proceso ejecuta pasos, necesita guardar y usar algunos datos. En Flowable, estos datos se denominan variables (variable).
?Las instancias de proceso pueden contener variables, llamadas variables de proceso.
?Para mayor eficiencia, Flowable divide las variables en dos tipos: variables de tiempo de ejecución y variables históricas.
?Las variables cuando se ejecuta la instancia del proceso se almacenan en la tabla act_ru_variable. Al final de la ejecución de una instancia de proceso, las variables de esta instancia se eliminan de la tabla.
?Las variables de proceso se pueden configurar cuando se crea e inicia la instancia de proceso. Todos los métodos startProcessInstanceXXX tienen un parámetro opcional para configurar variables. Por ejemplo, en RuntimeService:
?También puedes agregar variables a la ejecución del proceso. Por ejemplo, (RuntimeService):
? Leer método de variable (tenga en cuenta que existe un método similar en TaskService. Esto significa que la tarea, al igual que la ejecución, puede contener variables locales cuya vida útil es la duración de la task .)
?Las variables históricas se almacenan en la tabla act_hi_varinst. Cuando comienza el proceso, las variables del proceso se almacenarán en la tabla de variables históricas al mismo tiempo; al final del proceso, las variables en la tabla histórica todavía existen. Variables de proceso que pueden entenderse como “generación permanente”.
? Obtenga todas las HistoricVariableInstances (instancias de variables históricas) en la instancia de proceso completada con ID 'XXX' y ordénelas por nombre de variable.
?En los negocios reales, los procesos van acompañados de varios formularios. El motor Flowable almacena uniformemente los datos del formulario como variables de proceso en la tabla de variables. Por lo tanto, para el motor Flowable, se puede ejecutar de forma completamente independiente del formulario, porque los datos del formulario se pueden reemplazar por variables de proceso.
?Pero, en general, necesitamos datos estructurados y los formularios siguen siendo nuestro uso recomendado.
?Existen dos métodos para la definición de formularios, formularios integrados y formularios externos.
?Tome como ejemplo el contenido XML:
?Uso:
?O
?Puede comprender el en la forma. La aplicación práctica es más utilizar formas externas.
?Un formulario de tarea que se representa a sí mismo basándose en un archivo de formulario se denomina formulario externo.
?En el entorno springboot, cualquier archivo de definición de formulario con un sufijo .form en el directorio resources/forms se implementará automáticamente.
Por ejemplo, guarde el contenido de la definición del formulario 2.2.2 como un archivo Leave.form y colóquelo en el directorio resources/forms.
?De hecho, todos los datos necesarios para representar el formulario se reúnen mediante los dos métodos siguientes:
?Los parámetros del formulario se pueden enviar mediante los dos métodos siguientes:
?Información detallada del parámetro del formulario FormProperty:
?Método para obtener los datos del formulario de la instancia de proceso especificada:
?Método para enviar los datos del formulario:
?Form Los datos en realidad se almacenan en la tabla de variables de proceso, por lo que los datos del formulario también se pueden obtener y enviar utilizando el método de variables de proceso.
? El formulario admite los siguientes tipos de campos
? En aplicaciones reales, los tipos de campos de formulario proporcionados por Flowable no pueden satisfacer completamente las necesidades y, a menudo, necesitamos personalizar el campo del formulario. tipos.
?Todos los tipos de campos personalizados deben heredar una clase abstracta de tipo de expresión "org.flowable.engine.form.AbstractFormType".
?Por ejemplo, defina un tipo personalizado "tarjeta":
?Cree una nueva clase de configuración y registre una clase de análisis de tipo de campo personalizado
?Flowable admite Personalización del motor de formularios para adaptarse a diversos escenarios. Solo necesita implementar la interfaz org.flowable.engine.impl.form.FormEngine y luego registrar la clase de implementación del motor de formulario personalizado en el motor.
?El método de registro es similar al tipo de campo de formulario personalizado. Agregue la siguiente declaración a la clase de configuración:
?Método de uso:
?A través de esto. En el artículo, he aprendido sobre el uso específico de las variables de formulario y proceso. De manera similar, en el uso comercial real, todavía se necesita mucha optimización. Por ejemplo, podemos guardar una clave común en formKey, obtener la plantilla de formulario real que debe usarse mediante algoritmos o conversiones, mostrar un formulario en una aplicación web con un tamaño de pantalla normal y mostrar otro formulario en una pantalla pequeña como un teléfono móvil. También existe un "JPA integrado" que se analizará en el próximo artículo para optimizar aún más el uso de variables de formulario y proceso.