Package org.activiti.engine.impl.history.parse

Source Code of org.activiti.engine.impl.history.parse.FlowNodeHistoryParseHandler

/* 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.history.parse;

import java.util.HashSet;
import java.util.Set;

import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BoundaryEvent;
import org.activiti.bpmn.model.BusinessRuleTask;
import org.activiti.bpmn.model.CallActivity;
import org.activiti.bpmn.model.EndEvent;
import org.activiti.bpmn.model.EventGateway;
import org.activiti.bpmn.model.ExclusiveGateway;
import org.activiti.bpmn.model.InclusiveGateway;
import org.activiti.bpmn.model.IntermediateCatchEvent;
import org.activiti.bpmn.model.ManualTask;
import org.activiti.bpmn.model.ParallelGateway;
import org.activiti.bpmn.model.ReceiveTask;
import org.activiti.bpmn.model.ScriptTask;
import org.activiti.bpmn.model.SendTask;
import org.activiti.bpmn.model.ServiceTask;
import org.activiti.bpmn.model.SubProcess;
import org.activiti.bpmn.model.Task;
import org.activiti.bpmn.model.ThrowEvent;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.impl.bpmn.parser.BpmnParse;
import org.activiti.engine.impl.history.handler.ActivityInstanceEndHandler;
import org.activiti.engine.impl.history.handler.ActivityInstanceStartHandler;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.parse.BpmnParseHandler;

/**
* @author Joram Barrez
*/
public class FlowNodeHistoryParseHandler implements BpmnParseHandler {
 
  protected static final ActivityInstanceEndHandler ACTIVITI_INSTANCE_END_LISTENER = new ActivityInstanceEndHandler();

  protected static final ActivityInstanceStartHandler ACTIVITY_INSTANCE_START_LISTENER = new ActivityInstanceStartHandler();
 
  protected static Set<Class<? extends BaseElement>> supportedElementClasses = new HashSet<Class<? extends BaseElement>>();
 
  static {
    supportedElementClasses.add(EndEvent.class);
    supportedElementClasses.add(ThrowEvent.class);
    supportedElementClasses.add(BoundaryEvent.class);
    supportedElementClasses.add(IntermediateCatchEvent.class);

    supportedElementClasses.add(ExclusiveGateway.class);
    supportedElementClasses.add(InclusiveGateway.class);
    supportedElementClasses.add(ParallelGateway.class);
    supportedElementClasses.add(EventGateway.class);
   
    supportedElementClasses.add(Task.class);
    supportedElementClasses.add(ManualTask.class);
    supportedElementClasses.add(ReceiveTask.class);
    supportedElementClasses.add(ScriptTask.class);
    supportedElementClasses.add(ServiceTask.class);
    supportedElementClasses.add(BusinessRuleTask.class);
    supportedElementClasses.add(SendTask.class);
    supportedElementClasses.add(UserTask.class);
   
    supportedElementClasses.add(CallActivity.class);
    supportedElementClasses.add(SubProcess.class);
  }
 
  public Set<Class< ? extends BaseElement>> getHandledTypes() {
    return supportedElementClasses;
  }

  public void parse(BpmnParse bpmnParse, BaseElement element) {
    ActivityImpl activity = bpmnParse.getCurrentScope().findActivity(element.getId());
    if(element instanceof BoundaryEvent) {
      // A boundary-event never receives an activity start-event
      activity.addExecutionListener(org.activiti.engine.impl.pvm.PvmEvent.EVENTNAME_END, ACTIVITY_INSTANCE_START_LISTENER, 0);
      activity.addExecutionListener(org.activiti.engine.impl.pvm.PvmEvent.EVENTNAME_END, ACTIVITI_INSTANCE_END_LISTENER, 1);
    } else {
      activity.addExecutionListener(org.activiti.engine.impl.pvm.PvmEvent.EVENTNAME_START, ACTIVITY_INSTANCE_START_LISTENER, 0);
      activity.addExecutionListener(org.activiti.engine.impl.pvm.PvmEvent.EVENTNAME_END, ACTIVITI_INSTANCE_END_LISTENER);
    }
  }

}
TOP

Related Classes of org.activiti.engine.impl.history.parse.FlowNodeHistoryParseHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.