/* 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.activiti.engine.impl.bpmn.behavior; import org.activiti.engine.ActivitiException; import org.activiti.engine.impl.pvm.delegate.ActivityExecution; import org.activiti.engine.impl.pvm.delegate.SignallableActivityBehavior; /** * Superclass for all 'connectable' BPMN 2.0 process elements: tasks, gateways and events. * This means that any subclass can be the source or target of a sequenceflow. * * Corresponds with the notion of the 'flownode' in BPMN 2.0. * * @author Joram Barrez */ public abstract class FlowNodeActivityBehavior implements SignallableActivityBehavior { protected BpmnActivityBehavior bpmnActivityBehavior = new BpmnActivityBehavior(); /** * Default behaviour: just leave the activity with no extra functionality. */ public void execute(ActivityExecution execution) throws Exception { leave(execution); } /** * Default way of leaving a BPMN 2.0 activity: evaluate the conditions on the * outgoing sequence flow and take those that evaluate to true. */ protected void leave(ActivityExecution execution) { bpmnActivityBehavior.performDefaultOutgoingBehavior(execution); } protected void leaveIgnoreConditions(ActivityExecution activityContext) { bpmnActivityBehavior.performIgnoreConditionsOutgoingBehavior(activityContext); } public void signal(ActivityExecution execution, String signalName, Object signalData) throws Exception { // concrete activity behaviours that do accept signals should override this method; throw new ActivitiException("this activity doesn't accept signals"); } }