Process API

filenet.vw.api
Class VWRoster

java.lang.Object
  extended by filenet.vw.api.VWRoster
All Implemented Interfaces:
java.io.Serializable

public final class VWRoster
extends java.lang.Object
implements java.io.Serializable

Use this class to access the contents of a roster or manage running workflows. Create an instance of this class with VWSession.getRoster(). Create a query object for an instance of this class with VWRoster.createQuery.

See Also:
VWSession, Serialized Form

Field Summary
static int QUERY_GET_NO_SYSTEM_FIELDS
          Value of 1024. Include this value in the queryFlags parameter of the createQuery() method to return objects without system fields.
static int QUERY_GET_NO_TRANSLATED_SYSTEM_FIELDS
          Value of 2048. Include this value in the queryFlags parameter of the createQuery() method to return objects without translated fields.
static int QUERY_GET_SYSTEM_FIELDS
          Deprecated. Not replaced. This is the default.
static int QUERY_GET_TRANSLATED_SYSTEM_FIELDS
          Deprecated. Not replaced. This is the default.
static int QUERY_MAX_VALUES_INCLUSIVE
          Value of 64. Pass this value in the queryFlags parameter of the createQuery method to specify the inclusion of maximum search values.
static int QUERY_MIN_VALUES_INCLUSIVE
          Value of 32. Pass this value in the queryFlags parameter of the createQuery method to specify the inclusion of minimum search values.
static int QUERY_NO_OPTIONS
          Value of 0. Pass this value in the queryFlags parameter of the createQuery method to specify no search option.
static int QUERY_READ_UNWRITABLE
          Value of 4. Pass this value in the queryFlags parameter of the createQuery method to specify the return of Read-only work items.
static int QUERY_RESOLVE_NAMES
          Value of 8192.
 
Method Summary
static java.lang.String _get_FILE_AUTHOR()
          For FileNet internal use only, do not call.
static java.lang.String _get_FILE_DATE()
          For FileNet internal use only, do not call.
static java.lang.String _get_FILE_REVISION()
          For FileNet internal use only, do not call.
 VWRosterQuery createQuery(java.lang.String indexName, java.lang.Object[] minValues, java.lang.Object[] maxValues, int queryFlags, java.lang.String filter, java.lang.Object[] substitutionVars, int fetchType)
          Performs a filtered fetch of roster items.
 int fetchCount()
          Gets an integer that indicates the number of work items in the roster.
 VWRosterDefinition fetchRosterDefinition()
          Fetches the definition for this roster.
 VWRosterStats fetchStatistics(java.util.Date startTime, java.util.Date endTime, int timeUnits)
          Fetches statistical information for the roster, given a start and stop time.
 java.lang.String getAuthoredName()
          Return the authored name
 int getBufferSize()
          Gets an integer value indicating the maximum number of elements to return in a fetch.
 int getCount()
          Deprecated. Replaced by fetchCount()
 java.lang.String getName()
          Return the translated name
 VWSession getServiceSession()
          Identifies the session that originated the search object.
 void setBufferSize(int newSize)
          Sets the integer value for the maximum number of elements to return in a fetch.
 VWRosterQuery startQuery(java.lang.String indexName, java.lang.Object[] minValues, java.lang.Object[] maxValues, int queryFlags, java.lang.String filter, java.lang.Object[] substitutionVars)
          Deprecated. Replaced by createQuery
 java.lang.String toString()
          Gets the roster name.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

QUERY_NO_OPTIONS

public static final int QUERY_NO_OPTIONS
Value of 0. Pass this value in the queryFlags parameter of the createQuery method to specify no search option.

After passing this value, the returned work items are unlocked, unbound, and writable. If you use this flag in conjunction with another flag, the value of the other flag becomes the value input to the parameter [for example, 0(this value) + n(another flag value) = n(the other flag value)].

See Also:
Constant Field Values

QUERY_READ_UNWRITABLE

