All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jbpm.command.DeployProcessCommand Maven / Gradle / Ivy

The newest version!
package org.jbpm.command;

import java.io.ByteArrayInputStream;
import java.util.zip.ZipInputStream;

import org.jbpm.JbpmContext;
import org.jbpm.JbpmException;
import org.jbpm.graph.def.ProcessDefinition;

/**
 * Deploys a process, given as XML-String or process archive.
 * 
 * If both are given, the byte-array will be preferred The deployed process definition is
 * returned
 * 
 * @author Bernd Ruecker ([email protected])
 * 
 */
public class DeployProcessCommand extends AbstractGetObjectBaseCommand {

  private static final long serialVersionUID = -5861811926680981061L;

  private String xml;

  private byte[] par;

  public DeployProcessCommand() {
  }

  public DeployProcessCommand(byte[] par) {
    setPar(par);
  }

  public DeployProcessCommand(String xml) {
    setXml(xml);
  }

  /**
   * @return deployed ProcessDefinition
   */
  public Object execute(JbpmContext jbpmContext) throws Exception {
    if (par == null && xml == null) {
      throw new JbpmException("either xml string or process archive must be given.");
    }

    ProcessDefinition processDefinition;
    boolean debug = log.isDebugEnabled();
    if (par != null) {
      if (debug) log.debug("parsing process from archive");
      // Thanks to George Mournos who helped to improve this:
      ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(par));
      processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
    }
    else {
      if (debug) log.debug("parsing process from string");
      processDefinition = ProcessDefinition.parseXmlString(xml);
    }

    jbpmContext.deployProcessDefinition(processDefinition);
    if (debug) log.debug(processDefinition + " deployed successfully");

    return retrieveProcessDefinition(processDefinition);
  }

  public byte[] getPar() {
    return par;
  }

  public void setPar(byte[] par) {
    if (par == null) throw new IllegalArgumentException("process archive is null");
    this.par = par;
  }

  public String getXml() {
    return xml;
  }

  public void setXml(String xml) {
    if (xml == null) throw new IllegalArgumentException("xml is null");
    this.xml = xml;
  }

  // methods for fluent programming

  public DeployProcessCommand xml(String xml) {
    setXml(xml);
    return this;
  }

  public DeployProcessCommand par(byte[] par) {
    setPar(par);
    return this;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy