| /* |
| * 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 { |
| |
| /** |
| * <p> |
| * 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 <code>limit<.code>. The request also indicates which key fields |
| * to use for ordering the results. |
| * </p> |
| * |
| * <p> |
| * 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: |
| * <ul> |
| * <li><p>name -- Only process instances with this local name.</p></li> |
| * <li><p>namespace -- Only process instances with this namespace URI.</p></li> |
| * <li><p>status -- Only process instances with these status code(s).</p></li> |
| * <li><p>started -- Only process instances started relative to this date/time.</p></li> |
| * <li><p> last-active -- Only process instances last active relative to this date/time.</p></li> |
| * <li><p>$property -- Only process instances with a correlation property equal to the |
| * specified value.</p></li> |
| * </ul> |
| * |
| * </p> |
| * <p> |
| * 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=*. |
| * </p> |
| * |
| * <p> |
| * The status filter can be used to filter all process definitions based on six status codes: |
| * <ul> |
| * <li><p>active -- All currently active process instances (excludes instances in any other |
| * state).</p></li> |
| * <li><p>suspended -- All process instances that have not completed, but are currently |
| * suspended.</p></li> |
| * <li><p>error -- All process instances that have not completed, but are currently indicate an |
| * error condition.</p></li> |
| * <li><p>completed -- All successfully completed process instances (excludes instances in any |
| * other state). </p></li> |
| * <li><p>terminated -- All process instances that were terminated. |
| * <li><p>faulted -- All process instances that encountered a fault (in the global scope). |
| * </ul> |
| * <p> |
| * 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. |
| * </p> |
| * |
| * <p> |
| * 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. |
| * </p> |
| * |
| * <p> |
| * 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. |
| * </p> |
| * |
| * <p> |
| * 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: |
| * <ul> |
| * <li><p>pid</p></li> -- Order based on the process identifier. |
| * <li><p>name</p></li> -- Order based on the local name of the process instance. |
| * <li><p>namespace</p></li> -- Order based on the namespace URI of the process instance. |
| * <li><p>version</p></li> -- Order based on the version number. |
| * <li><p>status</p></li> -- Order based on the status of the process instance. |
| * <li><p>started</p></li> -- Order based on the process instance start date/time. |
| * <li><p>last-active</p></li> -- Order based on the process instance last active date/time. |
| * </ul> |
| * |
| * @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 <code>limit</code> 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 <code>true</code>, 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: <ol> |
| * <li><em>type</em> - the event type</li> |
| * <li><em>tstamp</em> - the event timestamp</li> |
| * </ol> |
| * @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<String> 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 |
| * <em>faulted</em> 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<Long> 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); |
| |
| } |