1. significados variables de proceso:
Podemos entre los sistemas y procesos de negocio en el sistema, el desarrollo de la rama correspondiente de las variables del proceso, tales como: personal deja
días de licencia <= 3 luego de vuelta al gerente del departamento de personal para su aprobación, si> 3 a continuación, después de que el jefe de servicio a la aprobación del Director General después de la aprobación, el gerente general de la tarea
2. Los tipos de datos variables proceso:
cadena, doble, boolean, corto, largo, Entero, binario, fecha fecha
Serializable, si la necesidad de utilizar las variables de proceso entre POJO campo de atributos, la necesidad de implementar la interfaz de serialización a POJO
3. El alcance variables de proceso
1. En virtud de las variables de proceso por defecto existen entre toda la instancia de proceso, cada paso puede llegar a la variable llamada variables globales, globales como Java
2. Ejemplos de tareas y llevar a cabo sólo para la ejecución de una tarea y una serie de ejemplos , instancias de proceso hay llamadas variables, grandes locales. De manera similar a las variables locales de Java
4. El caso las variables de proceso:
Dejar días <= 3 luego de vuelta al gerente del departamento de personal para su aprobación, si> 3 a continuación, después de que el jefe de departamento para su aprobación al director general para su aprobación, después de que el director general de la tarea
4.1 Definiciones diagrama de flujo, las variables de proceso proporcionados en las condiciones de la línea de flujo
4.2 definición de POJO, recorrer para lograr la interfaz serializable
/ ** * entidad * / público de clase el Holiday los implementos de la Serializable { privada estática final largo serialVersionUID = 1L ; Privada entero de identificación; privada Cadena holidayName; // solicitante privado una Fecha startDate; // Hora de inicio privados un endDate Fecha; // Hora de finalización privada Entero NUM; // licencia días privada cadena razón; // dejar el tema de la privada cadena del tipo; // tipo de licencia públicaEntero getId () { retorno de id; } Pública vacío setId (id entero) { este .ID = Identificación; } Pública Cadena getHolidayName () { volver holidayName; } Pública vacío setHolidayName (String holidayName) { este .holidayName = holidayName; } Pública Fecha getStartDate () { volver startDate; } Pública vacío setStartDate (Fecha startDate) { este .startDate = startDate; } pública Fecha getEndDate () { retorno endDate; } Pública vacío setEndDate (Fecha endDate) { este .endDate = endDate; } Pública Entero getNum () { retorno num; } Pública vacío setNum (entero num) { este .num = num; } Pública getReason String () { retorno de la razón; } Pública vacío setReason (razón String) { este raciocinio = razón; } públicaCadena getType () { retorno tipo; } Pública vacío setType (tipo String) { este .type = tipo; } }
implementación 4.3 proceso de
/ ** * proceso de implementación * / @test pública nula distribución () { // Obtener el nombre del archivo de configuración por defecto de objeto ProcessEngine: activiti.cfg.xml y configuración de frijol ID de instancia processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // procedimientos para la obtención de objetos RepositoryService RepositoryService RepositoryService = processEngine.getRepositoryService (); // desplegado, va a generar el archivo de definición de proceso correspondiente a la que la base de datos se guarda como un registro del despliegue despliegue = repositoryService.createDeployment () .addClasspathResource ( "vacaciones / holiday2 .bpmn ") // archivos de proceso de carga .addClasspathResource ( "vacaciones / holiday2.png" ) .name ( "Dejar de procesos - Variable de proceso") // establecer el nombre del proceso de la .deploy (); // despliegue // Información sobre la implementación de salida System.out.println ( "Nombre del proceso: "+ deployment.getName ()); System.out.println ( " ID de proceso: "+ deployment.getId ()); System.out.println ( " proceso clave: "+ deployment.getKey ()); }
4.4 Inicio de la instancia de proceso
/ ** * Inicio instancia de proceso * / @test pública vacío startInstance () { // Obtener el nombre del archivo de configuración por defecto de objeto ProcessEngine: activiti.cfg.xml y configuración de frijol ID de instancia processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); / / Get runtimeService runtimeService runtimeService = processEngine.getRuntimeService (); // set variables de proceso los alquileres de vacaciones = new new los alquileres (); holiday.setNum ( 3. ); // definir una variables de proceso Mapa valor establecido almacenar Map <String, Object> = assMap nuevo nuevoEl HashMap <> (); assMap.put ( "día de fiesta" , de vacaciones); // iniciar el proceso de la ProcessInstance la processInstance = runtimeService.startProcessInstanceByKey ( "holiday2" ); System.out.println ( "~ instancia de proceso se inicia con éxito" ); }
4.5 Prueba de ejecución de procesos
Lisi menos de tres días después de la ejecución de la agencia directamente a la zhaoliu
Si deja cuatro días, tendrá que transferir después de la aprobación por Wangwu get a zhaoliu
5. ejecución de la tarea, las variables del proceso de ajuste
/ ** * Cuando la ejecución de la tarea, las variables del proceso conjunto * / @test pública sin efecto la runTask () { // Obtener el nombre del archivo de configuración por defecto de objeto ProcessEngine: activiti.cfg.xml y configuración de frijol ID de instancia processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // Obtener una TaskService objetos TaskService TaskService = processEngine.getTaskService (); // agencia de consulta tarea de consulta createTaskQuery negocio tarea de consulta taskCandidateOrAssigned intérprete processDefinitionKey: proceso de consulta / ** * reglas de coincidencia taskCandidateOrAssigned: 1.Assigned 2. Configurar bpmn valor definido en el archivo * TaskAssignee匹配规则: 1.Assigned * / / *Lista <Tarea> list = taskService.createTaskQuery () taskCandidateOrAssigned ( "Lisi") processDefinitionKey ( "día de fiesta") lista ()...; * / Lista <Tarea> list = taskService.createTaskQuery () taskAssignee ( "Lisi") processDefinitionKey ( "holiday2".. ) .List (); // 分页: Lista <Tarea> list = taskService.createTaskQuery () taskAssignee ( "zhangsan") processDefinitionKey ( "día de fiesta") listPage (i, j);... para (tarea Tarea: lista) { System.out.println ( "任务名称:" + task.getName ()); System.out.println ( "任务执行人:" + System.out. // set variables de proceso los alquileres de vacaciones = nueva nuevos los alquileres (); holiday.setNum ( 5. ); // definen una colección de Mapa, variable de proceso de almacenamiento de valores Map <String, Object> = assMap nuevo nuevo el HashMap <> (); assMap.put ( "Holiday" , de vacaciones); // procesamiento de tareas taskService.complete (task.getId (), assMap); System.out.println ( "proceso ID de instancia:" + task.getProcessInstanceId ()); } }
6. Los valores ajustados proceso ID de instancia de variables de proceso
Antes de realizar la tarea rama Lisi, realizar esta configuración del método
/ ** * Obtener el ID de instancia de proceso, de acuerdo con los valores establecidos instancia de proceso de las variables de proceso * / @test pública vacío getInstanceVar () { // Obtener el nombre del archivo de configuración por defecto de objeto ProcessEngine: activiti.cfg.xml grano de ID de instancia y la configuración es processEngineConfiguration la processEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // Get runtimeService runtimeService runtimeService = processEngine.getRuntimeService (); // variables del proceso de ajuste de la Casa de vacaciones = new new el Holiday (); holiday.setNum ( 3.); // variables de proceso conjunto runtimeService.setVariable ( "25001", "vacaciones" , de vacaciones); }
El trabajo de identificación, las variables de proceso conjunto
/ ** * El ID de trabajo, las variables del proceso conjunto * / @test pública sin efecto la runTask () { // Obtener el nombre del objeto ProcessEngine fichero de configuración por defecto: activiti.cfg.xml y configuración de frijol ID de instancia processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // Obtener una TaskService objetos TaskService TaskService = processEngine.getTaskService (); // agencia de consulta tarea de consulta createTaskQuery negocio tarea de consulta taskCandidateOrAssigned intérprete processDefinitionKey: proceso de consulta / ** * reglas de coincidencia taskCandidateOrAssigned: 1.Assigned 2. Configurar bpmn valor definido en el archivo * TaskAssignee匹配规则: 1.Assigned * / / * Lista <Tarea> list = taskService.createTaskQuery () taskCandidateOrAssigned ( "Lisi") processDefinitionKey ( "día de fiesta") lista ();... * / Lista <Tarea> list = taskService.createTaskQuery () taskAssignee ( "Lisi") processDefinitionKey ( "holiday2".. ) .List (); // 分页: Lista <Tarea> list = taskService.createTaskQuery () taskAssignee ( "zhangsan") processDefinitionKey ( "día de fiesta") listPage (i, j);... para (tarea Tarea: lista) { System.out.println ( "任务名称:" + task.getName ()); System.out. System.out. // set variables de proceso los alquileres = vacaciones nuevo nuevos los alquileres de (); holiday.setNum ( 5. ); TaskService.setVariable ( task.getId () , "Holiday" , de vacaciones); / / tareas de procesamiento taskService.complete (task.getId ()); System.out.println ( "ID de instancia de proceso:" + task.getProcessInstanceId ()); } }
Tenga en cuenta el problema:
1, si el nombre de la variable de proceso expresión UEL no existe error.
2, si la variable de proceso expresión UEL es NULL nulo, el proceso no es por expresión UEL de realizar, y los extremos de proceso.
3, si la expresión UEL no cumplen con las condiciones, finaliza el flujo
4, si no se establece las condiciones para la conexión, el flujo irá pequeño número de esa línea