/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2013, MPL CodeInside http://codeinside.ru */ package ru.codeinside.gses.activiti.listeners; import org.activiti.engine.delegate.ExecutionListener; import org.activiti.engine.delegate.TaskListener; import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior; import org.activiti.engine.impl.bpmn.parser.AbstractBpmnParseListener; import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; import org.activiti.engine.impl.pvm.delegate.ActivityBehavior; import org.activiti.engine.impl.pvm.process.ActivityImpl; import org.activiti.engine.impl.pvm.process.ScopeImpl; import org.activiti.engine.impl.util.xml.Element; import ru.codeinside.gses.activiti.ReceiptEnsurance; final public class GsesBpmnParseListener extends AbstractBpmnParseListener { private final ReceiptEnsurance receiptEnsurance; public GsesBpmnParseListener(ReceiptEnsurance receiptEnsurance) { this.receiptEnsurance = receiptEnsurance; } public void parseProcess(Element processElement, ProcessDefinitionEntity processDefinition) { processDefinition.addExecutionListener(ExecutionListener.EVENTNAME_END, new EndProcessListener(false, receiptEnsurance), 0); processDefinition.addExecutionListener(ExecutionListener.EVENTNAME_START, new StartProcessListener(), 0); processDefinition.addExecutionListener(ExecutionListener.EVENTNAME_TAKE, new TakeProcessListener(), 0); } public void parseEndEvent(Element endEventElement, ScopeImpl scope, ActivityImpl activity) { activity.addExecutionListener(ExecutionListener.EVENTNAME_END, new EndProcessListener(true, receiptEnsurance), 0); } public void parseUserTask(Element userTaskElement, ScopeImpl scope, ActivityImpl activity) { ActivityBehavior activitybehaviour = activity.getActivityBehavior(); if (activitybehaviour instanceof UserTaskActivityBehavior) { UserTaskActivityBehavior userTaskActivity = (UserTaskActivityBehavior) activitybehaviour; TaskProcessListener taskListener = new TaskProcessListener(); userTaskActivity.getTaskDefinition().addTaskListener(TaskListener.EVENTNAME_CREATE, taskListener); userTaskActivity.getTaskDefinition().addTaskListener(TaskListener.EVENTNAME_COMPLETE, taskListener); userTaskActivity.getTaskDefinition().addTaskListener(TaskListener.EVENTNAME_ASSIGNMENT, taskListener); } } }