Package org.drools.process.instance

Source Code of org.drools.process.instance.AbstractProcessInstanceFactory

package org.drools.process.instance;

import java.util.Map;

import org.drools.WorkingMemory;
import org.drools.common.InternalWorkingMemory;
import org.drools.definition.process.Process;
import org.drools.process.core.ContextContainer;
import org.drools.process.core.context.variable.VariableScope;
import org.drools.process.instance.context.variable.VariableScopeInstance;

public abstract class AbstractProcessInstanceFactory implements ProcessInstanceFactory {
 
  public ProcessInstance createProcessInstance(Process process,
                                           WorkingMemory workingMemory,
                                           Map<String, Object> parameters) {
    ProcessInstance processInstance = (ProcessInstance) createProcessInstance();
    processInstance.setWorkingMemory( (InternalWorkingMemory) workingMemory );
        processInstance.setProcess( process );
       
        // set variable default values
        // TODO: should be part of processInstanceImpl?
        VariableScope variableScope = (VariableScope) ((ContextContainer) process).getDefaultContext( VariableScope.VARIABLE_SCOPE );
        VariableScopeInstance variableScopeInstance = (VariableScopeInstance) processInstance.getContextInstance( VariableScope.VARIABLE_SCOPE );
        // set input parameters
        if ( parameters != null ) {
            if ( variableScope != null ) {
                for ( Map.Entry<String, Object> entry : parameters.entrySet() ) {
                    variableScopeInstance.setVariable( entry.getKey(),
                                                       entry.getValue() );
                }
            } else {
                throw new IllegalArgumentException( "This process does not support parameters!" );
            }
        }
       
        ((InternalWorkingMemory) workingMemory).getProcessInstanceManager()
          .addProcessInstance( processInstance );
        return processInstance;
  }
 
  public abstract ProcessInstance createProcessInstance();

}
TOP

Related Classes of org.drools.process.instance.AbstractProcessInstanceFactory

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.