Registrar un servicio de preguntas y java tareas relacionadas con el uso reciente de los oyentes de tareas que pueden fluir
Los oyentes de tareas
TaskListener principalmente para supervisar la situación de usertask, escucha para el evento de los eventos son cuatro:
la creación de Crear
asignación de personas asignar
completa completa
Eliminar Eliminar
xml:
<userTask id="USERTASK" name="USERTASK" >
<extensionElements>
<activiti:taskListener event="complete" class="com.github.flowable.delegate.MyListener"/>
</extensionElements>
</userTask>
código:
public class MyListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
System.out.println("===========执行监听器============");
}
}
Habrá un problema, cuando hay inyección de dependencias primavera, recibirá menos, debe ser considerado cuando se arranca el motor de procesos, la inyección de dependencias de inicialización no se ha completado, porque es maravilloso y Java se utilizan en ingeniería mezclado con, puede este problema existirá
inyección de dependencia
Aquí resuelto por otro camino, a modo de ejemplo de la adquisición de la interfaz de Application Context ApplicationContextAware
@Component
public class MyListener implements TaskListener, ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
applicationContext = arg0;
}
@Override
public void notify(DelegateTask delegateTask) {
String processInsId = delegateTask.getProcessInstanceId();
MyService myService = (MyService) applicationContext.getBean("myService");
// TODO 执行service方法
System.out.println("==========执行监听器======");
}
}
misión de servicio java
Del mismo modo las tareas de servicio de Java no son el problema
xml:
<serviceTask id="classservicetask" name="class方式" flowable:class="com.github.flowable.delegate.ClassImplementsJavaDelegate">
</serviceTask>
código:
@Component
public class ClassImplementsJavaDelegate implements JavaDelegate, ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
applicationContext = arg0;
}
public void execute(DelegateExecution execution) {
String processInsId = execution.getProcessInstanceId();
MyService myService = (MyService) applicationContext.getBean("myService");
System.out.println("=====================指定实现了JavaDelegate的类=====================");
}
}