public static final int QUERY_READ_UNWRITABLE
Value of 4. Pass this value in the queryFlags parameter of the createQuery method to specify the return of Read-only work items.

Setting this flag causes the application to read unwritable work items; not setting it causes the return of only writable work items.

See Also:
Constant Field Values

QUERY_MIN_VALUES_INCLUSIVE

public static final int QUERY_MIN_VALUES_INCLUSIVE
Value of 32. Pass this value in the queryFlags parameter of the createQuery method to specify the inclusion of minimum search values. Minimum search values can be applied as "greater than" by default, or they can be applied as "greater than or equal to" by using this flag value.

See Also:
Constant Field Values

QUERY_MAX_VALUES_INCLUSIVE

public static final int QUERY_MAX_VALUES_INCLUSIVE
Value of 64. Pass this value in the queryFlags parameter of the createQuery method to specify the inclusion of maximum search values. Maximum search values can be applied as "less than" by default, or they can be applied as "less than or equal to" by using this flag value.

See Also:
Constant Field Values

QUERY_GET_SYSTEM_FIELDS

public static final int QUERY_GET_SYSTEM_FIELDS
Deprecated. Not replaced. This is the default.
Value of 256. Pass this value in the queryFlags parameter of the createQuery method to specify the return of system field names and values.

Use the system fields for additional queries on objects. A method that requires translation returns a default value (null, 0, or false). Helper methods require the QUERY_GET_TRANSLATED_SYSTEM_FIELDS to function properly.

See Also:
Constant Field Values

QUERY_GET_TRANSLATED_SYSTEM_FIELDS

public static final int QUERY_GET_TRANSLATED_SYSTEM_FIELDS
Deprecated. Not replaced. This is the default.
Value of 512. Pass this value in the queryFlags parameter of the createQuery method to specify the return of system field names and translated system field values. Use these fields in the helper methods for each element.

See Also:
Constant Field Values

QUERY_GET_NO_SYSTEM_FIELDS

public static final int QUERY_GET_NO_SYSTEM_FIELDS
Value of 1024. Include this value in the queryFlags parameter of the createQuery() method to return objects without system fields.

System fields and translated system fields are used in the helper methods for each object. Note that VWWorkObject objects have system fields that are not present in VWStepElement objects.

A method that requires translation returns a default value (null, 0, or false) for this flag. This is because related helper methods require the system fields and translated system fields to function properly.

See Also:
Constant Field Values

QUERY_GET_NO_TRANSLATED_SYSTEM_FIELDS

public static final int QUERY_GET_NO_TRANSLATED_SYSTEM_FIELDS
Value of 2048. Include this value in the queryFlags parameter of the createQuery() method to return objects without translated fields.

Use for performance enhancement when methods on a retrieved object are not needed and only the returned data itself is needed.

System fields and translated system fields are used in the helper methods for each object. Note that VWWorkObject objects have system fields that are not present in VWStepElement objects. A VWStepElement object contains only parameter data if this flag is used. However, a VWWorkObject object will contain system fields even if this flag is used.

A method that requires translation returns a default value (null, 0, or false) for this flag. This is because related helper methods require the system fields and translated system fields to function properly.

See Also:
Constant Field Values

QUERY_RESOLVE_NAMES

public static final int QUERY_RESOLVE_NAMES
Value of 8192. Flag Indicates query is to parse the maxValues, minValues, filter and substitutionVars values for user name and class substitution of strings to IDs.

This supports conversion of user names to ids for Process Engine Web Services to perform queries using user ID fields within an index or filter (used when querying for rosters, queues and logs). Process Engine Web Services is stateless, so the conversion of name to ID within the index and filter values is done on the PE server.

See Also:
VWQuery#QUERY_RESOLVE_NAMES, VWLog.QUERY_RESOLVE_NAMES, Constant Field Values
Method Detail

_get_FILE_DATE

public static java.lang.String _get_FILE_DATE()
For FileNet internal use only, do not call.

