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

org.apache.ode.bpel.pmapi.InstanceManagement Maven / Gradle / Ivy

The newest version!
/*
 * 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.apache.ode.bpel.pmapi;

import org.w3c.dom.Element;

import javax.xml.namespace.QName;
import java.util.Collection;
import java.util.List;

/**
 * Interface to managing process instances.
 */
public interface InstanceManagement {

    /**
     * 

* Retrieve and returns information about all, or some process instances. * The request identifies the process instances using a filter that can * select instances with a given name, status, property values, etc. * Without a filter, the operation returns all process instances up to a * specified limit<.code>. The request also indicates which key fields * to use for ordering the results. *

* *

* The filter element can be used to narrow down the list of process definitions * by applying selection criteria. There are six filters that can be applied: *

    *
  • name -- Only process instances with this local name.

  • *
  • namespace -- Only process instances with this namespace URI.

  • *
  • status -- Only process instances with these status code(s).

  • *
  • started -- Only process instances started relative to this date/time.

  • *
  • last-active -- Only process instances last active relative to this date/time.

  • *
  • $property -- Only process instances with a correlation property equal to the * specified value.

  • *
* *

*

* The name and namespace filters can do full or partial name matching. Partial matching * occurs if either filter ends with an asterisk (*). These filters are not case sensitive, * for example name=my* will match MyProcess and my-process. If unspecified, the default * filter is name=* namespace=*. *

* *

* The status filter can be used to filter all process definitions based on six status codes: *

    *
  • active -- All currently active process instances (excludes instances in any other * state).

  • *
  • suspended -- All process instances that have not completed, but are currently * suspended.

  • *
  • error -- All process instances that have not completed, but are currently indicate an * error condition.

  • *
  • completed -- All successfully completed process instances (excludes instances in any * other state).

  • *
  • terminated -- All process instances that were terminated. *

  • faulted -- All process instances that encountered a fault (in the global scope). *

*

* The started filter can be used to filter all process instances started on or after a * particular date or date/time instant. The value of this filter is either an ISO-8601 * date or ISO-8601 date/time. For example, to find all process instances started on or * after September 1, 2005, use started>=20050901. Similarly, the last-active filter can * be used to filter all process instances based on their last active time. The last * active time records when the process last completed performing work, and either * completed or is now waiting to receive a message, a timeout or some other event. *

* *

* Each process instance has one or more properties that are set its instantiation, that * can be used to distinguish it from other process instances. In this version of the * specification, we only support properties instantiated as part of correlation sets * defined in the global scope of the process. For example, if a process instantiates a * correlation set that uses the property order-id, it is possible to filter that process * instance based on the value of that property. *

* *

* The property name is identified by the prefix $. If the property name is an NCName, * the filter will match all properties with that local name. If the property name is * {namespace}local, the filter will match all properties with the specified namespace URI * and local name. For example, to retrieve a list of all active process instances with a * property order-id that has the value 456, use status=active $order-id=456. *

* *

* By default the response returns process instances in no particular order. The order * element can be used to order the results by specifying a space-separated list of keys. * Each key can be prefixed with a plus sign '+' to specify ascending order, or a '-' * minus sign to specify descending order. Without a sign the default behavior is to * return process instances in ascending order. The currently supported odering keys are: *

    *
  • pid

  • -- Order based on the process identifier. *
  • name

  • -- Order based on the local name of the process instance. *
  • namespace

  • -- Order based on the namespace URI of the process instance. *
  • version

  • -- Order based on the version number. *
  • status

  • -- Order based on the status of the process instance. *
  • started

  • -- Order based on the process instance start date/time. *
  • last-active

  • -- Order based on the process instance last active date/time. *
* * @param filter filter string * @param order order keys * @param limit maximum number of instances to return * @return list of matching instances */ InstanceInfoListDocument listInstances(String filter, String order, int limit); /** * List instances and only return summary information about the instance, * combined with all correlation properties. * * @param filter See listInstances' filter argument * @param order See listInstances' order argument * @param limit maximum number of instances to return * @return list of matching instances */ InstanceInfoListDocument listInstancesSummary(String filter, String order, int limit); /** * @deprecated As of Ode 1.3, this method is deprecated in favor of * listInstances(filter, order, limit) */ InstanceInfoListDocument queryInstances(String query); /** * List all instances in the default (database) order. * @see #listInstances(String, String, int) * @return list of matching instances * @deprecated As of Ode 1.3, this method is deprecated in favor of * listInstancesSummary(filter, order, limit) */ InstanceInfoListDocument listAllInstances(); /** * List up to limit instances in the default (database) order. * @see #listInstances(String, String, int) * @param limit maximum number of instances to return * @return list of matching instances * @deprecated As of Ode 1.3, this method is deprecated in favor of * listInstancesSummary(filter, order, limit) */ InstanceInfoListDocument listAllInstancesWithLimit(int limit); /** * Get an instance by id. * @param iid * @return information about a specific instance * @throws InstanceNotFoundException TODO */ InstanceInfoDocument getInstanceInfo(Long iid) throws InstanceNotFoundException; /** * Get info about a scope instance by id, not including activity info. * @see #getScopeInfoWithActivity(String, boolean) * @param siid scope instance identifier * @return information about a specific scope instance */ ScopeInfoDocument getScopeInfo(String siid); /** * Get info about a scope instance by id, optionally including activity info. * @param siid scope instance identifier * @param activityInfo if true, include activity info * @return information about a specific scope instance */ ScopeInfoDocument getScopeInfoWithActivity(String siid, boolean activityInfo); /** * Get info about a variable. * @param scopeId scope identifier * @param varName variable name * @return information about variable (basically the value) */ VariableInfoDocument getVariableInfo(String scopeId, String varName) ; /** * Retrieve BPEL events. One may specify an "instance filter" and an "event filter" to * limit the number of events returned. The instance filter takes the exact same syntax * as for the {@link #listInstances(String, String, int)} method. The "event filter" employs * a similar syntax; the following properties may be filtered:
    *
  1. type - the event type
  2. *
  3. tstamp - the event timestamp
  4. *
* @param instanceFilter instance filter (if set,return only events for matching instances) * @param eventFilter event filter (event type and data range) * @return list of events */ EventInfoListDocument listEvents(String instanceFilter, String eventFilter, int maxCount); /** * Retrieve a timeline of BPEL events. * * @param instanceFilter instance filter (if set,return only events for matching instances) * @param eventFilter event filter (event type and data range) * @return list of stringified dates (in ISO format) */ List getEventTimeline(String instanceFilter, String eventFilter); /** * Changes the process state from active to suspended. this affects process instances that * are in the active or error states. * @param iid instance id * @return post-change instance information */ InstanceInfoDocument suspend(Long iid); /** * Resume the (previously suspended) instance. This operation only affects process instances * that are in the suspended state. * @param iid instance id * @return post-change instance information */ InstanceInfoDocument resume(Long iid); /** * Causes the process instance to terminate immediately, without a chance to * perform any fault handling or compensation. The process transitions to the * terminated state. It only affects process instances that are in the active, * suspended or error states. * @param iid instance id * @return post-change instance information */ InstanceInfoDocument terminate(Long iid); /** * * Causes the process instance to complete unsuccessfully by throwing the specified * fault in the global scope. The process is able to perform recovery using a fault * handler in the global scope, through termination handlers in nested scopes and * by invoking installed compensation handlers. The process will transition to the * faulted state. * @param iid instance id * @param faultname name of the fault * @param faultData fault data * @return post-change instance information */ InstanceInfoDocument fault(Long iid, QName faultname, Element faultData); /** * Delete the process instances matching the given filter. * @param filter instance filter (see {@link #listInstances(String, String, int)} ). * @return collection of instances identfiers, corresponding to deleted * instances */ Collection delete(String filter); /** * Performs an activity recovery action. * @param iid instance id (process) * @param aiid instance id (activity) * @param action recovery action (e.g. retry, fault) * @return post-change instance information */ InstanceInfoDocument recoverActivity(Long iid, Long aid, String action); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy