I. Proceso de implementación (modo de archivo)
/ ** * compresión de la bolsa proceso de implementación * / @test pública vacío deploymentByZip () { // Obtener el objeto processEngine la ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // conseguir un objetivo RepositoryService RepositoryService RepositoryService = processEngine.getRepositoryService (); / / definir un flujo de entrada, Zip archivo de carga InputStream = flujoEntrada el este .getClass () getClassLoader () la getResourceAsStream ( "BPMN / holiday.zip.". ); // definir un objetivo ZipInputStream ZipInputStream ZipInputStream = nuevo nuevoZipInputStream (flujoEntrada); // Los procesos para la Implementación Implementación = repositoryService.createDeployment () .addZipInputStream (ZipInputStream) .name ( "proceso de aprobación de petición" ) .key ( "holidayKey" ) la .deploy (); System.out.println ( " nombre de proceso: "+ deploy.getName ()); }
II. Definición del proceso Vista
/ ** * Comprobar información de definición de flujo * / @test pública vacío getProDef () { // Obtener el objeto processEngine la ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // conseguir un objetivo RepositoryService RepositoryService RepositoryService = processEngine.getRepositoryService (); // Ver objetos obtenidos de definición de procesos processDefinitionQuery processDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery (); // especificado visualización proceso processDefinitionKey () valores de clave especificadas en la definición del proceso de acuerdo con el número de versión definición orderByProcessDefinitionVersion proceso especie Lista <la ProcessDefinition> processDefinitionQuery.processDefinitionKey = vacaciones ( "myProcess_1" ) .orderByProcessDefinitionVersion () desc () lista (); .. Para (el ProcessDefinition PRODEF: vacaciones) { System.out.println ( "definición del proceso de identificación:" + PRODEF. getId ()); System.out.println ( "nombre de definición de proceso:" + proDef.getName ()); System.out.println ( "definición de procesos clave:" + proDef.getKey ()); el System.out .println ( "número de versión de definición de proceso:" + proDef.getVersion ()); } }
III. Proceso de borrado
/ ** * proceso de borrado: * asumir que cuando se elimina, en la actualidad tiene la instancia de proceso, que dará lugar a la eliminación falla * Si obligatoria, puede utilizar repositoryService.deleteDeployment ( "1", true) ; verdadera representante de eliminaciones en cascada * / @test pública vacío deleteDeployment () { // Obtener el objeto processEngine la processEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // conseguir un objetivo RepositoryService RepositoryService RepositoryService = processEngine.getRepositoryService (); // proceso de eliminación repositoryService.deleteDeployment ( "1" , true ); }
IV. Obtiene procesos de base de datos de información de recursos
dependencia:
< Dependencia > < groupId > commons-io </ groupId > < artifactId > commons-io </ artifactId > < versión > 2.5 </ version > < ámbito > prueba </ alcance > </ dependencia >
/ ** * lee los datos desde el archivo de recursos a un local de * / @test pública sin efecto la getResource () lanza IOException { // Obtener el objeto processEngine la ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // conseguir un objetivo RepositoryService RepositoryService RepositoryService = processEngine. getRepositoryService (); // entrar en el proceso el objeto de consulta processDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery (); // entrar en el flujo de los recursos processDefinitionQuery.processDefinitionKey ( "myProcess_1" ); // Obtener un único resultado la ProcessDefinition ProcessDefinition = processDefinitionQuery.singleResult (); // despliegue proceso ID de cadena deploymentId = processDefinition.getDeploymentId (); // adquirido bpmnResource el InputStream bpmnStream = repositoryService.getResourceAsStream (deploymentId, processDefinition.getResourceName ()); // Obtener el PNG InputStream pngStream = repositoryService.getResourceAsStream (deploymentId, processDefinition.getDiagramResourceName ()); // crear el flujo de salida del OutputStream bpmnOut = nuevo nuevo un FileOutputStream ( "E: la Prueba \\ \\" +; ProcessDefinition.getResourceName ()) OutputStream PNGOUT = nuevo nuevo un FileOutputStream (: + "E Test \\ \\" processDefinition.getDiagramResourceName ()); // los datos de salida en el disco, que IOUtils.copy (bpmnStream, bpmnOut); IOUtils.copy (pngStream, PNGOUT); // el flujo de pngOut.close (); bpmnOut.close (); pngStream.close (); bpmnStream.close (); }
Aplicación de los resultados:
sistemas y procesos de negocio V. asociados con el sistema de
/ ** * Ejemplos y los sistemas de negocio asociados con el inicio del proceso * Datos normales deben primero añadirlos a la tabla de negocios, se añade el identificador de clave principal para obtener los datos actuales, iniciar el proceso por ejemplo, el ID de clave primaria a BuessniessKkey * sistemas y procesos representativos asociado * / @test pública vacío startInstance () { / ** * dejar que Joe Smith presentó a la página, y luego obtener el ID * / / ** * crear una instancia de la licencia proceso de Joe Smith * / // get processEngine orientar la processEngine processEngine = ProcessEngines.getDefaultProcessEngine (); runtimeService runtimeService = processEngine.getRuntimeService (); // proceso de generación de la ProcessInstance runtimeService.startProcessInstanceByKey = Holiday ( "myProcess_1", "2" ); / ** * Joe Smith sometido a la aprobación de la licencia * / // obtener una TaskService objetos TaskService TaskService = processEngine.getTaskService (); // obtener tarea de John tarea Tarea = taskService.createTaskQuery () taskAssignee ( "zhangsan") processDefinitionKey ( "myProcess_1 .. " ) .singleResult (); // aprobación tarea taskService.complete (task.getId ()); }
VI. Activación de procesos y se bloquea
1. Todos pendientes de definición de procesos
/ ** * Todos definición de procesos pendientes * / @test pública vacío allSuspend () { // Obtener el objeto processEngine la ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // Obtener el objeto RepositoryService la RepositoryService RepositoryService = processEngine.getRepositoryService (); // definición del proceso de adquisición ProcessDefinition Holiday = repositoryService.createProcessDefinitionQuery () processDefinitionKey ( "myProcess_1." ) .singleResult (); // obtener la definición actual proceso si el estado de suspensión suspende el método se representantes verdaderos pausa se está ejecutando falsos booleanos suspendido =holiday.isSuspended (); IF (suspendida) { repositoryService.activateProcessDefinitionById (holiday.getId (), a verdadero , nula ); System.out.println ( "define la activación de flujo" ); } la otra cosa { repositoryService.suspendProcessDefinitionById (holiday.getId (), a la verdadera , nula ); System.out.println ( "suspender la definición del proceso" ); } }
ejecutado de nuevo
2. Un proceso único ejemplo pendiente
/ ** * pendiente de una sola instancia de proceso * / @test pública vacío singleSuspend () { // Obtener el objeto processEngine la ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // Obtener el objeto RuntimeService RuntimeService runtimeService = processEngine.getRuntimeService (); la ProcessInstance la processInstance runtimeService.createProcessInstanceQuery = () processInstanceId ( "22501." ) .singleResult (); // obtener la definición actual proceso si el estado de suspensión suspende el método es cierto representantes pausa se está ejecutando falsa boolean suspendió = processInstance.isSuspended (); iF(Suspendida) { runtimeService.activateProcessInstanceById ( "22501" ); System.out.println ( "XX abandonan el proceso de activación" ); } la otra cosa { runtimeService.suspendProcessInstanceById ( "22501" ); System.out.println ( "permiso en XX procesar cuelgue " ); } }
Tratando de procesar el procedimiento pendiente
Informar de un error