/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.model.api;
import de.rcenvironment.core.communication.common.LogicalNodeId;
/**
* Represents a runnable component installation on an RCE node that fulfills the semantic behaviour of an abstract {@link ComponentRevision}
* .
*
* In the user interface, {@link ComponentInstallation}s are selected when running a workflow to define where the individual workflow
* component nodes (which define a {@link ComponentRevision}) should be executed.
*
* @author Robert Mischke
*/
public interface ComponentInstallation extends Comparable<ComponentInstallation>, Cloneable {
/**
* @return the string form of this installation's location, which is a {@link LogicalNodeId}
*
* @see LogicalNodeId#getLogicalNodeIdString()
*/
String getNodeId();
/**
* @return the node id that defines this installation's location
*/
LogicalNodeId fetchNodeIdAsObject();
/**
* @return the {@link ComponentRevision} that this {@link ComponentInstallation} fulfills
*/
ComponentRevision getComponentRevision();
/**
* @return a string identifying this installation; only required to be unique per node
*/
String getInstallationId();
/**
* @return the number of maximum parallel instances, or <code>null</code> if unlimited
*/
Integer getMaximumCountOfParallelInstances();
/**
* @return <code>true</code> if {@link ComponentInstallation} is published (is made available for remote nodes), otherwise
* <code>false</code>
*/
boolean getIsPublished();
}