03-30-2011 09:24 PM
03-31-2011 12:59 AM
03-31-2011 01:18 AM
You can use a BPMNParseListener for this, adding your listener to ALL parsed nodes.
see ProcessEngineConfigurationImpl.preParseListeners (invoked before activiti's custom parselisteners) and ProcessEngineConfigurationImpl.postParseListeeners
see org.activiti.engine.impl.bpmn.parser.BpmnParseListener
see example in Alfresco integration http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/projects/repository/source/jav...
04-07-2011 10:48 PM
You can use a BPMNParseListener for this, adding your listener to ALL parsed nodes.
see ProcessEngineConfigurationImpl.preParseListeners (invoked before activiti's custom parselisteners) and ProcessEngineConfigurationImpl.postParseListeeners
see org.activiti.engine.impl.bpmn.parser.BpmnParseListener
see example in Alfresco integration http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/projects/repository/source/jav...
04-08-2011 03:48 AM
01-15-2014 03:27 AM
/* 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.alfresco.repo.workflow.activiti;
import java.util.ArrayList;
import java.util.List;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior;
import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
import org.activiti.engine.impl.bpmn.parser.BpmnParse;
import org.activiti.engine.impl.bpmn.parser.handler.AbstractBpmnParseHandler;
import org.activiti.engine.impl.pvm.delegate.ActivityBehavior;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.parse.BpmnParseHandler;
/**
* A {@link BpmnParseHandler} that adds execution listeners to a
* {@link UserTask} which are specifically for Alfresco usage.
*
* @author Joram Barrez
* @author Frederik Heremans
* @author Nick Smith
*/
public class AlfrescoUserTaskBpmnParseHandler extends AbstractBpmnParseHandler<UserTask>
{
private TaskListener completeTaskListener;
private TaskListener createTaskListener;
private TaskListener notificationTaskListener;
protected Class<? extends BaseElement> getHandledType()
{
return UserTask.class;
}
protected void executeParse(BpmnParse bpmnParse, UserTask userTask)
{
ActivityImpl activity = findActivity(bpmnParse, userTask.getId());
ActivityBehavior activitybehaviour = activity.getActivityBehavior();
if (activitybehaviour instanceof UserTaskActivityBehavior)
{
addListeners((UserTaskActivityBehavior) activity.getActivityBehavior());
}
else if(activitybehaviour instanceof MultiInstanceActivityBehavior)
{
MultiInstanceActivityBehavior multiInstance = (MultiInstanceActivityBehavior) activitybehaviour;
if(multiInstance.getInnerActivityBehavior() instanceof UserTaskActivityBehavior)
{
addListeners((UserTaskActivityBehavior) multiInstance.getInnerActivityBehavior());
}
}
}
protected void addListeners(UserTaskActivityBehavior activityBehavior)
{
if (createTaskListener != null)
{
addTaskListenerAsFirst(createTaskListener, TaskListener.EVENTNAME_CREATE, activityBehavior);
}
if (completeTaskListener != null)
{
addTaskListenerAsFirst(completeTaskListener, TaskListener.EVENTNAME_COMPLETE, activityBehavior);
}
if(notificationTaskListener != null)
{
addTaskListenerAsLast(notificationTaskListener, TaskListener.EVENTNAME_CREATE, activityBehavior);
}
}
public void setCompleteTaskListener(TaskListener completeTaskListener)
{
this.completeTaskListener = completeTaskListener;
}
public void setCreateTaskListener(TaskListener createTaskListener)
{
this.createTaskListener = createTaskListener;
}
public void setNotificationTaskListener(TaskListener notificationTaskListener)
{
this.notificationTaskListener = notificationTaskListener;
}
protected void addTaskListenerAsFirst(TaskListener taskListener, String eventName, UserTaskActivityBehavior userTask)
{
getOrCreateListenerList(eventName, userTask).add(0, taskListener);
}
protected void addTaskListenerAsLast(TaskListener taskListener, String eventName, UserTaskActivityBehavior userTask)
{
getOrCreateListenerList(eventName, userTask).add(taskListener);
}
protected List<TaskListener> getOrCreateListenerList(String eventName, UserTaskActivityBehavior userTask)
{
List<TaskListener> taskEventListeners = userTask.getTaskDefinition().getTaskListeners().get(eventName);
if (taskEventListeners == null) {
taskEventListeners = new ArrayList<TaskListener>();
userTask.getTaskDefinition().getTaskListeners().put(eventName, taskEventListeners);
}
return taskEventListeners;
}
}
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.