Returns:
the date

_get_FILE_AUTHOR

public static java.lang.String _get_FILE_AUTHOR()
For FileNet internal use only, do not call.

Returns:
the author

_get_FILE_REVISION

public static java.lang.String _get_FILE_REVISION()
For FileNet internal use only, do not call.

Returns:
the file revision

getCount

public int getCount()
             throws VWException
Deprecated. Replaced by fetchCount()

Gets an integer value that indicates the size of the roster.

Returns:
An integer value indicating the number of work items in the roster.
Throws:
VWException - Thrown if the roster size cannot be determined.

fetchCount

public int fetchCount()
               throws VWException
Gets an integer that indicates the number of work items in the roster.

Returns:
An integer value indicating the number of work items in the roster.
Throws:
VWException - Thrown if the roster size cannot be determined.
Since:
VWWS3.10

startQuery

public VWRosterQuery startQuery(java.lang.String indexName,
                                java.lang.Object[] minValues,
                                java.lang.Object[] maxValues,
                                int queryFlags,
                                java.lang.String filter,
                                java.lang.Object[] substitutionVars)
                         throws VWException
Deprecated. Replaced by createQuery

Fetches roster items.

Specifying search conditions in this method causes the retrieval of roster items based on a filter condition and a range in a search index. Use the following to limit your search:

A roster item must match all fetch criteria specified in the parameters to return.

Parameters:
indexName - The name of the database search index for the roster. Specify either the name assigned to the index at the Configuration Console (this may be a user-defined search field, a system search field, or both) or a system search field name.

The standard system search fields for rosters are listed below:

  • F_WobNum: work item number of type byte[]. For an MS SQL server, pass the hex version of the field value; for example, if F_WobNum were C4BCB36717A2D3119E0F00C04F8C7570, pass 0xC4BCB36717A2D3119E0F00C04F8C7570.
  • F_WobTag: Predefined as F_Tag(of type string)

minValues - An array of objects containing the minimum values with which to compare the index fields.

The type of the array elements must correspond to the field types in the search index. If the number of minValues array elements is smaller than the number of search fields, the application assumes the fields at the end of the search index have no value. The array element must be of a Java type that corresponds to a Process type (integer, float, boolean, or string). For example, java.lang.Integer corresponds to integer.

For example, the index named 'myIndex' is an integer, followed by a string, followed by a boolean, followed by a float, followed by a time-type value:

     myIndex = integerA + stringB + booleanC + floatD + timeE
     

Set sample minimum values, against which to compare the index, as follows:

     Object[] minValues = {new Integer(1000), "aardvark",
    new Boolean(true), new Float(0012345678.369), new Time([date&time value])}
maxValues - An array of maximum values with which to compare the index fields.

The type of the array elements must correspond to the field types in the search index. If the number of maxValues array elements is smaller than the number of search fields, the application assumes that the fields at the end of the search index have no value. The array element must be of a Java type that corresponds to a Process type (integer, float, boolean, or string). For example, java.lang.Integer corresponds to integer.

queryFlags - An integer value that specifies the search options Setting this parameter refines the search for the work items specified by the search index. Use | and + operators to combine the options. See the Field Detail section for description of these query flags:

  • 0: No query (QUERY_NO_OPTIONS)
  • 4: Read-only (QUERY_READ_UNWRITABLE)
  • 32: Include minValues value (QUERY_MIN_VALUE_INCLUSIVE)
  • 64: Include maxValues value (QUERY_MAX_VALUE_INCLUSIVE)

filter - A string containing a SQL statement used to specify filter conditions (used with values input to the substitutionVars parameter).

Use this parameter with the parameter settings for minValues, maxValues, and queryFlags to refine the your search. Input a SQL where-clause that contains a search field name on the left side of a boolean operator and a substitution placeholder on the right side of the operator.

For example: if filter input is similar to the following SQL statements:

    integerA < :A AND stringB =:A

This filter will make the object pass the filter only if it meets two conditions:

  • The integer, integerA, must be less than the value of the placeholder, A.
  • The string, stringB, must be equal to the value of the placeholder, A.

In the SQL statement, a colon (:) precedes each placeholder on the right side of the statement.

A search field must be a variable or a roster field, for example: F_Tag=:name. Using this filter requires that you substitute the placeholder to the right of each colon with a value you pass to the corresponding substitutionVars parameter.

substitutionVars - An array of objects that contain the values to substitute for the variable names to the right of the colons in the SQL statement you passed to the filter parameter.

A substitution variable must begin with colon. If there is no variable in the filter parameter, the values for this parameter can be null. The array elements in this parameter substitute for the corresponding array elements in the filter parameter array. The filter parameter array elements act as place holders and must be substituted. For example, if three names are :A, a user needs three distinct substitution variables.

For example, if you pass the following:

    {new Integer(1000),"Smith"}

to the substitutionVars parameter to accompany the example for filter input, the object has to meet the following conditions to return:

    integerA < 1000 AND stringB = "Smith"

Note: Time columns in the database can be exposed as either 32-bit (4 byte - can only support dates earlier than 2038) or 64-bit (8 byte - can support dates beyond 2038). If a user has a filter on a 32-bit time field, the value bound to the bind variable in the query using that filter must be a value that can fit in 32-bits, otherwise the query won't return the expected result -

example : "my32bitColumn < :a", will not work correctly if bound to a date value like "11/11/2099", It will work fine if you bind it to a value like "11/11/2037".

Java code example, assume the roster being queried contains row with two exposed fields, atime64 (64-bit) and atime32 (32-bit) values, both fields have the same value - a date like "11/11/2008 12:12:12"

With this filter :

   String filter = "atime64 < :a AND atime32 < :b"; 

the following substitution variables will return the row when fetching after using the filter and subvars in a query:

   Object[] subsVars = {sdf.parse("2040-01-01 12:00:00"), sdf.parse("2020-01-01 12:00:00")}; // works 

But the following filter will NOT find the row, because it binds a value that won't fit in 32-bits to a 32-bit column

   Object[] subsVars = {sdf.parse("2040-01-01 12:00:00"), sdf.parse("2040-01-01 12:00:00")}; // doesn't work. 

Returns:
A VWRosterQuery object for the queue being from which items are fetched.
Throws:
VWException - Thrown if the method cannot fetch roster items.

createQuery

public VWRosterQuery createQuery(java.lang.String indexName,
                                 java.lang.Object[] minValues,
                                 java.lang.Object[] maxValues,
                                 int queryFlags,
                                 java.lang.String filter,
                                 java.lang.Object[] substitutionVars,
                                 int fetchType)
                          throws VWException
Performs a filtered fetch of roster items. The filters specify search conditions flexibly and include setting a range for the search index. If a translation source exists, the authored names of the queue items are translated. The authored names must be specified for the query parameters.

This method employs the following kinds of condition descriptors to define the filters:

For this method to successfully return a given roster item, the roster item must pass all the fetch criteria specified by the input parameters.

Parameters:
indexName - The name of the database search index for the queue. Enter either the name assigned to the index at the Configuration Console or a system field name.

Note: An index assigned through the Configuration Console can be a user or system-defined search field, or it can be both.

The standard system search fields for queues are:

  • F_WobNum: work item number of type byte[].
    For MS SQL, use the syntax: 0x.
    For DB2, use the syntax: x''.
    For Oracle, use the syntax: ''
  • F_WobTag: Predefined as F_Tag (type string)
minValues - An array of objects containing the minimum values with which to compare the index fields.

Array element data types must match the corresponding data types in the search index. If the number of minValues array elements is smaller than the number of search fields, the unmatched search fields are ignored. The array elements must be of a Java type that corresponds to a Process Engine type (integer, float, boolean, or string). Strings must be the authored strings.

