Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-4359

Custom TaskLifeCycleEventListener are not called on Task Events

    XMLWordPrintable

Details

    Description

      I have created two custom producers, one for ProcessEventListener and the other for TaskLifeCycleEventListener. Also I am using InjectableRegisterableItemsFactory. jBPM calls the callback methods of the ProcessEventListener during various phases of the process lifecycle but the callback methods of TaskLifeCycleEventListener are not called during various phases of the task.

      The reason being what I observed in InjectableRegisterableItemsFactory, the get getProcessEventListeners iterates over all the injected process event listener producers but getTaskListeners does not take into consideration of the injected taskListenerProducer hence the injected beans of task life cycle never make it to the defaultListeners list. Also the name of the method should be changed from getTaskListeners to getTaskEventListeners to be in sync with other getter methods for listeners.

      I have attached my java files.

      @Override
      public List<ProcessEventListener> getProcessEventListeners(RuntimeEngine runtime) {

      List<ProcessEventListener> defaultListeners = new ArrayList<ProcessEventListener>();
      if(auditlogger != null)

      { defaultListeners.add(auditlogger); }

      else if (getAuditBuilder() != null) {
      AbstractAuditLogger aLogger = getAuditLoggerInstance(runtime);
      if (aLogger != null)

      { defaultListeners.add(aLogger); }

      }
      try {
      for (EventListenerProducer<ProcessEventListener> producer : processListenerProducer)

      { defaultListeners.addAll(producer.getEventListeners(((RuntimeEngineImpl)runtime).getManager().getIdentifier(), getParametersMap(runtime))); }

      } catch (Exception e) {
      logger.warn("Exception while evaluating ProcessEventListener producers {}", e.getMessage());
      }
      // add listeners from descriptor
      defaultListeners.addAll(getEventListenerFromDescriptor(runtime, ProcessEventListener.class));
      return defaultListeners;
      }

      @Override
      public List<TaskLifeCycleEventListener> getTaskListeners()

      { List<TaskLifeCycleEventListener> defaultListeners = new ArrayList<TaskLifeCycleEventListener>(); // add listeners from descriptor defaultListeners.addAll(getTaskListenersFromDescriptor()); return defaultListeners; }

      Attachments

        Activity

          People

            swiderski.maciej Maciej Swiderski (Inactive)
            anindyas79 Anindya Saha (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: