Skip to content

Commit

Permalink
BZ-1056236 - Provide registering TaskLifeCycleEventListener in Regist…
Browse files Browse the repository at this point in the history
…erableItemsFactory

(cherry picked from commit bc75b70)
  • Loading branch information
mswiderski committed Jan 28, 2014
1 parent dd4cfe0 commit ad0aac6
Show file tree
Hide file tree
Showing 27 changed files with 991 additions and 90 deletions.
Expand Up @@ -7,8 +7,9 @@
import java.util.Date;

import org.jbpm.services.task.lifecycle.listeners.TaskLifeCycleEventListener;
import org.kie.api.task.TaskEvent;
import org.kie.api.task.model.Task;
import org.kie.internal.task.api.TaskEvent;
import org.kie.internal.task.api.TaskContext;
import org.kie.internal.task.api.TaskPersistenceContext;

/**
Expand All @@ -24,7 +25,7 @@ public JPATaskLifeCycleEventListener() {
public void afterTaskStartedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -35,7 +36,7 @@ public void afterTaskStartedEvent(TaskEvent event) {
public void afterTaskActivatedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -46,7 +47,7 @@ public void afterTaskActivatedEvent(TaskEvent event) {
public void afterTaskClaimedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -57,7 +58,7 @@ public void afterTaskClaimedEvent(TaskEvent event) {
public void afterTaskSkippedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -68,7 +69,7 @@ public void afterTaskSkippedEvent(TaskEvent event) {
public void afterTaskStoppedEvent(TaskEvent event ) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -79,7 +80,7 @@ public void afterTaskStoppedEvent(TaskEvent event ) {
public void afterTaskCompletedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -90,7 +91,7 @@ public void afterTaskCompletedEvent(TaskEvent event) {
public void afterTaskFailedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -101,7 +102,7 @@ public void afterTaskFailedEvent(TaskEvent event) {
public void afterTaskAddedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -113,7 +114,7 @@ public void afterTaskAddedEvent(TaskEvent event) {
public void afterTaskExitedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -124,7 +125,7 @@ public void afterTaskExitedEvent(TaskEvent event) {
public void afterTaskReleasedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -135,7 +136,7 @@ public void afterTaskReleasedEvent(TaskEvent event) {
public void afterTaskResumedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -146,7 +147,7 @@ public void afterTaskResumedEvent(TaskEvent event) {
public void afterTaskSuspendedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -157,7 +158,7 @@ public void afterTaskSuspendedEvent(TaskEvent event) {
public void afterTaskForwardedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand All @@ -168,7 +169,7 @@ public void afterTaskForwardedEvent(TaskEvent event) {
public void afterTaskDelegatedEvent(TaskEvent event) {
String userId = "";
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();
if(ti.getTaskData().getActualOwner() != null){
userId = ti.getTaskData().getActualOwner().getId();
}
Expand Down
Expand Up @@ -20,10 +20,10 @@

import org.jbpm.services.task.impl.model.BAMTaskSummaryImpl;
import org.jbpm.services.task.utils.ClassUtil;
import org.kie.api.task.TaskEvent;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.Task;
import org.kie.api.task.model.TaskSummary;
import org.kie.internal.task.api.TaskEvent;
import org.kie.internal.task.api.TaskContext;
import org.kie.internal.task.api.TaskPersistenceContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -219,7 +219,7 @@ protected BAMTaskSummaryImpl createOrUpdateTask(TaskEvent event, Status newStatu
protected BAMTaskSummaryImpl createOrUpdateTask(TaskEvent event, Status newStatus, BAMTaskWorker worker) {
BAMTaskSummaryImpl result = null;
Task ti = event.getTask();
TaskPersistenceContext persistenceContext = event.getTaskContext().getPersistenceContext();
TaskPersistenceContext persistenceContext = ((TaskContext)event.getTaskContext()).getPersistenceContext();

if (ti == null) {
logger.error("The task instance does not exist.");
Expand Down
Expand Up @@ -31,9 +31,9 @@
import org.jbpm.services.task.identity.MvelUserGroupCallbackImpl;
import org.jbpm.services.task.impl.TaskDeadlinesServiceImpl;
import org.jbpm.services.task.impl.command.CommandBasedTaskService;
import org.jbpm.services.task.lifecycle.listeners.TaskLifeCycleEventListener;
import org.kie.api.runtime.Environment;
import org.kie.api.runtime.EnvironmentName;
import org.kie.api.task.TaskLifeCycleEventListener;
import org.kie.api.task.TaskService;
import org.kie.api.task.UserGroupCallback;
import org.kie.internal.task.api.EventService;
Expand Down
@@ -1,7 +1,7 @@
package org.jbpm.services.task.events;

import org.jbpm.services.task.lifecycle.listeners.TaskLifeCycleEventListener;
import org.kie.internal.task.api.TaskEvent;
import org.kie.api.task.TaskEvent;

public class DefaultTaskEventListener implements TaskLifeCycleEventListener {

Expand Down
@@ -1,43 +1,21 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
* Copyright 2013 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jbpm.services.task.lifecycle.listeners;

import java.util.EventListener;

import org.kie.internal.task.api.TaskEvent;

public interface TaskLifeCycleEventListener extends EventListener {

public void beforeTaskActivatedEvent(TaskEvent event);
public void beforeTaskClaimedEvent(TaskEvent event);
public void beforeTaskSkippedEvent(TaskEvent event);
public void beforeTaskStartedEvent(TaskEvent event);
public void beforeTaskStoppedEvent(TaskEvent event);
public void beforeTaskCompletedEvent(TaskEvent event);
public void beforeTaskFailedEvent(TaskEvent event);
public void beforeTaskAddedEvent(TaskEvent event);
public void beforeTaskExitedEvent(TaskEvent event);
public void beforeTaskReleasedEvent(TaskEvent event);
public void beforeTaskResumedEvent(TaskEvent event);
public void beforeTaskSuspendedEvent(TaskEvent event);
public void beforeTaskForwardedEvent(TaskEvent event);
public void beforeTaskDelegatedEvent(TaskEvent event);

public void afterTaskActivatedEvent(TaskEvent event);
public void afterTaskClaimedEvent(TaskEvent event);
public void afterTaskSkippedEvent(TaskEvent event);
public void afterTaskStartedEvent(TaskEvent event);
public void afterTaskStoppedEvent(TaskEvent event);
public void afterTaskCompletedEvent(TaskEvent event);
public void afterTaskFailedEvent(TaskEvent event);
public void afterTaskAddedEvent(TaskEvent event);
public void afterTaskExitedEvent(TaskEvent event);
public void afterTaskReleasedEvent(TaskEvent event);
public void afterTaskResumedEvent(TaskEvent event);
public void afterTaskSuspendedEvent(TaskEvent event);
public void afterTaskForwardedEvent(TaskEvent event);
public void afterTaskDelegatedEvent(TaskEvent event);
public interface TaskLifeCycleEventListener extends org.kie.api.task.TaskLifeCycleEventListener {

}
Expand Up @@ -23,13 +23,13 @@
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.manager.RuntimeManager;
import org.kie.api.task.TaskEvent;
import org.kie.api.task.model.Content;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.Task;
import org.kie.internal.runtime.manager.InternalRuntimeManager;
import org.kie.internal.runtime.manager.RuntimeManagerRegistry;
import org.kie.internal.runtime.manager.context.ProcessInstanceIdContext;
import org.kie.internal.task.api.TaskEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down
Expand Up @@ -6,11 +6,11 @@
import org.jbpm.services.task.lifecycle.listeners.TaskLifeCycleEventListener;
import org.jbpm.services.task.utils.ContentMarshallerHelper;
import org.kie.api.runtime.KieSession;
import org.kie.api.task.TaskEvent;
import org.kie.api.task.TaskService;
import org.kie.api.task.model.Content;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.Task;
import org.kie.internal.task.api.TaskEvent;

public class NonManagedTaskEventListener implements TaskLifeCycleEventListener {

Expand Down
Expand Up @@ -39,12 +39,12 @@
import org.junit.Test;
import org.kie.api.runtime.process.WorkItemHandler;
import org.kie.api.runtime.process.WorkItemManager;
import org.kie.api.task.TaskEvent;
import org.kie.api.task.TaskService;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.Task;
import org.kie.api.task.model.TaskSummary;
import org.kie.internal.task.api.EventService;
import org.kie.internal.task.api.TaskEvent;
import org.kie.internal.task.api.model.AccessType;
import org.kie.internal.task.api.model.InternalTaskData;

Expand Down
@@ -0,0 +1,47 @@
/*
* Copyright 2013 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jbpm.runtime.manager.api;

import java.util.Map;

/**
* Allows to provide global instances for <code>KieSession</code> to be registered on time when <code>RuntimeEngine</code>
* is created.
* <br/>
* It will be invoked by RegisterableItemsFactory implementation (especially InjectableRegisterableItemsFactory
* in CDI world) for every KieSession.
*
*/
public interface GlobalProducer {

/**
* Returns map of (key = global name, value global instance) of globals
* to be registered on KieSession
* <br/>
* Parameters that might be given are as follows:
* <ul>
* <li>ksession</li>
* <li>taskService</li>
* <li>runtimeManager</li>
* </ul>
*
* @param identifier - identifier of the owner - usually RuntimeManager that allows the producer to filter out
* and provide valid instances for given owner
* @param params - owner might provide some parameters, usually KieSession, TaskService, RuntimeManager instances
* @return map of work item handler instances (recommendation is to always return new instances when this method is invoked)
*/
Map<String, Object> getGlobals(String identifier, Map<String, Object> params);
}
Expand Up @@ -81,12 +81,19 @@ protected void registerItems(RuntimeEngine runtime) {
runtime.getKieSession().getWorkItemManager().registerWorkItemHandler(entry.getKey(), entry.getValue());
}

// register globals
Map<String, Object> globals = factory.getGlobals(runtime);
for (Entry<String, Object> entry : globals.entrySet()) {
runtime.getKieSession().setGlobal(entry.getKey(), entry.getValue());
}

// process listeners
List<ProcessEventListener> processListeners = factory.getProcessEventListeners(runtime);
for (ProcessEventListener listener : processListeners) {
runtime.getKieSession().addEventListener(listener);
}

// agenda listeners
List<AgendaEventListener> agendaListeners = factory.getAgendaEventListeners(runtime);
for (AgendaEventListener listener : agendaListeners) {
runtime.getKieSession().addEventListener(listener);
Expand Down
Expand Up @@ -26,6 +26,7 @@
import org.jbpm.process.audit.event.DefaultAuditEventBuilderImpl;
import org.jbpm.process.instance.event.listeners.TriggerRulesEventListener;
import org.jbpm.runtime.manager.impl.cdi.InjectableRegisterableItemsFactory;
import org.jbpm.services.task.audit.JPATaskLifeCycleEventListener;
import org.jbpm.services.task.wih.ExternalTaskEventListener;
import org.jbpm.services.task.wih.LocalHTWorkItemHandler;
import org.kie.api.event.process.ProcessEventListener;
Expand All @@ -34,6 +35,7 @@
import org.kie.api.runtime.EnvironmentName;
import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.process.WorkItemHandler;
import org.kie.api.task.TaskLifeCycleEventListener;
import org.kie.internal.runtime.manager.Disposable;
import org.kie.internal.runtime.manager.DisposeListener;
import org.kie.internal.task.api.EventService;
Expand Down Expand Up @@ -101,7 +103,17 @@ public List<WorkingMemoryEventListener> getWorkingMemoryEventListeners(RuntimeEn
}


@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public List<TaskLifeCycleEventListener> getTaskListeners() {
List<TaskLifeCycleEventListener> defaultListeners = new ArrayList<TaskLifeCycleEventListener>();
defaultListeners.add(new JPATaskLifeCycleEventListener());
// add any custom listeners
defaultListeners.addAll(super.getTaskListeners());
return defaultListeners;
}


@SuppressWarnings({ "unchecked", "rawtypes" })
protected WorkItemHandler getHTWorkItemHandler(RuntimeEngine runtime) {

ExternalTaskEventListener listener = new ExternalTaskEventListener();
Expand Down

0 comments on commit ad0aac6

Please sign in to comment.