For example:

     myIndex = integerA + stringB + booleanC;
     Object[] minValues = {new Integer(1000), "aardvark", new Boolean(true)};
 
maxValues - An array of objects containing the maximum values with which to compare the index fields.

Array element data types must match the corresponding data types in the search index. If the number of maxValues array elements is smaller than the number of search fields, the unmatched search fields are ignored. The array elements must be of a Java type that corresponds to a Process Engine type (integer, float, boolean, or string). Strings must be the authored strings.

queryFlags - An integer value that specifies the search options.

Setting this parameter refines the search for the work items specified by the search index. Use the | and + operators to combine the the flags. See the query properties for this instance and the QUERY_* properties on VWQuery for descriptions of the possible query flags.

filter - A SQL WHERE clause used as a filter, and having placeholder variables that are replaced by values in the substitutionVars parameter.

Use this parameter with the parameter settings for minValues, maxValues, and queryFlags to refine the search. The SQL WHERE clause should contain a search field name on the left side of a boolean operator and a placeholder variable on the right side of the operator.

The field names are processed as SQL column names. For this reason, it is important that you do no use SQL function names as field names.

For example:

   integerA < :A AND stringB =:B 

specifies that an object satisfies the filter if it meets two conditions:

  1. The integer search field, integerA, must be less than the value of the placeholder variable A.
  2. The string search field, stringB, must be equal to the value of the next placeholder variable B.

Use the following guidelines when creating the filter:

  • In a SQL WHERE clause, a colon (:) precedes each placeholder variable on the right side of the statement.
  • The search field can be a variable, a system field, or a user-defined field (the authored string).
  • When the filter parameter is processed, each placeholder variable is replaced (in corresponding order) with a value specified in the substitutionVars parameter.
substitutionVars - An array of objects containing the values to substitute for the placeholder variables specified in the SQL WHERE clause for the filter parameter.

A VWWorkObjectNumber object can be used here in place of F_WobNum and F_WorkFlowNumber. Queries to DB2 databases must use VWWorkObjectNumber instead of F_WobNum or F_WorkFlowNumber.

If there is no placeholder variable in the filter parameter, the values for the substitutionVars parameter will be ignored (and can be null). The array elements in this parameter are substituted, in corresponding order, for the placeholder variables in the filter parameter.

Note: When using special SQL characters (such as, %), these characters need to be contained within the substitution string, and the entire substitution string must be quoted.

For example, if the filter parameter contains three placeholder variables specified as ":A", there must be three corresponding substitution variables.

For example:

   {new Integer(1000),"Smith"} 

This substitutionVars parameter would have a corresponding filter parameter of the following:

   integerA < 1000 AND stringB = "Smith" 

Note: Time columns in the database can be exposed as either 32-bit (can only support dates earlier than 2038) or 64-bit (can support dates beyond 2038). If a user has a filter on a 32-bit time field, the value bound to the bind variable in the query using that filter must be a value that can fit in 32-bits, otherwise the query will not return the expected result. For example:

    "my32bitColumn < :a"

will not work correctly if bound to the date value "11/11/2099"; however, binding it to the value "11/11/2037" will return the expected result.

As a further example, assume the roster being queried contains a row with two exposed fields, atime64 (64-bit) and atime32 (32-bit), and both fields have the date/time value "11/11/2008 12:12:12".

Using the filter:

    String filter = "atime64 < :a AND atime32 < :b"; 

the following substitution variables will return the fetched row after applying the filter and substitutionVars in the query:

    Object[] subsVars = {sdf.parse("2040-01-01 12:00:00"), sdf.parse("2020-01-01 12:00:00")}; // works 

However, the following query will not be able to fetch the row, because it binds a value that will not fit in a 32-bit column:

    Object[] subsVars = {sdf.parse("2040-01-01 12:00:00"), sdf.parse("2040-01-01 12:00:00")}; // does not work. 
