/*
Copyright 2002-2005 The Members of the OSS through Java(TM) Initiative.
All rights reserved. Use is subject to license terms.
*/

package javax.oss;

import java.io.Serializable;

/**
 * Named Update Procedures are used to implement complex Update operations.
 * <p>
 * Named update procedures are similar to named queries and allow implementing
 * complex atomic update operations. The result of the execution of a named update
 * procedure will typically be the creation, removal or update of  a collection
 * of managed entity values. As in the case of named queries, the template-based
 * JVT operations are not sufficient to implement such complex operations.
 * <p>
 * @see javax.oss.JVTSession
 *
 * @author OSS through Java Initiative, Vincent Perrot Sun Microsystems Inc.
 * @version 1.2
 * @since August 2005
 * @ossj:complexdata
 */

public interface UpdateProcedureValue extends AttributeAccess, Serializable, Cloneable {
    
    /**
     * This String defines the type of update procedure. <br>
     * This value shall be overloaded according to type, vendor or technology specific interface
     * defining the new update procedure.
     * The UPDATE_TYPE shall correspond to the &lt;interface&gt;.class.getName();
     *  <br>It's value is "javax.oss.UpdateProcedureValue".
     */
    public static final String UPDATE_TYPE = "javax.oss.UpdateProcedureValue";
    
    /**
     * Deep copy this update procedure value.
     *
     * @return deep copy of this update procedure value.
     */
    public Object clone();   
    
}
