RemoteProcessManager.java :  » Workflow-Engines » bpmscript » org » bpmscript » remote » Java Open Source

Java Open Source » Workflow Engines » bpmscript 
bpmscript » org » bpmscript » remote » RemoteProcessManager.java
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.bpmscript.remote;

import java.util.ArrayList;
import java.util.List;

import javax.jbi.component.Component;
import javax.xml.namespace.QName;

import org.apache.servicemix.common.BaseComponent;
import org.bpmscript.BpmScriptException;
import org.bpmscript.IPagedResult;
import org.bpmscript.IProcess;
import org.bpmscript.IProcessInstance;
import org.bpmscript.IProcessInstanceManager;
import org.bpmscript.IProcessManager;
import org.bpmscript.IProcessSource;
import org.bpmscript.IProcessSourceName;
import org.bpmscript.IQuery;
import org.bpmscript.ProcessSourceName;
import org.bpmscript.jbi.IComponentAware;
import org.bpmscript.jbi.component.BpmScriptLifeCycle;
import org.bpmscript.jbi.component.ProcessEndpoint;

public class RemoteProcessManager implements IRemoteProcessManager, IComponentAware {

  private final transient org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory
      .getLog(getClass());
  
  private IProcessManager processManager = null;
  private IProcessInstanceManager processInstanceManager = null;
  private Component component;

  /* (non-Javadoc)
   * @see org.bpmscript.remote.IRemoteProcessManager#addSourceToProcess(java.lang.String, java.lang.String, java.lang.String, boolean)
   */
  public void addSourceToProcess(String processId, String name, String source, boolean main) throws BpmScriptException {
    processManager.addSourceToProcess(processId, name, source, main);
  }

  /* (non-Javadoc)
   * @see org.bpmscript.remote.IRemoteProcessManager#createProcess(java.lang.String)
   */
  public String createProcess(String source, String name) throws BpmScriptException {
    IProcess primaryProcess = processManager.getPrimaryProcess(name);
    if(primaryProcess == null) {
      log.info("new process " + name + " registering endpoint");
      String processId = processManager.createProcess(source, name, false);
      BpmScriptLifeCycle lifeCycle = (BpmScriptLifeCycle) component.getLifeCycle();
      ProcessEndpoint processEndpoint = new ProcessEndpoint();
      processEndpoint.setProcessId(processId);
      processEndpoint.setProcessInstanceManager(processInstanceManager);
      processEndpoint.setProcessExecutor(lifeCycle.getProcessExecutor());
      processEndpoint.setServiceUnit(lifeCycle.getProcessServiceUnit());
      QName service = new QName(lifeCycle.getDefaultNamespace(), name);
      processEndpoint.setService(service);
      processEndpoint.setEndpoint(name);
      lifeCycle.getProcessServiceUnit().addEndpoint(processEndpoint);
      BaseComponent baseComponent = (BaseComponent) component;
      baseComponent.getRegistry().registerEndpoint(processEndpoint);
      log.info("endpoint " + service + " registered");
      try {
        processEndpoint.activate();
        processEndpoint.start();
        log.info("endpoint " + service + " started");
      } catch (Exception e) {
        throw new BpmScriptException(e);
      }
      return processId;
    } else {
      String processId = processManager.createProcess(source, name, primaryProcess.isPinned());
      return processId;
    }
  }

  /* (non-Javadoc)
   * @see org.bpmscript.remote.IRemoteProcessManager#getMainSource(java.lang.String)
   */
  public IProcessSource getMainSource(String processId) throws BpmScriptException {
    return processManager.getMainSource(processId);
  }

  /* (non-Javadoc)
   * @see org.bpmscript.remote.IRemoteProcessManager#getProcess(java.lang.String)
   */
  public IProcess getProcess(String processId) throws BpmScriptException {
    return processManager.getProcess(processId);
  }

  /* (non-Javadoc)
   * @see org.bpmscript.remote.IRemoteProcessManager#getProcesses()
   */
  public List<IProcess> getPrimaryProcesses() throws BpmScriptException {
    return processManager.getPrimaryProcesses();
  }

  /* (non-Javadoc)
   * @see org.bpmscript.remote.IRemoteProcessManager#getProcessSources(java.lang.String)
   */
  public List<IProcessSource> getProcessSources(String processId) throws BpmScriptException {
    return processManager.getProcessSources(processId);
  }

  /* (non-Javadoc)
   * @see org.bpmscript.remote.IRemoteProcessManager#setProcessAsPrimary(java.lang.String)
   */
  public void setProcessAsPrimary(String processId) throws BpmScriptException {
    processManager.setProcessAsPrimary(processId);
  }

  public void setProcessManager(IProcessManager processManager) {
    this.processManager = processManager;
  }

  public IProcessInstance getProcessInstance(String processInstanceId) throws BpmScriptException {
    return this.processInstanceManager.getProcessInstance(processInstanceId);
  }

  public IProcessSource getProcessSource(String processSourceId) throws BpmScriptException {
    return this.processManager.getProcessSource(processSourceId);
  }

  public List<IProcessSourceName> getProcessSourceNames(String processId) throws BpmScriptException {
    List<IProcessSource> processSources = processManager.getProcessSources(processId);
    List<IProcessSourceName> result = new ArrayList<IProcessSourceName>();
    for (IProcessSource source : processSources) {
      result.add(new ProcessSourceName(source.getId(), source.getName(), source.isMain()));
    }
    return result;
  }

  public List<IProcessInstance> getChildProcessInstances(String processInstanceId) throws BpmScriptException {
    return processInstanceManager.getChildProcessInstances(processInstanceId);
  }

  public IPagedResult<IProcessInstance> getProcessInstances(IQuery query) throws BpmScriptException {
    return processInstanceManager.getProcessInstances(query);
  }

  public IProcess getPrimaryProcess(String name) throws BpmScriptException {
    return processManager.getPrimaryProcess(name);
  }

  public void setComponent(Component component) {
    this.component = component;
  }

  public IProcessInstanceManager getProcessInstanceManager() {
    return processInstanceManager;
  }

  public void setProcessInstanceManager(
      IProcessInstanceManager processInstanceManager) {
    this.processInstanceManager = processInstanceManager;
  }

  public List<IProcess> getProcessVersions(String name) throws BpmScriptException {
    return this.processManager.getProcessVersions(name);
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.