adTempus API
PreviousUpNext
Changes in Version 3.0

adTempus 3.0 includes several major architectural changes, and numerous other less extensive changes. Due to the nature of some of these changes it was not feasible to maintain full backward compatibility in the API. All API developers should review the sections that follow for information on changes that may be required for your code to work with adTempus 3.0. 

 

Version Interoperability

adTempus 3.0 uses a different communication mechanism than prior versions. As a result, clients (including the API and the Console) from version 3.0 and later cannot communicate with servers running earlier versions, and vice-versa. However, it is possible to install the 2.x and 3.x clients on the same computer. See the Installation topic for more information. 

Future versions of adTempus will provide better support for cross-version communication. 

 

Breaking Changes to Collections

Prior to version 3.0, collection classes in the API used 1-based indexing, consistent with the older COM programming convention. That is, the range of valid indexes for a collection ran from 1 to Size, where Size is the number of items in the collection. In version 3.0 we have converted all collections to use 0-based indexing, as used in C++ and .NET programming conventions. That is, the range of valid indexes for a collection runs from 0 to Size-1, where Size is the number of items in the collection. 

As a result, you will need to review your code and change the indexing anywhere you use collections (e.g., Job.Steps). Be sure to change all "for" loops and anywhere you use a statement like "collection(1)" with the assumption that 1 is the first index. 

Version 3.0 adds support for enumerators to all collections in the API, so instead of changing to 0-based indexing you can in most cases eliminate indexing altogether. For example, a block of code like this: 

 

    dim i as integer
    dim aStep as IJobStep
    
    for i=1 to job.steps
        aStep=job.steps(i)
    next

 

can be replaced by 

 

    dim i as integer
    dim aStep as IJobStep
    
    for i=0 to job.steps-1
        aStep=job.steps(i)
        ...
    next

 

or by 

 

    dim aStep as IJobStep
    
    for each aStep in job.steps
        ...
    next

 

Changes to Job Name Uniqueness

Prior to version 3.0, each job's name was required to be unique across the entire adTempus instance. Beginning in 3.0, the name must only be unique within the group to which the job belongs. Therefore your existing code to fetch a job based on its name may return the wrong job, if more than one exists with the same name. See the Getting a Job by Name example for updated code to fetch a job given its name and group information, or to fetch all jobs with a given name. 

 

Changes to Job Execution

The eoRunOnAgents value for the ExecutionOptionsEnum has been eliminated, and a Job will by default run on any Agents associated with its Queue. If you do not want the job to run on Agents, you must specify the eoRunOnMasterOnly option when executing a job. 

New methods are available to provide more control over job execution. See Job.ExecuteJob and JobAgentJoin.ExecuteJob. The old Execute and ExecuteFromStep methods are retained for backward compatibility. 

See the Starting a Job example for a demonstration of the new ExecuteJob method. 

 

Changes to Job Credentials

A user ID and password can no longer be assigned directly to a Job. Instead, you must retrieve or create a CredentialProfile for the user account, and assign that to the job. See the Credential Profile Retrieval example for code to get or create a CredentialProfile, and the Simple Job Creation example for an example of how to assign the profile to the job. 

 

Changes to Distributed Scheduling

Prior to version 3.0, each job had its own Distributed Scheduling settings, and RemoteAgents were assigned directly to jobs. Beginning with version 3.0, Distributed Scheduling settings are found on the JobQueue, and a Job uses the settings of the Queue to which it is assigned. The RemoteAgents collection still exists to provide information about the status of the Job on each Agent, but this collection is read-only. 

 

ADErrorHandling Component Eliminated

Earlier versions of the API used the ADError and ADErrors classes from the ADErrorHandling component. This component has been eliminated, and the classes it contained are now found in the ArcanaDevelopment.adTempus.Client component. 

 

Changes to Export/Import

The API for exporting and importing has been completely revamped. See the ImportExportFacility topic for more information on exporting and importing. 

 

Other Changes

New classes and properties have been added to support new functionality. Some existing properties and enumeration values may have changed, but those changes should be easy to identify and diagnose when compiling your application.

adTempus API Reference version 3.0.0.0, revised 10/30/2008