fetchType - An integer value associated with the element type to be retrieved using the object returned by VWRosterQuery. Valid element type values must be one of the following:
  • 1: Work object (FETCH_TYPE_WORKOBJECT)
  • 2: Instruction element (FETCH_TYPE_INSTRUCTION_ELEMENT)
  • 3: Queue element (FETCH_TYPE_QUEUE_ELEMENT)
  • 5: Step element (FETCH_TYPE_STEP_ELEMENT)
Returns:
A VWRosterQuery instance from which items are fetched by iteration with the VWRosterQuery.next method.

A user must have appropriate access privileges to the queue to fetch work items (using the FETCH_TYPE_WORKOBJECT fetchType) or queue elements (using the FETCH_TYPE_QUEUE_ELEMENT fetchType). However, users may fetch their own instruction elements or step elements, regardless of queue access privilege.

Throws:
VWException - Thrown if the specified fetch type is invalid.
Since:
VWWS3.10
See Also:
VWFetchType

getServiceSession

public VWSession getServiceSession()
Identifies the session that originated the search object.

Returns:
The VWSession object that created this VWRoster object.

fetchStatistics

public VWRosterStats fetchStatistics(java.util.Date startTime,
                                     java.util.Date endTime,
                                     int timeUnits)
                              throws VWException
Fetches statistical information for the roster, given a start and stop time. If a translation source exists, the authored information is translated.

Parameters:
startTime - A date value indicating the time to start gathering statistics.
endTime - A date value indicating the time to stop gathering statistics.
timeUnits - An integer value indicating the unit of time for gathering statistics. Valid integer values for associated with the time units are as follows:
  • 1: Minute
  • 2: Hour
  • 3: Day
  • 4: Week
  • 5: Month
  • 6: Year
Returns:
A VWRosterStats object containing roster statistics information. If a translation source exists, the translated statistical information is returned; otherwise, the authored information is returned.
Throws:
VWException - Thrown if the statistical information for the roster cannot be retrieved.
Since:
VWWS3.10
See Also:
VWTimeUnitType.MINUTES, VWTimeUnitType.HOURS, VWTimeUnitType.DAYS, VWTimeUnitType.WEEKS, VWTimeUnitType.MONTHS, VWTimeUnitType.YEARS

toString

public java.lang.String toString()
Gets the roster name. If a translation source exists, the authored name is translated.

Overrides:
toString in class java.lang.Object
Returns:
A String containing the localized, translated roster name, if a translation source exists; otherwise the authored name is returned.

getBufferSize

public int getBufferSize()
Gets an integer value indicating the maximum number of elements to return in a fetch. The default number is 50.

Returns:
An integer value indicating the maximum number of elements to return in a fetch operation.
Since:
VWWS3.10

setBufferSize

public void setBufferSize(int newSize)
                   throws VWException
Sets the integer value for the maximum number of elements to return in a fetch. The default value is 50.

Parameters:
newSize - An integer value specifying the maximum number of elements to return in a fetch. The value must be greater than 0.
Throws:
VWException - Thrown if the buffer size specified in the newSize parameter is less than or equal to 0.
Since:
VWWS3.10

fetchRosterDefinition

public VWRosterDefinition fetchRosterDefinition()
                                         throws VWException
Fetches the definition for this roster. The roster definition contains search fields, search indexes, security information, and the server location of the roster. If a translation source exists, the authored information is translated.

Returns:
A VWRosterDefinition object that contains information about the roster. If a translation source exists, the translated roster information is returned; otherwise, the authored information is returned.
Throws:
VWException - Thrown if the definition for this roster cannot be retrieved.
Since:
VWWS3.10

getAuthoredName

public java.lang.String getAuthoredName()
Return the authored name

Returns:
the authored name
Since:
P8 4.0

getName

public java.lang.String getName()
Return the translated name

Returns:
the translated name

Process API

© Copyright IBM Corporation 2002, 2008. All rights reserved.