1. ¿Qué es la instancia de proceso
Los participantes (que puede ser de usuario puede ser un programa) inicia un procedimiento de acuerdo con el contenido de definición de procesos, que es una instancia de proceso es dinámico;
Definiciones de procesos y ejemplos ilustran el proceso:
2. Inicie la instancia de proceso
definición del proceso desplegado después activiti, se puede ir a gestionar la ejecución del proceso por activiti en el flujo de ejecución del sistema representa un flujo de ejecución; tales sistemas dejan después del proceso de despliegue, si un usuario quiere solicitar permiso entonces usted necesita para llevar a cabo este proceso, Si otro usuario debe salir de la aplicación tiene que realizar este proceso, cada uno realizado independientemente uno de otro, cada uno realizando una instancias de proceso separadas;
Paquete com.wn;
Importación org.activiti.engine.ProcessEngine;
Importación org.activiti.engine.ProcessEngines;
Importación org.activiti.engine.RuntimeService;
Importación org.activiti.engine.runtime.ProcessInstance;
/ * se inicia instancia de proceso
* ` act_hi_actinst` ha comenzado y terminado de la información del evento
* `act_hi_identitylink` información del historial participante
*` act_hi_procinst` instancia de proceso
* `act_hi_taskinst` instancia de tarea histórica
*` act_ru_execution` información de ejecución de la tarea
* `act_ru_identitylink` actual participante ejecución de la tarea
*` act_ru_task` información de la tarea
*
* * /
público de clase StartInstance {
públicas estáticas void main (String [] args) {
// Obtener el ProcessEngine
la ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine ();
// Obtener el objeto RuntimeService
RuntimeService runtimeService = processEngine.getRuntimeService ();
// crear una instancia de proceso
la ProcessInstance hoilday = runtimeService.startProcessInstanceByKey ( " hoilday " );
// información instancia de salida
Sistema . OUT .println ( " Obtener ID de proceso de despliegue: " + hoilday.getDeploymentId ());
. el Sistema OUT .println ( " Obtener ID de instancia de proceso: " +hoilday.getId ());
. el Sistema OUT .println ( " Obtener actividad del proceso ID: " + hoilday.getActivityId ());
}
}
3.BusinessKey (identificación de servicio)
Cuando se inicia la instancia de proceso, se lleva a cabo businessKey businessKey almacena en la tabla ejecución de la instancia de proceso act_ru_execution;
BusinessKey: identificador de servicio, típicamente la clave primaria del servicio de mesa, la identificación instancia de proceso de negocio y correspondencia; identificador de servicio del sistema de servicio; identificador de servicio de almacenamiento se utiliza para sistema asociado del servicio de consulta de datos de acuerdo con el identificador de servicio;
Por ejemplo: dejar el proceso para iniciar una instancia de proceso, se puede dejar el único ID como el identificador de servicio almacenada activiti en futuras consultas activiti la instancia de proceso puede conseguir dejar sola Identificación información obtenida formulario de permiso de base de datos de sistema de servicio de consulta asociación ;
Paquete com.wn.activiti;
Importación org.activiti.engine.ProcessEngine;
org.activiti.engine.ProcessEngines Importación;
Importación org.activiti.engine.RuntimeService;
Importación org.activiti.engine.TaskService;
Importación org.activiti.engine. task.Task;
/ * instancia de proceso de negocio asociados se pone en marcha y el sistema * /
público de clase StartInstance {
públicas estáticas void main (String [] args) {
// Obtener el processEngine
la processEngine processEngine = ProcessEngines.getDefaultProcessEngine ();
// objetos Get un RuntimeService
RuntimeService = runtimeService processEngine.getRuntimeService ();
//proceso de generación de
runtimeService.startProcessInstanceByKey ( " hoilday " , " 1. " );
// presentado para su aprobación por el proceso de licencia
TaskService TaskService = processEngine.getTaskService ();
el Grupo de Tareas . TaskService.createTaskQuery = () TaskAssignee ( " zhangsan " ) .processDefinitionKey ( " hoilday " ) .singleResult ();
// aprobación tarea
taskService.complete (task.getId ());
}
}
4. instancia de proceso de consulta
Estado puede fluir durante el funcionamiento de la instancia del proceso de consulta, información de funcionamiento nodo actual;
com.wn.activiti empaquetar;
org.activiti.engine.ProcessEngine importación;
org.activiti.engine.ProcessEngines de importación;
org.activiti.engine.RuntimeService importación;
org.activiti.engine.runtime.ProcessInstance importación;
java.util.List importación;
público de clase QueryProcessInstance {
públicas estáticas void main (String [] args) {
// 获取processEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine ();
// 流程定义
cadena processDefinitionKeu = " hoilday " ;
// 获取RuntimeService
RuntimeService runtimeService = processEngine.getRuntimeService ();
Lista <ProcessInstance> list = runtimeService
.createProcessInstanceQuery ()
.processDefinitionKey (processDefinitionKeu)
.list ();
para (ProcessInstance processInstance: lista) {
Sistema. fuera .println ( " " );
Sistema. fuera .println ( " 流程实例id: "
+ processInstance.getProcessInstanceId ()); Sistema. cabo .println ( " 所属流程定义id: "
+ ProcessInstance.getProcessDefinitionId ());
Sistema. OUT .println ( " si completa: " + processInstance.isEnded ());
Sistema. OUT .println ( " ¿Son pausa: " + processInstance.isSuspended ());
. Sistema OUT .println ( " actividad actual representado: " + processInstance.getActivityId ());
}
}
}
5. Suspender la instancia de proceso de activación
En algunos casos puede ser debido al proceso de cambios que necesita hacer una pausa en los procesos actualmente en ejecución, en lugar de eliminar, suspender el proceso no será ejecutada;
5.1 Todos pendiente instancia de proceso
proceso de operación se define como un estado de suspensión, definición de proceso gigante debajo de todas las instancias de proceso todo en suspensión;
A la espera del proceso de llenado se define como la definición del proceso se permitirá para iniciar una nueva instancia de proceso, mientras que toda esta definición de proceso se todo el rato suspendido instancias de proceso;
Paquete com.wn.activiti;
Importación org.activiti.engine.ProcessEngine;
Importación org.activiti.engine.ProcessEngines;
Importación org.activiti.engine.RepositoryService;
Importación org.activiti.engine.repository.ProcessDefinition;
/ * todas las instancias del proceso suspender * /
público de clase AllSuspend {
públicas estáticas void main (String [] args) {
// Obtener el processEngine
la processEngine processEngine = ProcessEngines.getDefaultProcessEngine ();
// Obtener el objeto RepositoryService
RepositoryService RepositoryService = processEngine.getRepositoryService ();
// Obtener proceso definiciones
. ProcessDefinition hoilday = repositoryService.createProcessDefinitionQuery () processDefinitionKey ( " hoilday " ) .singleResult ();
// obtener la definición actual proceso si el estado de suspensión suspende el método es cierto se suspende, el método de suspensión es falso se está ejecutando
boolean suspendió = hoilday .isSuspended ();
IF (suspendida) {
repositoryService.activateProcessDefinitionById (hoilday.getId (), a verdadero , nula );
. el Sistema OUT .println ( " la definición del proceso de activación " );
} la otra cosa {
repositoryService.suspendProcessDefinitionById (hoilday.getId ( ),a verdadero , nula );
. el Sistema OUT .println ( " la suspensión definición de proceso " );
}
}
}
ejemplo solo proceso se suspende 5,2
Operación objeto instancia de proceso, realice suspender las operaciones para un solo proceso, una instancia de proceso se suspende este proceso no se detiene a completar el mandato actual de la instancia de proceso informará anomalías;
Paquete com.wn.activiti;
Importación org.activiti.engine.ProcessEngine;
org.activiti.engine.ProcessEngines Importación;
Importación org.activiti.engine.RepositoryService;
Importación org.activiti.engine.RuntimeService;
Importación org.activiti.engine. runtime.ProcessInstance;
/ * una única instancia de proceso se suspende * /
/ * act_hi_taskinst * /
público clase SingleSuspend {
público estático void main (String [] args) {
// Obtener el processEngine objeto
la processEngine processEngine = ProcessEngines.getDefaultProcessEngine ();
// Get objetos RuntimeService
RuntimeService = RuntimeService processEngine.getRuntimeService ();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery () processInstanceId (. " 32501 " .singleResult ());
// obtener la definición del proceso actual si el estado de suspensión suspendido a verdadero método es ejecutar en nombre de la falsa pausa la
Boolean Suspendido = processInstance.isSuspended ();
IF (suspendida) {
runtimeService.activateProcessInstanceById ( " 32501 " );
. el Sistema OUT .println ( " proceso de activación de permiso " );
} el otro {
runtimeService.suspendProcessInstanceById ( " 32501 " );
el Sistema. OUT .println ( " licencia Suspender Proceso " );
}
}
}